Máquina de estados de la batalla¶
Para las batallas, las cuales suceden en la escena res://assets/battle/battle.tscn, definimos los siguientes estados:
Start: para el inicio del juego y la configuraciónTurn: para jugar el turno del humanoLoop: para rotar los turnos entre los jugadores no humanosReferee: para decidir las partidas y preparar la siguiente rondaEnd: para calcular los ganadores y mostrarlos en pantalla
Cada estado tiene de nombre de clase Battle*, donde * es el nombre de arriba, La organización de los estados es el siguiente:
Paso a paso de cada estado¶
graph LR
S((Start)); L((Loop)); T((Turn)); R((Referee)); E((End));
S --> T & L
L <==> T
L ==> L
T & L <==> R
R --> E
Start¶
- Pone la música de batalla
- Crea el jugador humano
- Crea los jugadores bots
- Le pide al manager inicializar la interfaz y el mundo 3D
- Pasa el turno al bot o al humano segun quien empieza
Turn¶
- Le pide al manager que active el dado
- Espera a que el manager le diga que el dado fue lanzado por un humano
- Define las rocas disponibles para moverse y las resalta
- El manager se encarga de lo que pasa cuando se selecciona una roca y luego una carta aunque no deberia ser así, del todo
Loop¶
- Consigue al jugador con el turno actual
- Lanza el dado
- Elige al azar la roca que le toca y se mueve hacia ella
- Elige una carta al azar de las que se le permite o salta turno
- Actualiza la interfaz y pasa el turno, de forma recursiva si sigue un bot o a
Turnsi es para el humano
Referee¶
- Crea los enfrentamientos y los aplica
- Elimina a los jugadores que pierden
- Si queda un jugador o menos, pasa a fin de juego
- Actualiza la interfaz
- Le avisa al manager de que la ronda ya fue manejada
End¶
- Espera un rato y activa la interfaz de fin de juego