#include "memory.hpp"
|
|
|
|
#include "cpp-base64/base64.h"
|
|
|
|
#include <string>
|
|
#include <cstring>
|
|
|
|
Player *Memory::loadFromCode(std::string code)
|
|
{
|
|
code = base64_decode(code);
|
|
char playerName[16] = {0};
|
|
int playerHP = 0;
|
|
int playerAtk = 0;
|
|
int playerDef = 0;
|
|
int playerLevel = 0;
|
|
int playerExp = 0;
|
|
|
|
int result = sscanf(code.c_str(),
|
|
"PlayerLevel=%d;PlayerExp=%d;PlayerHP=%d;PlayerAtk=%d;PlayerDef=%d;PlayerName=%15s",
|
|
&playerLevel,
|
|
&playerExp,
|
|
&playerHP,
|
|
&playerAtk,
|
|
&playerDef,
|
|
playerName);
|
|
|
|
std::string playerTrueName = playerName;
|
|
|
|
if (result == 6)
|
|
{
|
|
return new Player(playerTrueName, playerHP, playerAtk, playerDef, playerLevel, playerExp);
|
|
}
|
|
else
|
|
{
|
|
return nullptr;
|
|
}
|
|
}
|
|
|
|
std::string Memory::saveToCode(Player *player)
|
|
{
|
|
char code[256];
|
|
snprintf(code, sizeof(code),
|
|
"PlayerLevel=%d;PlayerExp=%d;PlayerHP=%d;PlayerAtk=%d;PlayerDef=%d;PlayerName=%s",
|
|
player->getLevel(),
|
|
player->getExp(),
|
|
player->getMaxHP(),
|
|
player->getAtk(),
|
|
player->getDef(),
|
|
player->getName().c_str());
|
|
|
|
return base64_encode(reinterpret_cast<unsigned char *>(code),
|
|
strlen(code));
|
|
}
|