#pragma once #include #include "utils.h" #include "asset.h" #include "screen.h" #include "input.h" #include "map.h" #include "player.h" #include "text.h" #ifndef GAME_H #define GAME_H class Game { private: SDL_Renderer *renderer; // El renderizador de la ventana Asset *asset; // Objeto encargado de gestionar los ficheros de recursos Screen *screen; // Objeto encargado de dibujar en pantalla Input *input; // Objeto Input para gestionar las entradas SDL_Event *eventHandler; // Manejador de eventos JA_Music music; // Contiene la musica que se reproduce durante el juego Text *debugText; // Objeto para escribir texto con información de debug Map *map; // Objeto encargado de gestionar el mapeado del juego Player *player; // Objeto para gestionar el jugador section_t section; // Seccion actual dentro del programa int ticks; // Contador de ticks para ajustar la velocidad del programa int ticksSpeed; // Velocidad a la que se repiten los bucles del programa bool debug; // Indica si esta activo el modo de depuración // Actualiza el juego, las variables, comprueba la entrada, etc. void update(); // Pinta los objetos en pantalla void render(); // Inicializa las variables necesarias para la sección 'Game' void init(); // Comprueba la entrada void checkInput(); // Muestra información de depuración void renderDebugInfo(); // Cambia el mapa bool changeMap(std::string file); // Comprueba si el jugador está en el borde y se ha de cambiar el mapa void checkScreenBorders(); public: // Constructor Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input); // Destructor ~Game(); // Bucle para el juego section_t run(); }; #endif