#pragma once

#include <SDL3/SDL.h>

#include <string>  // for string, basic_string

// Códigos de idioma
constexpr int es_ES = 0;
constexpr int ba_BA = 1;
constexpr int en_UK = 2;
constexpr int MAX_LANGUAGES = 3;

// Textos
constexpr int MAX_TEXT_STRINGS = 100;

// Clase Lang
class Lang {
   private:
    std::string mTextStrings[MAX_TEXT_STRINGS];  // Vector con los textos

    // Constructor privado (usar Lang::init)
    Lang();

    // Instancia única
    static Lang *instance;

   public:
    // 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();

    // Inicializa los textos del juego en el idioma seleccionado
    bool setLang(Uint8 lang);

    // Obtiene la cadena de texto del indice
    std::string getText(int index);
};