You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

53 lines
1.4 KiB

#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));
}