Files
jaildoctors_dilemma/source/director.h
2025-02-21 15:55:44 +01:00

103 lines
2.7 KiB
C++

#pragma once
#include <SDL2/SDL_render.h> // for SDL_Renderer
#include <SDL2/SDL_video.h> // for SDL_Window
#include <string> // for string
class Asset; // lines 6-6
class Debug; // lines 8-8
class Input; // lines 14-14
class Resource; // lines 17-17
class Screen; // lines 18-18
struct JA_Music_t; // lines 20-20
struct options_t; // lines 21-21
struct section_t; // lines 22-22
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
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
Input *input; // Objeto Input para gestionar las entradas
Debug *debug; // Objeto para getsionar la información de debug
struct options_t *options; // Variable con todas las opciones del programa
section_t *section; // Sección y subsección actual del programa;
// Variables
JA_Music_t *music; // Musica del titulo
std::string executablePath; // Path del ejecutable
std::string systemFolder; // Carpeta del sistema donde guardar datos
// Crea e inicializa las opciones del programa
void initOptions();
// Comprueba los parametros del programa
void checkProgramArguments(int argc, const char *argv[]);
// Carga el fichero de configuración
bool loadConfig();
// Guarda el fichero de configuración
bool saveConfig();
// Crea la carpeta del sistema donde guardar datos
void createSystemFolder(const std::string &folder);
// Carga los recursos
void loadResources(section_t *section);
// Asigna variables a partir de dos cadenas
bool setOptions(options_t *options, std::string var, std::string value);
// Inicializa jail_audio
void initJailAudio();
// Arranca SDL y crea la ventana
bool initSDL();
// Inicializa el objeto Input
void initInput();
// Crea el indice de ficheros
bool setFileList();
// Ejecuta la seccion de juego con el logo
void runLogo();
// Ejecuta la seccion de juego de la pantalla de carga
void runLoadingScreen();
// Ejecuta la seccion de juego con el titulo y los menus
void runTitle();
// Ejecuta la seccion de los creditos del juego
void runCredits();
// Ejecuta la seccion de la demo, donde se ven pantallas del juego
void runDemo();
// Ejecuta la seccion del final del juego
void runEnding();
// Ejecuta la seccion del final del juego
void runEnding2();
// Ejecuta la seccion del final de la partida
void runGameOver();
// Ejecuta la seccion de juego donde se juega
void runGame();
public:
// Constructor
Director(int argc, const char *argv[]);
// Destructor
~Director();
// Bucle principal
int run();
};