#pragma once #include #include "common/utils.h" #include #include #ifndef STATS_H #define STATS_H class Stats { private: struct stats_t { std::string name; // Nombre de la habitación int visited; // Cuenta las veces que se ha visitado una habitación int died; // Cuenta las veces que se ha muerto en una habitación }; struct stats_dictionary_t { std::string number; // Numero de la habitación std::string name; // Nombre de la habitación }; // Punteros y objetos options_t *options; // Variables std::vector dictionary; // Lista con la equivalencia nombre-numero de habitacion std::vector bufferList; // Lista con las estadisticas temporales por habitación std::vector list; // Lista con las estadisticas completas por habitación std::string bufferPath; // Fichero con las estadísticas temporales std::string filePath; // Fichero con las estadísticas completas // Busca una entrada en la lista por nombre int findByName(std::string name, std::vector &list); // Carga las estadisticas desde un fichero bool loadFromFile(std::string filePath, std::vector &list); // Carga las estadisticas desde un servidor void loadFromServer(); // Guarda las estadisticas en un fichero void saveToFile(std::string filePath, std::vector &list); // Guarda las estadisticas en un servidor void saveToServer(); // Calcula cual es la habitación con más muertes void checkWorstNightmare(); // Obtiene el nombre de una habitación a partir del número std::string numberToName(std::string number); // Obtiene el número de una habitación a partir del nombre std::string nameToNumber(std::string name); // Vuelca los datos del buffer en la lista de estadisticas void updateListFromBuffer(); // Limpia los datos del servidor void eraseServerData(); public: // Constructor Stats(std::string file, std::string buffer, options_t *options); // Destructor ~Stats(); // Inicializador // Se debe llamar a este procediiento una vez se haya creado el diccionario numero-nombre void init(); // Añade una muerte a las estadisticas void addDeath(std::string name); // Añade una visita a las estadisticas void addVisit(std::string name); // Añade una entrada al diccionario void addDictionary(std::string number, std::string name); }; #endif