101 lines
2.2 KiB
C++
101 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL_render.h> // Para SDL_Renderer
|
|
#include <SDL2/SDL_video.h> // Para SDL_Window
|
|
#include <string> // Para string
|
|
namespace lang
|
|
{
|
|
enum class Code : int;
|
|
} // lines 9-9
|
|
|
|
// 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
|
|
#ifndef VERBOSE
|
|
std::streambuf *orig_buf; // Puntero al buffer de flujo original para restaurar std::cout
|
|
#endif
|
|
|
|
// Variables
|
|
std::string executable_path_; // Path del ejecutable
|
|
std::string system_folder_; // Carpeta del sistema donde guardar datos
|
|
|
|
// Inicializa jail_audio
|
|
void initJailAudio();
|
|
|
|
// Arranca SDL y crea la ventana
|
|
bool initSDL();
|
|
|
|
// Asigna los botones y teclas al objeto Input
|
|
void bindInputs();
|
|
|
|
// 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 muestran los creditos del programa
|
|
void runCredits();
|
|
|
|
// Ejecuta la sección donde se muestra la tabla de puntuaciones
|
|
void runHiScoreTable();
|
|
|
|
// Ejecuta el juego en modo demo
|
|
void runDemoGame();
|
|
|
|
// Ejecuta la sección init
|
|
void runInit();
|
|
|
|
// Obtiene una fichero a partir de un lang::Code
|
|
std::string getLangFile(lang::Code code);
|
|
#ifdef ARCADE
|
|
// Apaga el sistema
|
|
void shutdownSystem();
|
|
#endif
|
|
|
|
// Inicializa todo
|
|
void init();
|
|
|
|
// Cierra todo
|
|
void close();
|
|
|
|
// Carga los parametros
|
|
void loadParams();
|
|
|
|
// Carga el fichero de puntuaciones
|
|
void loadScoreFile();
|
|
|
|
public:
|
|
// Constructor
|
|
Director(int argc, const char *argv[]);
|
|
|
|
// Destructor
|
|
~Director();
|
|
|
|
// Bucle principal
|
|
int run();
|
|
}; |