forked from jaildesigner-jailgames/jaildoctors_dilemma
90 lines
2.7 KiB
C++
90 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL_render.h> // Para SDL_Renderer
|
|
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
|
#include <string> // Para basic_string, string
|
|
#include <vector> // Para vector
|
|
#include "utils.h" // Para color_t
|
|
#include <memory> // Para shared_ptr
|
|
class AnimatedSprite;
|
|
class Asset;
|
|
class Resource;
|
|
class Text;
|
|
class Texture;
|
|
|
|
struct ScoreboardData
|
|
{
|
|
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 color; // Color para escribir el texto del marcador
|
|
Uint32 ini_clock; // Tiempo inicial para calcular el tiempo transcurrido
|
|
bool jail_is_open; // Indica si se puede entrar a la Jail
|
|
};
|
|
|
|
class Scoreboard
|
|
{
|
|
private:
|
|
struct ClockData
|
|
{
|
|
int hours;
|
|
int minutes;
|
|
int seconds;
|
|
std::string separator;
|
|
};
|
|
|
|
// Objetos y punteros
|
|
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
|
|
std::shared_ptr<Text> text_; // Objeto para escribir texto
|
|
std::shared_ptr<AnimatedSprite> player_sprite_; // Sprite para mostrar las vidas en el marcador
|
|
std::shared_ptr<Texture> item_texture_; // Textura con los graficos para las vidas
|
|
std::shared_ptr<ScoreboardData> board_; // Contiene las variables a mostrar en el marcador
|
|
|
|
// Variables
|
|
std::vector<Color> color_; // Vector con los colores del objeto
|
|
int counter_; // Contador interno
|
|
int change_color_speed_; // Cuanto mas alto, mas tarda en cambiar de color
|
|
bool is_paused_; // Indica si el marcador esta en modo pausa
|
|
Uint32 paused_time_; // Milisegundos que ha estado el marcador en pausa
|
|
Uint32 paused_time_elapsed_; // Tiempo acumulado en pausa
|
|
ClockData clock_; // Contiene las horas, minutos y segundos transcurridos desde el inicio de la partida
|
|
Color items_color_; // Color de la cantidad de items recogidos
|
|
|
|
// Obtiene el tiempo transcurrido de partida
|
|
ClockData getTime();
|
|
|
|
// Actualiza el color de la cantidad de items recogidos
|
|
void updateItemsColor();
|
|
|
|
public:
|
|
// Constructor
|
|
Scoreboard(ScoreboardData *board);
|
|
|
|
// Destructor
|
|
~Scoreboard() = default;
|
|
|
|
// 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();
|
|
};
|