Files
coffee-crisis/source/core/locale/lang.h
T

41 lines
1.2 KiB
C++

#pragma once
#include <SDL3/SDL.h>
#include <cstdint> // for uint8_t
#include <string> // for string, basic_string
// Clase Lang
class Lang {
public:
// Códigos de idioma (basados en la convención IETF de los ficheros de locale)
enum class Code : std::uint8_t {
ES_ES = 0,
BA_BA = 1,
EN_UK = 2,
};
static constexpr int MAX_LANGUAGES = 3; // Número total de idiomas disponibles
// Singleton API
static void init(); // Crea la instancia
static void destroy(); // Libera la instancia
static auto get() -> Lang *; // Obtiene el puntero a la instancia
~Lang(); // Destructor
auto setLang(Code lang) -> bool; // Inicializa los textos del juego en el idioma seleccionado
auto getText(int index) -> std::string; // Obtiene la cadena de texto del indice
static auto nextLanguage(Code c) -> Code; // Devuelve el siguiente idioma del ciclo
private:
static constexpr int MAX_TEXT_STRINGS = 110;
std::string text_strings_[MAX_TEXT_STRINGS]; // Vector con los textos
static Lang *instance; // Instancia única
Lang(); // Constructor privado (usar Lang::init)
};