Files
volcano_2022/source/director.h

96 lines
2.3 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "common/asset.h"
#include "common/const.h"
#include "common/debug.h"
#include "common/input.h"
#include "common/jail_audio.h"
#include "common/screen.h"
#include "common/utils.h"
#include "game.h"
#include "intro.h"
#include "logo.h"
#include "title.h"
#include <string>
#ifndef PROG_H
#define PROG_H
// Textos
#define WINDOW_CAPTION "Volcano"
class Director
{
private:
// Objetos y punteros
Asset *asset; // Objeto encargado de gestionar los ficheros de recursos
Debug *debug; // Objeto para getsionar la información de debug
Game *game; // Objeto para la sección del juego
Input *input; // Objeto Input para gestionar las entradas
Intro *intro; // Objeto encargado de gestionar la intro del juego
Logo *logo; // Objeto encargado de gestionar el logo del juego
Screen *screen; // Objeto encargado de dibujar en pantalla
SDL_Renderer *renderer; // El renderizador de la ventana
SDL_Window *window; // La ventana donde dibujamos
struct options_t *options; // Contiene las opciones del programa
Title *title; // Objeto encargado de gestionar el titulo del juego, con el menu principal
// Variables
section_t section; // Sección y subsección actual del programa;
// Carga el fichero de configuración
bool loadConfig();
// Guarda el fichero de configuración
bool saveConfig();
// 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 juego donde se juega
void runGame();
public:
// Constructor
Director(std::string path);
// Destructor
~Director();
// Bucle principal
void run();
};
#endif