Files
jaildoctors_dilemma/source/item_tracker.h
2025-02-26 13:07:41 +01:00

56 lines
1.4 KiB
C++

#pragma once
#include <SDL2/SDL_rect.h> // Para SDL_Point
#include <string> // Para string, basic_string
#include <vector> // Para vector
struct ItemData
{
std::string name; // Nombre de la habitación donde se encuentra el objeto
std::vector<SDL_Point> pos; // Lista de objetos cogidos de la habitación
// Constructor
ItemData(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<ItemData> list; // Lista con todos los objetos recogidos
// Busca una entrada en la lista por nombre
int findByName(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);
};