Files
jaildoctors_dilemma/source/scoreboard.h

95 lines
2.6 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "jail_engine/animatedsprite.h"
#include "jail_engine/asset.h"
#include "jail_engine/resource.h"
#include "jail_engine/text.h"
#include "jail_engine/utils.h"
#include "const.h"
#include <string>
#ifndef SCOREBOARD_H
#define SCOREBOARD_H
using namespace std;
struct board_t
{
int items; // Lleva la cuenta de los objetos recogidos
int lives; // Lleva la cuenta de ls vidas restantes del jugador
int rooms; // Lleva la cuenta de las habitaciones visitadas
bool music; // Indica si ha de sonar la musica durante el juego
color_t color; // Color para escribir el texto del marcador
Uint32 iniClock; // Tiempo inicial para calcular el tiempo transcurrido
bool jailEnabled; // Indica si se puede entrar a la Jail
};
class ScoreBoard
{
private:
struct clock_t
{
int hours;
int minutes;
int seconds;
string separator;
};
// Objetos y punteros
AnimatedSprite *sprite; // Sprite para mostrar las vidas en el marcador
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Text *text; // Objeto para escribir texto
Texture *itemTexture; // Textura con los graficos para las vidas
board_t *board; // Contiene las variables a mostrar en el marcador
options_t *options; // Puntero a las opciones del juego
// Variables
vector<color_t> color; // Vector con los colores del objeto
int counter; // Contador interno
int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color
bool paused; // Indica si el marcador esta en modo pausa
Uint32 timePaused; // Milisegundos que ha estado el marcador en pausa
Uint32 totalTimePaused; // Tiempo acumulado en pausa
clock_t clock; // Contiene las horas, minutos y segundos transcurridos desde el inicio de la partida
color_t itemsColor; // Color de la cantidad de items recogidos
// Obtiene el tiempo transcurrido de partida
clock_t getTime();
// Actualiza el color de la cantidad de items recogidos
void updateItemsColor();
public:
// Constructor
ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, board_t *board);
// Destructor
~ScoreBoard();
// Pinta el objeto en pantalla
void render();
// Actualiza las variables del objeto
void update();
// Recarga la textura
void reLoadTexture();
// Recarga la paleta
void reLoadPalette();
// Pone el marcador en modo pausa
void pause();
// Quita el modo pausa del marcador
void resume();
// Devuelve la cantidad de minutos de juego transcurridos
int getMinutes();
};
#endif