#pragma once #include #include // Para string, basic_string #include #include // Para vector struct ItemTrackerData { std::string name; // Nombre de la habitación donde se encuentra el objeto std::vector pos; // Lista de objetos cogidos de la habitación // Constructor ItemTrackerData(std::string name, const SDL_FPoint& position) : name(std::move(name)) { pos.push_back(position); } }; class ItemTracker { private: // [SINGLETON] Objeto privado static ItemTracker* item_tracker; // Variables std::vector item_list_; // Lista con todos los objetos recogidos // Busca una entrada en la lista por nombre auto findByName(const std::string& name) -> int; // Busca una entrada en la lista por posición auto findByPos(int index, SDL_FPoint pos) -> int; // Constructor ItemTracker() = default; // Destructor ~ItemTracker() = default; public: // [SINGLETON] Crearemos el objeto con esta función estática static void init(); // [SINGLETON] Destruiremos el objeto con esta función estática static void destroy(); // [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él static auto get() -> ItemTracker*; // Comprueba si el objeto ya ha sido cogido auto hasBeenPicked(const std::string& name, SDL_FPoint pos) -> bool; // Añade el objeto a la lista de objetos cogidos void addItem(const std::string& name, SDL_FPoint pos); };