forked from jaildesigner-jailgames/jaildoctors_dilemma
138 lines
3.7 KiB
C++
138 lines
3.7 KiB
C++
#pragma once
|
|
#include <SDL2/SDL.h>
|
|
#include "common/asset.h"
|
|
#include "common/debug.h"
|
|
#include "common/input.h"
|
|
#include "common/jail_audio.h"
|
|
#include "common/movingsprite.h"
|
|
#include "common/resource.h"
|
|
#include "common/sprite.h"
|
|
#include "common/text.h"
|
|
#include "common/utils.h"
|
|
#include "const.h"
|
|
#include "credits.h"
|
|
#include "demo.h"
|
|
#include "game.h"
|
|
#include "intro.h"
|
|
#include "logo.h"
|
|
#include "title.h"
|
|
#include "game_over.h"
|
|
#include "ending.h"
|
|
#include "ending2.h"
|
|
|
|
#ifndef DIRECTOR_H
|
|
#define DIRECTOR_H
|
|
|
|
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
|
|
Game *game; // Objeto para gestionar la sección del juego
|
|
Logo *logo; // Objeto para gestionar la sección del logo del programa
|
|
Title *title; // Objeto para gestionar la pantalla de título
|
|
Intro *intro; // Objeto para gestionar la introducción del juego
|
|
Credits *credits; // Objeto para gestionar los creditos del juego
|
|
Demo *demo; // Objeto para gestionar el modo demo, en el que se ven pantallas del juego
|
|
Ending *ending; // Objeto para gestionar el final del juego
|
|
Ending2 *ending2; // Objeto para gestionar el final del juego
|
|
GameOver *gameOver; // Objeto para gestionar el final de la partida
|
|
Debug *debug; // Objeto para getsionar la información de debug
|
|
struct options_t *options; // Variable con todas las opciones del programa
|
|
|
|
// Variables
|
|
JA_Music music; // Musica del titulo
|
|
std::string executablePath; // Path del ejecutable
|
|
section_t section; // Sección y subsección actual del programa;
|
|
std::string systemFolder; // Carpeta del sistema donde guardar datos
|
|
|
|
// Crea e inicializa las opciones del programa
|
|
void initOptions();
|
|
|
|
// Inicializa los servicios online
|
|
void initOnline();
|
|
|
|
// Comprueba los parametros del programa
|
|
void checkProgramArguments(int argc, 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();
|
|
|
|
// 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();
|
|
|
|
// Obtiene el valor de la variable
|
|
Uint8 getSubsection();
|
|
|
|
// Obtiene el valor de la variable
|
|
Uint8 getSection();
|
|
|
|
// Establece el valor de la variable
|
|
void setSection(section_t section);
|
|
|
|
// Ejecuta la seccion de juego con el logo
|
|
void runLogo();
|
|
|
|
// Ejecuta la seccion de juego de la introducción
|
|
void runIntro();
|
|
|
|
// 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, char *argv[]);
|
|
|
|
// Destructor
|
|
~Director();
|
|
|
|
// Bucle principal
|
|
void run();
|
|
};
|
|
|
|
#endif
|