Muntat a c++14 per a make_unique

Mes autos, const i constexpr perl codi
Ara la classe Screen es un poc pitjor
This commit is contained in:
2024-10-06 14:58:00 +02:00
parent 25a2753b13
commit afe092c742
16 changed files with 290 additions and 381 deletions

View File

@@ -6,6 +6,7 @@
#include <string> // for string, basic_string
#include <vector> // for vector
#include "utils.h" // for color_t
#include <memory>
class Asset;
class Sprite;
class Text;
@@ -35,19 +36,23 @@ enum class scoreboardMode
struct panel_t
{
scoreboardMode mode; // Modo en el que se encuentra el panel
SDL_Rect pos; // Posición donde dibujar el panel dentro del marcador
SDL_Rect pos; // Posición donde dibujar el panel dentro del marcador
};
// Clase Scoreboard
class Scoreboard
{
private:
// [SINGLETON] Objeto scoreboard privado para Don Melitón
static Scoreboard *scoreboard;
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
Texture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase
Text *textScoreBoard; // Fuente para el marcador del juego
SDL_Renderer *renderer; // El renderizador de la ventana
std::unique_ptr<Texture> gamePowerMeterTexture; // Textura con el marcador de poder de la fase
std::unique_ptr<Sprite> powerMeterSprite; // Sprite para el medidor de poder de la fase
std::unique_ptr<Text> textScoreBoard; // Fuente para el marcador del juego
SDL_Texture *background; // Textura para dibujar el marcador
std::vector<SDL_Texture *> panelTexture; // Texturas para dibujar cada panel;
@@ -96,13 +101,24 @@ private:
// Dibuja la linea que separa la zona de juego del marcador
void renderSeparator();
public:
// [SINGLETON] Ahora el constructor y el destructor son privados
// Constructor
Scoreboard(SDL_Renderer *renderer);
// Destructor
~Scoreboard();
public:
// [SINGLETON] Crearemos el objeto scoreboard con esta función estática
static void init(SDL_Renderer *renderer);
// [SINGLETON] Destruiremos el objeto scoreboard con esta función estática
static void destroy();
// [SINGLETON] Con este método obtenemos el objeto scoreboard y podemos trabajar con él
static Scoreboard *get();
// Actualiza la lógica del marcador
void update();