#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 buffer_list_; // Lista con las estadisticas temporales por habitación std::vector list_; // Lista con las estadisticas completas por habitación std::string buffer_path_; // Fichero con las estadísticas temporales std::string file_path_; // Fichero con las estadísticas completas // Busca una entrada en la lista por nombre static auto findByName(const std::string& name, const std::vector& list) -> int; // Carga las estadisticas desde un fichero static auto loadFromFile(const std::string& file_path, std::vector& list) -> bool; // Guarda las estadisticas en un fichero static void saveToFile(const std::string& file_path, 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: // Constructostd::string nst stdstd::string nst std::string& buffer); Stats(std::string file, 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); };