forked from jaildesigner-jailgames/jaildoctors_dilemma
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:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user