#pragma once #include // Para string #include // Para vector class Stats { private: struct StatsData { 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 StatsDictionary { std::string number; // Numero de la habitación std::string name; // Nombre de la habitación }; // 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(const std::string &name, const std::vector &list); // Carga las estadisticas desde un fichero bool loadFromFile(const std::string &filePath, std::vector &list); // Guarda las estadisticas en un fichero void saveToFile(const std::string &filePath, const std::vector &list); // Calcula cual es la habitación con más muertes void checkWorstNightmare(); // Vuelca los datos del buffer en la lista de estadisticas void updateListFromBuffer(); public: // Constructor Stats(const std::string &file, const std::string &buffer); // Destructor ~Stats(); // Inicializador // Se debe llamar a este procedimiento una vez se haya creado el diccionario numero-nombre void init(); // Añade una muerte a las estadisticas void addDeath(const std::string &name); // Añade una visita a las estadisticas void addVisit(const std::string &name); // Añade una entrada al diccionario void addDictionary(const std::string &number, const std::string &name); };