#pragma once #include #include "jail_engine/utils.h" #include #include #ifndef STATS_H #define STATS_H using namespace std; class Stats { private: struct stats_t { 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 { string number; // Numero de la habitación string name; // Nombre de la habitación }; // Punteros y objetos options_t *options; // Variables vector dictionary; // Lista con la equivalencia nombre-numero de habitacion vector bufferList; // Lista con las estadisticas temporales por habitación vector list; // Lista con las estadisticas completas por habitación string bufferPath; // Fichero con las estadísticas temporales string filePath; // Fichero con las estadísticas completas // Busca una entrada en la lista por nombre int findByName(string name, vector &list); // Carga las estadisticas desde un fichero bool loadFromFile(string filePath, vector &list); // Carga las estadisticas desde un servidor void loadFromServer(); // Guarda las estadisticas en un fichero void saveToFile(string filePath, 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 string numberToName(string number); // Obtiene el número de una habitación a partir del nombre string nameToNumber(string name); // Vuelca los datos del buffer en la lista de estadisticas void updateListFromBuffer(); // Limpia los datos del servidor void eraseServerData(); public: // Constructor Stats(string file, 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(string name); // Añade una visita a las estadisticas void addVisit(string name); // Añade una entrada al diccionario void addDictionary(string number, string name); }; #endif