canviat Options de struct a namespace

This commit is contained in:
2025-10-26 14:01:08 +01:00
parent 8f49e442de
commit df4965a84b
59 changed files with 1470 additions and 1533 deletions

View File

@@ -1,16 +1,17 @@
#include "game/gameplay/stats.hpp"
#include <fstream> // Para basic_ostream, basic_ifstream, basic_istream
#include <sstream> // Para basic_stringstream
#include "game/gameplay/options.hpp" // Para Options, OptionsStats, options
#include <fstream> // Para basic_ostream, basic_ifstream, basic_istream
#include <sstream> // Para basic_stringstream
#include "game/gameplay/options.hpp" // Para Options, OptionsStats, options
// Constructor
Stats::Stats(const std::string &file, const std::string &buffer)
Stats::Stats(const std::string& file, const std::string& buffer)
: bufferPath(buffer),
filePath(file) {}
// Destructor
Stats::~Stats()
{
Stats::~Stats() {
// Vuelca los datos del buffer en la lista de estadisticas
updateListFromBuffer();
@@ -38,18 +39,15 @@ void Stats::init()
}
// Añade una muerte a las estadisticas
void Stats::addDeath(const std::string &name)
{
void Stats::addDeath(const std::string& name) {
// Primero busca si ya hay una entrada con ese nombre
const int index = findByName(name, bufferList);
if (index != -1)
{
if (index != -1) {
bufferList[index].died++;
}
// En caso contrario crea la entrada
else
{
else {
StatsData item;
item.name = name;
item.visited = 0;
@@ -59,18 +57,15 @@ void Stats::addDeath(const std::string &name)
}
// Añade una visita a las estadisticas
void Stats::addVisit(const std::string &name)
{
void Stats::addVisit(const std::string& name) {
// Primero busca si ya hay una entrada con ese nombre
const int index = findByName(name, bufferList);
if (index != -1)
{
if (index != -1) {
bufferList[index].visited++;
}
// En caso contrario crea la entrada
else
{
else {
StatsData item;
item.name = name;
item.visited = 1;
@@ -80,14 +75,11 @@ void Stats::addVisit(const std::string &name)
}
// Busca una entrada en la lista por nombre
int Stats::findByName(const std::string &name, const std::vector<StatsData> &list)
{
int Stats::findByName(const std::string& name, const std::vector<StatsData>& list) {
int i = 0;
for (const auto &l : list)
{
if (l.name == name)
{
for (const auto& l : list) {
if (l.name == name) {
return i;
}
i++;
@@ -97,8 +89,7 @@ int Stats::findByName(const std::string &name, const std::vector<StatsData> &lis
}
// Carga las estadisticas desde un fichero
bool Stats::loadFromFile(const std::string &file_path, std::vector<StatsData> &list)
{
bool Stats::loadFromFile(const std::string& file_path, std::vector<StatsData>& list) {
list.clear();
// Indicador de éxito en la carga
@@ -108,15 +99,12 @@ bool Stats::loadFromFile(const std::string &file_path, std::vector<StatsData> &l
std::ifstream file(file_path);
// Si el fichero se puede abrir
if (file.good())
{
if (file.good()) {
std::string line;
// Procesa el fichero linea a linea
while (std::getline(file, line))
{
while (std::getline(file, line)) {
// Comprueba que la linea no sea un comentario
if (line.substr(0, 1) != "#")
{
if (line.substr(0, 1) != "#") {
StatsData stat;
std::stringstream ss(line);
std::string tmp;
@@ -142,8 +130,7 @@ bool Stats::loadFromFile(const std::string &file_path, std::vector<StatsData> &l
}
// El fichero no existe
else
{
else {
// Crea el fichero con los valores por defecto
saveToFile(file_path, list);
}
@@ -152,15 +139,13 @@ bool Stats::loadFromFile(const std::string &file_path, std::vector<StatsData> &l
}
// Guarda las estadisticas en un fichero
void Stats::saveToFile(const std::string &file_path, const std::vector<StatsData> &list)
{
void Stats::saveToFile(const std::string& file_path, const std::vector<StatsData>& list) {
// Crea y abre el fichero de texto
std::ofstream file(file_path);
// Escribe en el fichero
file << "# ROOM NAME;VISITS;DEATHS" << std::endl;
for (const auto &item : list)
{
for (const auto& item : list) {
file << item.name << ";" << item.visited << ";" << item.died << std::endl;
}
@@ -169,40 +154,31 @@ void Stats::saveToFile(const std::string &file_path, const std::vector<StatsData
}
// Calcula cual es la habitación con más muertes
void Stats::checkWorstNightmare()
{
void Stats::checkWorstNightmare() {
int deaths = 0;
for (const auto &item : list)
{
if (item.died > deaths)
{
for (const auto& item : list) {
if (item.died > deaths) {
deaths = item.died;
options.stats.worst_nightmare = item.name;
Options::stats.worst_nightmare = item.name;
}
}
}
// Añade una entrada al diccionario
void Stats::addDictionary(const std::string &number, const std::string &name)
{
void Stats::addDictionary(const std::string& number, const std::string& name) {
dictionary.push_back({number, name});
}
// Vuelca los datos del buffer en la lista de estadisticas
void Stats::updateListFromBuffer()
{
void Stats::updateListFromBuffer() {
// Actualiza list desde bufferList
for (const auto &buffer : bufferList)
{
for (const auto& buffer : bufferList) {
int index = findByName(buffer.name, list);
if (index != -1)
{ // Encontrado. Aumenta sus estadisticas
if (index != -1) { // Encontrado. Aumenta sus estadisticas
list[index].visited += buffer.visited;
list[index].died += buffer.died;
}
else
{ // En caso contrario crea la entrada
} else { // En caso contrario crea la entrada
StatsData item;
item.name = buffer.name;
item.visited = buffer.visited;