#pragma once #include #include "asset.h" #include "input.h" #include "jail_audio.h" #include "screen.h" #include "text.h" #include "utils.h" #include "const.h" #include "fade.h" #include "game.h" #include "intro.h" #include "item.h" #include "lang.h" #include "logo.h" #include "player.h" #include "title.h" #include "param.h" #include "manage_hiscore_table.h" // Textos #define WINDOW_CAPTION "Coffee Crisis Arcade Edition" class Director { private: // Objetos y punteros SDL_Window *window; // La ventana donde dibujamos SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla Logo *logo; // Objeto para la sección del logo Intro *intro; // Objeto para la sección de la intro Title *title; // Objeto para la sección del titulo y el menu de opciones Game *game; // Objeto para la sección del juego Instructions *instructions; // Objeto para la sección de las instrucciones HiScoreTable *hiScoreTable; // Objeto para mostrar las mejores puntuaciones online Game *demoGame; // Objeto para lanzar la demo del juego Input *input; // Objeto Input para gestionar las entradas Asset *asset; // Objeto que gestiona todos los ficheros de recursos section_t *section; // Sección y subsección actual del programa; // Variables std::string executablePath; // Path del ejecutable std::string systemFolder; // Carpeta del sistema donde guardar datos std::string paramFileArgument; // Argumento para gestionar el fichero con los parametros del programa std::vector sounds; // Vector con los sonidos std::vector musics; // Vector con las musicas // Inicializa jail_audio void initJailAudio(); // Arranca SDL y crea la ventana bool initSDL(); // Inicializa el objeto input void initInput(); // Carga los parametros para configurar el juego void loadParams(std::string filepath); // Crea el indice de ficheros bool setFileList(); // Carga los sonidos del juego void loadSounds(); // Carga las musicas del juego void loadMusics(); // Libera la memoria usada por los sonidos del juego void deleteSounds(); // Libera la memoria usada por las músicas del juego void deleteMusics(); // Comprueba los parametros del programa void checkProgramArguments(int argc, char *argv[]); // Crea la carpeta del sistema donde guardar datos void createSystemFolder(std::string folder); // Ejecuta la sección con el logo void runLogo(); // Ejecuta la sección con la secuencia de introducción void runIntro(); // Ejecuta la sección con el titulo del juego void runTitle(); // Ejecuta la sección donde se juega al juego void runGame(); // Ejecuta la sección donde se muestran las instrucciones void runInstructions(); // Ejecuta la sección donde se muestra la tabla de puntuaciones void runHiScoreTable(); // Ejecuta el juego en modo demo void runDemoGame(); // Obtiene una fichero a partir de un lang_e std::string getLangFile(lang::lang_e lang); public: // Constructor Director(int argc, char *argv[]); // Destructor ~Director(); // Bucle principal int run(); };