Files
coffee_crisis_arcade_edition/source/director.h
Sergio Valor a4b4e188cd Precàrrega de tots els recursos al inici del joc
8.000.000 de cherrypickings que he anat fent pel codi
2024-10-20 11:06:10 +02:00

87 lines
2.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
#include <vector> // for vector
namespace lang
{
enum class Code : int;
}
struct ResourceMusic;
struct ResourceSound;
// Textos
constexpr char 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
std::streambuf *orig_buf; // Puntero al buffer de flujo original para restaurar std::cout
// Variables
std::string executable_path_; // Path del ejecutable
std::string system_folder_; // Carpeta del sistema donde guardar datos
std::string param_file_argument_; // Argumento para gestionar el fichero con los parametros del programa
// Inicializa jail_audio
void initJailAudio();
// Arranca SDL y crea la ventana
bool initSDL();
// Asigna los botones y teclas al objeto Input
void bindInputs();
// Carga los parametros para configurar el juego
void loadParams(const std::string &file_path);
// Crea el indice de ficheros
void setFileList();
// Comprueba los parametros del programa
void checkProgramArguments(int argc, const char *argv[]);
// Crea la carpeta del sistema donde guardar datos
void createSystemFolder(const 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::Code
std::string getLangFile(lang::Code code);
// Apaga el sistema
void shutdownSystem();
public:
// Constructor
Director(int argc, const char *argv[]);
// Destructor
~Director();
// Bucle principal
int run();
};