#pragma once #include // Para set #include // Para string /** * @brief Inventario global del jugador (singleton) * * Mantiene el conjunto de identificadores de llaves recogidas durante la partida. * Persiste entre habitaciones y entre muertes (igual que ItemTracker). */ class Inventory { public: // Gestión singleton static void init(); // Inicialización static void destroy(); // Destrucción static auto get() -> Inventory*; // Acceso al singleton // Gestión de llaves void addKey(const std::string& key_id); // Añade una llave al inventario [[nodiscard]] auto hasKey(const std::string& key_id) const -> bool; // Comprueba si tiene una llave void clear(); // Vacía el inventario (reset de partida) private: // Constantes singleton static Inventory* inventory; // [SINGLETON] Objeto privado // Constructor y destructor privados [SINGLETON] Inventory() = default; ~Inventory() = default; // Variables miembro std::set keys_; // Conjunto de identificadores de llaves recogidas };