Files
coffee_crisis_arcade_edition/source/director.h
Sergio 28df97ea94 Pasaeta de "include-what-you-use" per arreglar els includes
Renombrats alguns fitxers per consistencia
2024-09-29 06:24:11 +02:00

112 lines
3.1 KiB
C++

#pragma once
#include <SDL2/SDL_render.h> // for SDL_Renderer
#include <SDL2/SDL_video.h> // for SDL_Window
#include <string> // for string, basic_string
#include <vector> // for vector
#include "lang.h" // for lang_e
#include "utils.h" // for music_file_t, sound_file_t
class Asset;
class Game;
class HiScoreTable;
class Input;
class Instructions;
class Intro;
class Logo;
class Screen;
class Title;
// 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
// 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<sound_file_t> sounds; // Vector con los sonidos
std::vector<music_file_t> 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();
};