@@ -69,9 +69,6 @@ Cada objeto cuenta con su propia función que se ejecuta una vez se interactúa
la historia. Esta función se le pasa al objeto como un lambda. EL objeto tiene su propia llamada a renderizarse y para
comprobar sus colisiones.
### ObjetoCombinable
Hijo de objeto, que comprueba si se han pulsado los elementos para realizar una acción.
### PantallaCama
Pantalla que se ocupa del puzle de recuperar la cartera. Cuenta con una serie de obstáculos, la mano, la cartera
y hitboxes para no salirse de los límites de las casillas marcadas en esta.
...
...
@@ -87,3 +84,72 @@ Las pasivas comprueban si el jugador está dentro, y de estarlo, hacen una acciÃ
A cada momento (y en este orden), renderiza los el fondo, la cartera, obstáculos, la cola de la mano,
la mano y los botones.
### PantallaFecha
Pantalla del puzle de la pantalla. Hay cuatro números que se pueden ajustar con unas flechas. EL minijuego persiste hasta adivinar
el número o salirse de él. En caso de que Agapito tenga el carné con la fecha de su cumpleaños, este aparecerá también para dar
una pista o no.
A nivel funcional, cada vez que se presiona una tecla se comprueba si se ha acertado o no con la combinación. Si los cuatro números son correctos,
sale de la pantalla y salta una de dos cinemáticas, en función de si Agapito había sacado el carné de la cartera o no.
Renderiza el fondo, los botones, el fondo de los números y luego estos, usando la clase del texto que se explicará a posteriori.
### PantallaGracias
Pantalla simple que únicamente muestra una imagen final en pantalla y comprueba si el usuario se ha salido o no. Es necesario hacerlo,
porque si no por la naturaleza de SDL, el juego crashea.
### PantallaInicio
Similar al anterior, pero este cuenta con un botón para iniciar la partida, que avanza a la pantalla del tutorial. Inicia con el audio de Agapito anunciando el nombre, y, al
comprobar que acaba, cede el paso a la música de inicio. Toda la música usada en este juego es de uso libre. Se puede iniciar la partida o bien clicando el botón
de inicio o pulsando la tecla enter.
### PantallaMundo
Clase usada para englobar las pantallas por las que se puede mover libremente el personaje. Es la que controla la interfaz, tanto el ojo para interactuar como los objetos.
En caso de que Agapito se acerque al final de la pantalla, se mueve a la otra. También se ocupa de gestionar el movimiento de Agapito, y sus colisiones para evitar que se
vaya de la pantalla, y que pueda interactuar con las hitboxes pasivas para hacer acciones ocn los objetos.
El funcionamiento del ojo de la interfaz es el siguiente: cuando el personaje no está colisionando con hitboxes pasivas, está cerrado e interactuar no hace nada.
En el momento en el que sí esté colisionando, se abre y al clicarlo se llevan a cabo las acciones asociadas al objeto.
En este orden, renderiza: el fondo, los objetos, el personaje, la interfaz, el ojo y el inventario.
### Pantalla principal
Una de las dos que heredan de la pantalla mundo. Esta corresponde a la pantalla donde el jugador pasará más tiempo, la propia habitación. Contiene solo las
hitboxes de la habitación y su fondo correspondiente.
### PantallaPrincipal2
La segunda que hereda del mundo. Esta corresponde a la puerta. Durante todo el juego, la única interacción posible aquí es con la puerta,
que estará cerrada hasta que Agapito resuelva el puzle final.
### PantallaTutorial
Muy similar a la pantalla inicio. Esta muestra los controles principales del juego (movimiento, interacción e inventario). Al clicar en continuar,
se inicia el juego de verdad.
### Personaje
Clase que encapsula los comportamientos dle personaje jugable. Al moverse, cosa que le indoca la pantalla mundo, determina si ha pasado el suficiente tiempo
desde su último cambio de sprite. De ser así, cicla a su siguiente sprite d emovimiento. Esto se hace para evitar que esté constantemente cambiando entre ellos. Al
no moverse, vuelve al sprite quieto en la dirección que se le haya asignado mirar. EL mismo mecanismo del cambio de sprites se usa para añternar el sonido de los pasos.
El propio personaje es el responsable de renderizar el inventario. Los objetos se ponen en posiciones fijas, no dependiendo de la cantidad de estos.
Comrpueba si choca con objetos o hitboxes pasivas. En el primer caso, retrocede lo que haya avanzado. En el segundo, se lo indica a la pantalla mundo.
### Sonido
Clase que usa la clase Mix_Music de SDL. Carga las canciones y los sonidos, los toca, los detiene y comprueba cuándo se acaban.
### Sprite
Hace uso de la clase SDL_Texture. Es la que verdaderamente renderiza los elementos en pantalla. Toma en consideración las dimensiones de esta
para redimensionar su elementos con los atributos tamx y tamy, correspondientes a la ventana. Una función que añadimos es que
para que el personaje interactuase bien con el mundo, su sprite estuviese centrado.
### Texto
Clase que hace uso de Fuente para mostrar el texto por pantalla. Usa la clase SDL_Surface. Se le pasa la fuente y el texto para que lo renderice, similar a los sprites.
La función que usa SDL para mostrar por pantalla, que usa tanto esta clase como la anterior, es SDL_RenderCopy, que usa un objeto d ela clase
renderer, la propia textura y el lugar donde se va a renderizar (la ventana).
### Video
Clase que se ocupa de mostrar los vídeos en pantalla. Se beneficia de usar ffmpeg. Se le pasan este y los subtítulos, y lo
ejecuta con un comando que se le pasa al sistema para que al acabar se cierre.