#pragma once #include #include // for uint8_t #include // 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) };