126 lines
3.4 KiB
C++
126 lines
3.4 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "common/asset.h"
|
|
#include "common/input.h"
|
|
#include "common/jail_audio.h"
|
|
#include "common/screen.h"
|
|
#include "common/text.h"
|
|
#include "common/utils.h"
|
|
#include "const.h"
|
|
#include "fade.h"
|
|
#include "game.h"
|
|
#include "intro.h"
|
|
#include "item.h"
|
|
#include "logo.h"
|
|
#include "player.h"
|
|
#include "title.h"
|
|
#include "load_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
|
|
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
|
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
|
|
section_t *section; // Sección y subsección actual del programa;
|
|
|
|
// Variables
|
|
options_t *options; // Variable con todas las opciones del programa
|
|
param_t *param; // Variable con todos los parametros del programa
|
|
std::string executablePath; // Path del ejecutable
|
|
std::string systemFolder; // Carpeta del sistema donde guardar datos
|
|
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();
|
|
|
|
// Inicializa las opciones del programa
|
|
void initOptions();
|
|
|
|
// Asigna variables a partir de dos cadenas
|
|
bool setOptions(options_t *options, std::string var, std::string value);
|
|
|
|
// Crea el indice de ficheros
|
|
bool setFileList();
|
|
|
|
// Carga el fichero de configuración
|
|
bool loadConfigFile();
|
|
|
|
// Guarda el fichero de configuración
|
|
bool saveConfigFile();
|
|
|
|
// 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();
|
|
|
|
public:
|
|
// Constructor
|
|
Director(int argc, char *argv[]);
|
|
|
|
// Destructor
|
|
~Director();
|
|
|
|
// Bucle principal
|
|
void run();
|
|
}; |