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

@@ -9,13 +9,30 @@
#include "text.h" // for Text
#include "texture.h" // for Texture
// Constructor
Scoreboard::Scoreboard(SDL_Renderer *renderer)
{
// Copia los punteros
this->renderer = renderer;
asset = Asset::get();
// [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado
Scoreboard *Scoreboard::scoreboard = nullptr;
// [SINGLETON] Crearemos el objeto scoreboard con esta función estática
void Scoreboard::init(SDL_Renderer *renderer)
{
Scoreboard::scoreboard = new Scoreboard(renderer);
}
// [SINGLETON] Destruiremos el objeto scoreboard con esta función estática
void Scoreboard::destroy()
{
delete Scoreboard::scoreboard;
}
// [SINGLETON] Con este método obtenemos el objeto scoreboard y podemos trabajar con él
Scoreboard *Scoreboard::get()
{
return Scoreboard::scoreboard;
}
// Constructor
Scoreboard::Scoreboard(SDL_Renderer *renderer) : renderer(renderer)
{
// Inicializa punteros
gamePowerMeterTexture = nullptr;
powerMeterSprite = nullptr;
@@ -47,9 +64,9 @@ Scoreboard::Scoreboard(SDL_Renderer *renderer)
recalculateAnchors();
// Crea objetos
gamePowerMeterTexture = new Texture(renderer, asset->get("game_power_meter.png"));
powerMeterSprite = new Sprite(slot4_2.x - 20, slot4_2.y, 40, 7, gamePowerMeterTexture);
textScoreBoard = new Text(asset->get("8bithud.png"), asset->get("8bithud.txt"), renderer);
gamePowerMeterTexture = std::unique_ptr<Texture>(new Texture(renderer, Asset::get()->get("game_power_meter.png")));
powerMeterSprite = std::unique_ptr<Sprite>(new Sprite(slot4_2.x - 20, slot4_2.y, 40, 7, gamePowerMeterTexture.get()));
textScoreBoard = std::unique_ptr<Text>(new Text(Asset::get()->get("8bithud.png"), Asset::get()->get("8bithud.txt"), renderer));
// Crea la textura de fondo
background = nullptr;
@@ -64,14 +81,11 @@ Scoreboard::Scoreboard(SDL_Renderer *renderer)
Scoreboard::~Scoreboard()
{
gamePowerMeterTexture->unload();
delete gamePowerMeterTexture;
delete powerMeterSprite;
delete textScoreBoard;
if (background)
{
SDL_DestroyTexture(background);
}
for (auto texture : panelTexture)
{
if (texture)