Skip to content

Arquitectura

Adrián Borja Pimentel edited this page Apr 15, 2021 · 3 revisions

Vista general

Manejadores y flujo de escenas

Actualmente hay en funcionamiento 4 manejadores:

  • GameSaver. Responsable del guardado y cargado de partidas y, por tanto, la carga de escenas con datos distintos a los iniciales.
  • SceneManager. Se encarga de liberar y cargar las escenas para los cambios de pantalla. Se comunica con GameSaver para actualizar los datos iniciales a los almacenados en disco.
  • player_manager. Controla los datos del jugador (vida, inventario, deck...) a nivel global.
  • DuelManager. Se encarga de cargar todos los datos para la pantalla de duelo, es decir, instanciar al jugador y los enemigos con sus correspondientes características.

¿Cómo funciona GameSaver?

Este Singleton se asegura de que existe un directorio para guardar los archivos de datos y cuenta con las funciones de save y load. GameSaver es llamado al cambiar de escena y su labor consiste en coger los nodos incluidos en el grupo Sensitive de las escena que se descarga para guardar sus datos; y de la escena que se carga para cargar sus datos con los guardados en disco si los hubiera.

Las clases que vayan a estar incluidas en este grupo deberían tener implementadas funciones save y loadpara que las pueda llamar GameSaver, aunque actualmente sólo las tiene player_manager ya que el mapa sólo guarda la posición de los nodos y eso no requiere de una función específica. Queda pendiente revisar este componente y los objetos que tengan guardado de datos cuando esto crezca.

¿Cómo funciona SceneManager?

Este Singleton se limita a gestionar el cambio de escena liberando los nodos de la anterior e instanciando los de la nueva. El mayor interés que tiene es su comunicación con GameSaver para que esos cambios no se limiten a empezar desde el principio.

Tiene además una llamada a una función llamada update_data que actualmente es el apaño que nos permite que se trasmitan datos entre escenas, como es el caso de la información de los enemigos cuando se colisiona con ellos la explotación y se cambia a la pantalla de duelo.

¿Cómo funciona player_manager?

Este Singleton se limita a actualizar y mantener accesibles las variables del jugador. También se encarga de su propio cargado y guardado, por ahora.

DuelManager

El duelo se gestiona mediante este manejador que controla las actualizaciones al comenzar un turno, carga los datos de salud, deck y demás variables del jugador y los enemigos y también "solicita" a los enemigos que realicen sus jugadas.

Componentes del duelo

Card

La carta es el componente básico de los duelos. Al comenzar un duelo, el mazo diseñado por el jugador se carga al comenzar y este mazo está compuesto por las cartas.

Las cartas miden 80x120px y poseen:

  • Coste. La cantidad de maná que consume poder activar una carta.
  • Nombre. El nombre de la carta, el cual es el único en la collección.
  • Nivel de destreza. Puntuación de destreza (atributo del jugador) mínima para poder activar una carta.
  • Ilustración. Textura cuyo único fin es estético.
  • Marco. Textura que permite identificar visualmente el tipo de la carta.
  • Descripción. Texto explicativo de los efectos de la carta.

El nombre, coste, nivel de destreza, ilustración, marco y descripción son atributos del "objeto" y todas las cartas serán variaciones de la carta básica. Además, los valores de los atributos y los nombres de los recursos visuales de las cartas se encuentran referenciados en un fichero CardDatabase.gd, por lo que cada carta se contruye visualmente cargando estos datos.

Atributos

  • Coste
  • Nombre
  • Nivel de destreza
  • Tipo

Funciones

Cada carta tiene llamadas a las funciones generales de efectos configuradas para cada caso.

Por ejemplo, las cartas "Espadazo" y "Mega-Espadazo" tienen configurado su efecto con la función "inflingir daño" llamándola la primera con un valor parámetro fijado a 3 y la segunda con uno fijado a 7.

Deck

El deck es el conjunto de cartas que utiliza el jugador (y los enemigos) durante el duelo. Se trata como una pila en la que las cartas ordenadas se van recuperando durante el transcurso del duelo.

El deck existe fuera de la pantalla de duelo y trata un aspecto más dedicado a la gestión, pero al comenzar el duelo, el deck es cargado con la configuración presente y pasa a ser un elemento más parecido a una estructura de datos que se encarga de permitir el robo de cartas.

Hand

La mano es el conjunto de cartas que el jugador (y los enemigos) puede jugar durante el duelo. Suelen añadirse al retirarse del deck, pero pueden llegar a la mano desde otras estructuras. En la mano, el jugador puede visualizar fácilmente las cartas que tiene y obtener información sobre su funcionamiento.

Graveyard

El cementerio es la estructura donde se almacenan las cartas usadas durante el duelo. HAY QUE MATIZAR SI EL CEMENTERIO ES IRRECUPERABLE, YA QUE HAY JUEGOS QUE AL ACABARSE LAS CARTAS PARA ROBAR PIERDES, Y JUEGOS EN LOS QUE AL ACABAR EL DECK, SE BARAJEA EL CEMANTERIO Y SE RELLENA EL DECK.

Exile

Es un cementerio más estricto del que recuperar las cartas es más complicado.