GeometryDash/Save.cpp

101 lines
2.1 KiB
C++

#include "..\C-Engine\CHeader.hpp"
#include "Save.hpp"
extern "C"
{
#include "Memory/memory.h"
}
Save::Save()
{
nblevel = 3;
UserInfo = NULL;
TabLevel = NULL;
data = NULL;
lenght = 0;
}
Save::~Save()
{
delete data;
delete UserInfo;
for(int i = 0 ; i < nblevel ; i++)
{
delete TabLevel[i];
}
delete TabLevel;
}
void Save::LoadData()
{
UserInfo = new Info;
TabLevel = new Level*[nblevel];
for(int i = 0 ; i < nblevel ; i++)
{
TabLevel[i] = new Level;
}
if(memory_exists("\\\\fls0\\Dash.sav"))
{
data = (int*)memory_load("\\\\fls0\\Dash.sav");
UserInfo->nbattemp = data[0];
UserInfo->nbjump = data[1];
UserInfo->nbtime = data[2];
UserInfo->completlevel = data[3];
UserInfo->perso = data[4];
UserInfo->mini = data[5];
for(int i = 0 ; i < nblevel ; i++)
{
TabLevel[i]->normalprogress = data[6 + i * 2];
TabLevel[i]->practiseprogress = data[7 + i * 2];
}
free(data);
}
else
{
UserInfo->nbattemp = 0;
UserInfo->nbjump = 0;
UserInfo->nbtime = 0;
UserInfo->completlevel = 0;
UserInfo->perso = 0;
UserInfo->mini = 0;
for(int i = 0 ; i < nblevel ; i++)
{
TabLevel[i]->normalprogress = 0;
TabLevel[i]->practiseprogress = 0;
}
}
}
void Save::SaveData()
{
//Encapssulation des données.
lenght = 6 + nblevel * 2;
data = new int[lenght];
data[0] = UserInfo->nbattemp;
data[1] = UserInfo->nbjump;
data[2] = UserInfo->nbtime;
data[3] = UserInfo->completlevel;
data[4] = UserInfo->perso;
data[5] = UserInfo->mini;
for(int i = 0 ; i < nblevel ; i++)
{
data[6 + i * 2] = TabLevel[i]->normalprogress;
data[7 + i * 2] = TabLevel[i]->practiseprogress;
}
//fin de l'encapssulation.
int error = memory_save("\\\\fls0\\Dash.sav",data,lenght * sizeof (int)); //Sauvegarde
delete data;
}