forked from jaildesigner-jailgames/jaildoctors_dilemma
Singleton de ItemTracker
Arreglos menors
This commit is contained in:
@@ -4,17 +4,27 @@
|
||||
#include <string> // Para string, basic_string
|
||||
#include <vector> // Para vector
|
||||
|
||||
struct item_tracker_t
|
||||
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<item_tracker_t> list; // Lista con todos los objetos recogidos
|
||||
std::vector<ItemData> list; // Lista con todos los objetos recogidos
|
||||
|
||||
// Busca una entrada en la lista por nombre
|
||||
int findByName(std::string name);
|
||||
@@ -22,13 +32,25 @@ private:
|
||||
// Busca una entrada en la lista por posición
|
||||
int findByPos(int index, SDL_Point pos);
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
ItemTracker() = default;
|
||||
|
||||
// Destructor
|
||||
~ItemTracker();
|
||||
~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(std::string name, SDL_Point pos);
|
||||
bool hasBeenPicked(const std::string &name, SDL_Point pos);
|
||||
|
||||
// Añade el objeto a la lista de objetos cogidos
|
||||
void addItem(std::string name, SDL_Point pos);
|
||||
void addItem(const std::string &name, SDL_Point pos);
|
||||
};
|
||||
Reference in New Issue
Block a user