singletons

This commit is contained in:
2026-04-17 21:27:30 +02:00
parent 5889df2a47
commit 513eacf356
27 changed files with 536 additions and 505 deletions

View File

@@ -6,9 +6,25 @@
#include "core/resources/asset.h" // for Asset
#include "core/resources/resource_helper.h"
// Instancia única
Lang *Lang::instance = nullptr;
// Singleton API
void Lang::init() {
Lang::instance = new Lang();
}
void Lang::destroy() {
delete Lang::instance;
Lang::instance = nullptr;
}
auto Lang::get() -> Lang * {
return Lang::instance;
}
// Constructor
Lang::Lang(Asset *mAsset) {
this->mAsset = mAsset;
Lang::Lang() {
}
// Destructor
@@ -21,19 +37,19 @@ bool Lang::setLang(Uint8 lang) {
switch (lang) {
case es_ES:
file = mAsset->get("es_ES.txt");
file = Asset::get()->get("es_ES.txt");
break;
case en_UK:
file = mAsset->get("en_UK.txt");
file = Asset::get()->get("en_UK.txt");
break;
case ba_BA:
file = mAsset->get("ba_BA.txt");
file = Asset::get()->get("ba_BA.txt");
break;
default:
file = mAsset->get("en_UK.txt");
file = Asset::get()->get("en_UK.txt");
break;
}

View File

@@ -3,7 +3,6 @@
#include <SDL3/SDL.h>
#include <string> // for string, basic_string
class Asset;
// Códigos de idioma
constexpr int es_ES = 0;
@@ -17,12 +16,19 @@ constexpr int MAX_TEXT_STRINGS = 100;
// Clase Lang
class Lang {
private:
Asset *mAsset; // Objeto que gestiona todos los ficheros de recursos
std::string mTextStrings[MAX_TEXT_STRINGS]; // Vector con los textos
// Constructor privado (usar Lang::init)
Lang();
// Instancia única
static Lang *instance;
public:
// Constructor
Lang(Asset *mAsset);
// Singleton API
static void init(); // Crea la instancia
static void destroy(); // Libera la instancia
static auto get() -> Lang *; // Obtiene el puntero a la instancia
// Destructor
~Lang();