Intentando guardar las estadisticas y logros online. Algo hay MUY MAL y no se que es. Ya lo miraré con calma.

This commit is contained in:
2023-10-09 15:28:51 +02:00
parent 6a526df9b3
commit 9b265c6cca
6 changed files with 116 additions and 14 deletions

View File

@@ -9,23 +9,29 @@ Cheevos::Cheevos(Screen *screen, options_t *options, std::string file)
this->screen = screen;
this->file = file;
// Crea objetos
online = new Online(options);
// Inicializa los logros
init();
// Inicializa variables
enabled = true;
// Carga el estado de los logros desde un fichero
loadFromFile();
// Carga el estado de los logros
load();
}
// Destructor
Cheevos::~Cheevos()
{
// Guarda el estado de los logros en un fichero
saveToFile();
// Guarda el estado de los logros
save();
cheevos.clear();
// Libera memoria
delete online;
}
// Inicializa los logros
@@ -138,7 +144,7 @@ void Cheevos::unlock(int id)
cheevos[index].completed = true;
screen->showNotification("ACHIEVEMENT UNLOCKED!", cheevos[index].caption, cheevos[index].icon);
saveToFile();
save();
}
// Invalida un logro
@@ -158,6 +164,32 @@ void Cheevos::enable(bool value)
enabled = value;
}
// Carga el estado de los logros
void Cheevos::load()
{
if (options->online.enabled)
{ // Carga el estado de los logros desde el servidor online
loadFromServer();
}
else
{ // Carga el estado de los logros desde un fichero
loadFromFile();
}
}
// Guarda el estado de los logros
void Cheevos::save()
{
if (options->online.enabled)
{ // Guarda el estado de los logros en el servidor online
saveToServer();
}
else
{ // Guarda el estado de los logros en un fichero
saveToFile();
}
}
// Carga el estado de los logros desde un fichero
void Cheevos::loadFromFile()
{
@@ -264,4 +296,30 @@ int Cheevos::unlocked()
int Cheevos::count()
{
return cheevos.size();
}
// Carga el estado de los logros desde el servidor online
void Cheevos::loadFromServer()
{
std::string cheevosData = online->getCheevos();
for (int i = 0; i < (int)cheevosData.length(); ++i)
{
bool value = cheevosData.substr(i, 1) == "1" ? true : false;
cheevos.at(i).completed = value;
}
}
// Guarda el estado de los logros en el servidor online
void Cheevos::saveToServer()
{
std::string cheevosData = "";
for (auto cheevo : cheevos)
{
std::string data = cheevo.completed ? "1" : "0";
cheevosData.append(data);
}
online->setCheevos(cheevosData);
}