Files
volcano_2022/source/game.h

166 lines
3.6 KiB
C++

#pragma once
#include "ifdefs.h"
#include "sprite.h"
#include "movingsprite.h"
#include "smartsprite.h"
#include "player.h"
#include "text.h"
#include "text2.h"
#include "menu.h"
#include "const.h"
#include "jail_audio.h"
#include "utils.h"
#include <math.h>
#ifndef GAME_H
#define GAME_H
// GameDirector
class Game
{
public:
// Constructor
Game();
// Destructor
~Game();
// Iniciador
void init();
// Arranca SDL y crea la ventana
bool initSDL();
// Crea el indice de ficheros
void setFileList();
// Comprueba que todos los ficheros existen
bool checkFileList();
// Carga un archivo de imagen en una textura
bool loadTextureFromFile(LTexture *texture, std::string path, SDL_Renderer *renderer);
// Carga los recursos necesarios
bool loadMedia(Uint8 section);
// Descrga los recursos necesarios
bool unLoadMedia(Uint8 section);
// Establece el valor de la variable
void setPath(std::string path);
// Obtiene el valor de la variable
Uint8 getGameSection();
// Establece el valor de la variable
void setGameSection(Uint8 section);
// Cambia el valor de la variable de modo de pantalla completa
void changeFullScreenMode();
// Bucle para el logo del juego
void runLogo();
// Bucle para la intro del juego
void runIntro();
// Bucle para el titulo del juego
void runTitle();
// Bucle para el juego
void runGame();
private:
SDL_Window *mWindow; // La ventana de la aplicación
SDL_Renderer *mRenderer; // El renderizador donde se dibuja todo
SDL_Event *mEventHandler; // Manejador de eventos
SDL_Texture *mBackbuffer; // Texturas
SDL_Joystick *mGameController; // Manejador para el mando 1
bool mGameControllerFound; // Indica si se ha encontrado algun mando conectado
SDL_Haptic *mControllerHaptic; // Manejador para la vibración del mando
Uint32 mScoreData[TOTAL_SCORE_DATA]; // Datos del fichero de puntuación
Player *mPlayer; // El jugador
double mSen[360]; // Vector con los valores del seno para 360 grados
struct _text // Objetos de texto
{
Text *white;
};
_text mText; // Variable con los objetos texto
struct _menu // Objetos menu
{
Menu *title; // Menu de la pantalla de título
};
_menu mMenu; // Variable con los objetos menu
struct _options // Variables relacionadas con las opciones del juego
{
Uint32 fullScreenMode; // Guarda el valor elegido para el modo de pantalla completa
Uint32 fullScreenModePrevious; // Guarda el valor previo del modo de pantalla completa
Uint8 windowSize; // Guarda el valor elegido para el tamaño de la ventana
Uint8 windowSizePrevious; // Guarda el valor previo del tamaño de la ventana
};
struct _game // Variables para el control del juego
{
Uint32 score; // Puntuación actual
Uint8 section; // Indicador para el bucle principal
bool paused; // Idica si el juego está en pausa
Uint32 ticks; // Contador de ticks para ajustar la velocidad del juego
Uint8 ticksSpeed; // Velocidad a la que se repite el bucle de juego
Uint32 counter; // Contador para el juego
_options options; // Contiene todas las opciones del juego
std::string path; // Path donde está el ejecutable del juego
};
_game mGame;
// Recursos
struct _resourceFile
{
std::string file;
bool loaded;
};
struct _resourceSound
{
std::string file;
bool loaded;
JA_Sound sound;
};
struct _resourceMusic
{
std::string file;
bool loaded;
JA_Music music;
};
struct _resourceTexture
{
std::string file;
bool loaded;
LTexture *texture;
};
struct _resource
{
_resourceFile file[TOTAL_FILE];
_resourceSound sound[TOTAL_SOUND];
_resourceMusic music[TOTAL_MUSIC];
_resourceTexture texture[TOTAL_TEXTURE];
};
_resource mResource;
};
#endif