#pragma once #include // Para SDL_Point #include // Para string, basic_string #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(const std::string &name, const SDL_Point &position) : name(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 int findByName(const std::string &name); // Busca una entrada en la lista por posición int findByPos(int index, SDL_Point pos); // 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 ItemTracker *get(); // Comprueba si el objeto ya ha sido cogido bool hasBeenPicked(const std::string &name, SDL_Point pos); // Añade el objeto a la lista de objetos cogidos void addItem(const std::string &name, SDL_Point pos); };