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