[Change] Cleaned up some of KonoM's Unit tests and GUI.
This commit is contained in:
parent
76517a7a5f
commit
f7ae1af267
@ -5,338 +5,330 @@
|
|||||||
#include "../libUnuk/UI/EventHistory.h"
|
#include "../libUnuk/UI/EventHistory.h"
|
||||||
|
|
||||||
Game::Game(void) {
|
Game::Game(void) {
|
||||||
Debug::logger->message("Creating characters..");
|
Debug::logger->message("Creating characters..");
|
||||||
_player = new Player(&_map);
|
_player = new Player(&_map);
|
||||||
|
|
||||||
_runGameReturnValue = gameMainMenu;
|
_runGameReturnValue = gameMainMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game::~Game(void) {
|
Game::~Game(void) {
|
||||||
Debug::logger->message("\n----- Cleaning Up ------");
|
Debug::logger->message("\n----- Cleaning Up ------");
|
||||||
// cleaning _player up caused a nice seg fault. I'll look later.
|
// cleaning _player up caused a nice seg fault. I'll look later.
|
||||||
//delete _player;
|
//delete _player;
|
||||||
}
|
}
|
||||||
|
|
||||||
gameNavVal_t Game::Run(const string savegameIDArg) {
|
gameNavVal_t Game::Run(const string savegameIDArg) {
|
||||||
_player->SetXY(400, 400);
|
_player->SetXY(400, 400);
|
||||||
_player->LoadSprites("../Data/Media/Images/Characters/Player.png", 40, 45);
|
_player->LoadSprites("../Data/Media/Images/Characters/Player.png", 40, 45);
|
||||||
|
|
||||||
LoadSavegame(savegameIDArg);
|
LoadSavegame(savegameIDArg);
|
||||||
|
|
||||||
// some weird bug. player->_exp is set to unreasonable number randomally after LoadSavegame returns.
|
|
||||||
_player->SetExpNeeded(Player::BASE_EXP_NEEDED);
|
|
||||||
|
|
||||||
int fps = 0;
|
// some weird bug. player->_exp is set to unreasonable number randomally after LoadSavegame returns.
|
||||||
int frame = 0;
|
_player->SetExpNeeded(Player::BASE_EXP_NEEDED);
|
||||||
int nextGameTick = SDL_GetTicks();
|
|
||||||
|
|
||||||
Timer frameTimer;
|
int fps = 0;
|
||||||
frameTimer.Start();
|
int frame = 0;
|
||||||
|
int nextGameTick = SDL_GetTicks();
|
||||||
|
|
||||||
Timer fpsCalc;
|
Timer frameTimer;
|
||||||
fpsCalc.Start();
|
frameTimer.Start();
|
||||||
|
|
||||||
Timer renderTimer;
|
Timer fpsCalc;
|
||||||
Timer updateTimer;
|
fpsCalc.Start();
|
||||||
|
|
||||||
_gameRenderTime.SetXY(10, 70);
|
Timer renderTimer;
|
||||||
_gameRenderTime.SetTextBlended("Render - XX", vsmall, COLOUR_BLACK);
|
Timer updateTimer;
|
||||||
|
|
||||||
_gameUpdateTime.SetXY(10, 90);
|
stringstream playerHealth;
|
||||||
_gameUpdateTime.SetTextBlended("Update - XX", vsmall, COLOUR_BLACK);
|
_playerHealth.SetXY(15, 27);
|
||||||
|
_playerHealth.SetTextBlended("Player Health - XX", vsmall, COLOUR_WHITE);
|
||||||
|
|
||||||
stringstream playerXYString;
|
stringstream playerExp;
|
||||||
_playerXY.SetXY(10, 110);
|
_playerExp.SetXY(15, 57);
|
||||||
_playerXY.SetTextBlended("Player coords - XX XX", vsmall, COLOUR_BLACK);
|
_playerExp.SetTextBlended("Player Level XX (XX/XX)", vsmall, COLOUR_WHITE);
|
||||||
|
|
||||||
stringstream npcHealth;
|
_gameRenderTime.SetXY(10, 90);
|
||||||
_npcHealth.SetXY(10, 130);
|
_gameRenderTime.SetTextBlended("Render - XX", vsmall, COLOUR_BLACK);
|
||||||
_npcHealth.SetTextBlended("NPC X Health - XX", vsmall, COLOUR_BLACK);
|
|
||||||
|
|
||||||
_playerHealthBar.SetBackgroundRGB(0, 0, 0);
|
_gameUpdateTime.SetXY(10, 110);
|
||||||
_playerHealthBar.SetForegroundRGB(255, 0, 0);
|
_gameUpdateTime.SetTextBlended("Update - XX", vsmall, COLOUR_BLACK);
|
||||||
_playerHealthBar.SetXY(10, 20);
|
|
||||||
_playerHealthBar.SetWidthHeight(200, 25);
|
|
||||||
|
|
||||||
_playerExpBar.SetBackgroundRGB(0, 0, 0);
|
stringstream playerXYString;
|
||||||
_playerExpBar.SetForegroundRGB(0, 0, 255);
|
_playerXY.SetXY(10, 130);
|
||||||
_playerExpBar.SetXY(10, 50);
|
_playerXY.SetTextBlended("Player coords - XX XX", vsmall, COLOUR_BLACK);
|
||||||
_playerExpBar.SetWidthHeight(200, 25);
|
|
||||||
_playerExpBar.SetProgress(0.0f);
|
|
||||||
|
|
||||||
stringstream playerHealth;
|
|
||||||
_playerHealth.SetXY(15, 27);
|
|
||||||
_playerHealth.SetTextBlended("Player Health - XX", vsmall, COLOUR_WHITE);
|
|
||||||
|
|
||||||
stringstream playerExp;
|
_playerHealthBar.SetBackgroundRGB(0, 0, 0);
|
||||||
_playerExp.SetXY(15, 57);
|
_playerHealthBar.SetForegroundRGB(255, 0, 0);
|
||||||
_playerExp.SetTextBlended("Player Level XX (XX/XX)", vsmall, COLOUR_WHITE);
|
_playerHealthBar.SetXY(10, 20);
|
||||||
|
_playerHealthBar.SetWidthHeight(200, 25);
|
||||||
eventHistory = new EventHistory();
|
|
||||||
|
_playerExpBar.SetBackgroundRGB(0, 0, 0);
|
||||||
_gameRunning = true;
|
_playerExpBar.SetForegroundRGB(0, 0, 255);
|
||||||
while(_gameRunning) {
|
_playerExpBar.SetXY(10, 50);
|
||||||
|
_playerExpBar.SetWidthHeight(200, 25);
|
||||||
|
_playerExpBar.SetProgress(0.0f);
|
||||||
|
|
||||||
|
eventHistory = new EventHistory();
|
||||||
|
|
||||||
|
_gameRunning = true;
|
||||||
|
while(_gameRunning) {
|
||||||
bool stillRunning = true;
|
bool stillRunning = true;
|
||||||
|
|
||||||
updateTimer.Start();
|
updateTimer.Start();
|
||||||
while((int)SDL_GetTicks() > nextGameTick) {
|
while((int)SDL_GetTicks() > nextGameTick) {
|
||||||
HandleInput();
|
HandleInput();
|
||||||
if (!_gameRunning) {
|
if (!_gameRunning) {
|
||||||
stillRunning = false;
|
stillRunning = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateGame();
|
UpdateGame();
|
||||||
|
|
||||||
nextGameTick += SKIP_TICKS;
|
nextGameTick += SKIP_TICKS;
|
||||||
}
|
}
|
||||||
updateTimer.Pause();
|
updateTimer.Pause();
|
||||||
|
|
||||||
if (!stillRunning) {
|
if (!stillRunning) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderTimer.Start();
|
renderTimer.Start();
|
||||||
Render();
|
Render();
|
||||||
renderTimer.Pause();
|
renderTimer.Pause();
|
||||||
|
|
||||||
// Calculate and display our FPS.
|
// Calculate and display our FPS.
|
||||||
if(fpsCalc.GetTicks() >= 1000) {
|
if(fpsCalc.GetTicks() >= 1000) {
|
||||||
fps = frame / (fpsCalc.GetTicks() / 1000);
|
fps = frame / (fpsCalc.GetTicks() / 1000);
|
||||||
|
|
||||||
stringstream caption;
|
stringstream caption;
|
||||||
caption << "Unuk - FPS: " << fps;
|
caption << "Unuk - FPS: " << fps;
|
||||||
|
|
||||||
SDL_WM_SetCaption(caption.str().c_str(), NULL);
|
SDL_WM_SetCaption(caption.str().c_str(), NULL);
|
||||||
|
|
||||||
fpsCalc.Start();
|
fpsCalc.Start();
|
||||||
frame = 0;
|
frame = 0;
|
||||||
|
|
||||||
playerHealth.str("");
|
playerHealth.str("");
|
||||||
playerHealth << "Player Health - " << _player->GetHealth();
|
playerHealth << "Player Health - " << _player->GetHealth();
|
||||||
_playerHealth.SetTextBlended(playerHealth.str(), vsmall, COLOUR_WHITE);
|
_playerHealth.SetTextBlended(playerHealth.str(), vsmall, COLOUR_WHITE);
|
||||||
|
|
||||||
_playerHealthBar.SetProgress((float)_player->GetHealth() / 100.0f);
|
_playerHealthBar.SetProgress((float)_player->GetHealth() / 100.0f);
|
||||||
|
|
||||||
playerExp.str("");
|
|
||||||
playerExp << "Player Level " << _player->GetLevel() << " (" << _player->GetExp() << "/" << _player->GetExpNeeded() << ")";
|
|
||||||
_playerExp.SetTextBlended(playerExp.str(), vsmall, COLOUR_WHITE);
|
|
||||||
|
|
||||||
_playerExpBar.SetProgress((float)_player->GetExp() / (float)_player->GetExpNeeded());
|
|
||||||
|
|
||||||
// Check to see if we are allowed to display debug info.
|
playerExp.str("");
|
||||||
if(debugEnabled) {
|
playerExp << "Player Level " << _player->GetLevel() << " (" << _player->GetExp() << "/" << _player->GetExpNeeded() << ")";
|
||||||
_gameUpdateTime.SetTextBlended("Update - " + updateTimer.GetTicksStr(), vsmall, COLOUR_BLACK);
|
_playerExp.SetTextBlended(playerExp.str(), vsmall, COLOUR_WHITE);
|
||||||
_gameRenderTime.SetTextBlended("Render - " + renderTimer.GetTicksStr(), vsmall, COLOUR_BLACK);
|
|
||||||
|
|
||||||
playerXYString.str("");
|
_playerExpBar.SetProgress((float)_player->GetExp() / (float)_player->GetExpNeeded());
|
||||||
playerXYString << "Player coords: x" << _player->GetX() << ", y" << _player->GetY();
|
|
||||||
_playerXY.SetTextBlended(playerXYString.str(), vsmall, COLOUR_BLACK);
|
|
||||||
|
|
||||||
int npc0Health = 0;
|
// Check to see if we are allowed to display debug info.
|
||||||
if(_map.GetWorld().GetNPCCount() == 0) {
|
if(debugEnabled) {
|
||||||
npc0Health = 0;
|
_gameUpdateTime.SetTextBlended("Update - " + updateTimer.GetTicksStr(), vsmall, COLOUR_BLACK);
|
||||||
}
|
_gameRenderTime.SetTextBlended("Render - " + renderTimer.GetTicksStr(), vsmall, COLOUR_BLACK);
|
||||||
else {
|
|
||||||
npc0Health = _map.GetWorld().GetNPC(0)->GetHealth();
|
|
||||||
}
|
|
||||||
|
|
||||||
npcHealth.str("");
|
playerXYString.str("");
|
||||||
npcHealth << "NPC 0 Health: " << npc0Health;
|
playerXYString << "Player coords: x" << _player->GetX() << ", y" << _player->GetY();
|
||||||
_npcHealth.SetTextBlended(npcHealth.str(), vsmall, COLOUR_BLACK);
|
_playerXY.SetTextBlended(playerXYString.str(), vsmall, COLOUR_BLACK);
|
||||||
}
|
|
||||||
}
|
int npc0Health = 0;
|
||||||
// Restrict the fps.
|
if(_map.GetWorld().GetNPCCount() == 0) {
|
||||||
if(1000 / MAX_FPS > frameTimer.GetTicks()) {
|
npc0Health = 0;
|
||||||
// SDL_Delay does not accept a float so for higher framerate
|
}
|
||||||
// limits there's an innacuracy. This is as much as 3fps
|
else {
|
||||||
// at a limit of 60fps.
|
npc0Health = _map.GetWorld().GetNPC(0)->GetHealth();
|
||||||
SDL_Delay((1000 / MAX_FPS) - frameTimer.GetTicks());
|
}
|
||||||
}
|
}
|
||||||
frameTimer.Start();
|
}
|
||||||
frame++;
|
// Restrict the fps.
|
||||||
}
|
if(1000 / MAX_FPS > frameTimer.GetTicks()) {
|
||||||
|
// SDL_Delay does not accept a float so for higher framerate
|
||||||
delete eventHistory;
|
// limits there's an innacuracy. This is as much as 3fps
|
||||||
|
// at a limit of 60fps.
|
||||||
return _runGameReturnValue;
|
SDL_Delay((1000 / MAX_FPS) - frameTimer.GetTicks());
|
||||||
|
}
|
||||||
|
frameTimer.Start();
|
||||||
|
frame++;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete eventHistory;
|
||||||
|
|
||||||
|
return _runGameReturnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::HandleInput(void) {
|
void Game::HandleInput(void) {
|
||||||
if(_ingameMenu.GetStatus() == false) {
|
if(_ingameMenu.GetStatus() == false) {
|
||||||
while(SDL_PollEvent(&event)) {
|
while(SDL_PollEvent(&event)) {
|
||||||
_player->HandleInput();
|
_player->HandleInput();
|
||||||
|
|
||||||
if(event.key.type == SDL_KEYDOWN) {
|
if(event.key.type == SDL_KEYDOWN) {
|
||||||
if(event.key.keysym.sym == SDLK_ESCAPE)
|
if(event.key.keysym.sym == SDLK_ESCAPE)
|
||||||
_ingameMenu.SetStatus(true);
|
_ingameMenu.SetStatus(true);
|
||||||
if(event.key.keysym.sym == SDLK_p)
|
if(event.key.keysym.sym == SDLK_p)
|
||||||
debugEnabled = !debugEnabled;
|
debugEnabled = !debugEnabled;
|
||||||
if(event.key.keysym.sym == SDLK_0)
|
if(event.key.keysym.sym == SDLK_0)
|
||||||
eventHistory->LogEvent("Item gained.");
|
eventHistory->LogEvent("Item gained.");
|
||||||
}
|
}
|
||||||
else if(event.type == SDL_QUIT) {
|
else if(event.type == SDL_QUIT) {
|
||||||
_gameRunning = false;
|
_gameRunning = false;
|
||||||
_runGameReturnValue = gameQuitGame;
|
_runGameReturnValue = gameQuitGame;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch(_ingameMenu.HandleInput()) {
|
switch(_ingameMenu.HandleInput()) {
|
||||||
case ingameMenuNothing:
|
case ingameMenuNothing:
|
||||||
break;
|
break;
|
||||||
case ingameMenuResume:
|
case ingameMenuResume:
|
||||||
_ingameMenu.SetStatus(false);
|
_ingameMenu.SetStatus(false);
|
||||||
break;
|
break;
|
||||||
case ingameMenuSaveGame:
|
case ingameMenuSaveGame:
|
||||||
SaveSavegame();
|
SaveSavegame();
|
||||||
_ingameMenu.SetStatus(false);
|
_ingameMenu.SetStatus(false);
|
||||||
Debug::logger->message("Game Saved!");
|
Debug::logger->message("Game Saved!");
|
||||||
break;
|
break;
|
||||||
case ingameMenuLoadGame:
|
case ingameMenuLoadGame:
|
||||||
LoadSavegame(_saveGameID);
|
LoadSavegame(_saveGameID);
|
||||||
_ingameMenu.SetStatus(false);
|
_ingameMenu.SetStatus(false);
|
||||||
Debug::logger->message("Game Loaded!");
|
Debug::logger->message("Game Loaded!");
|
||||||
break;
|
break;
|
||||||
case ingameMenuOptions:
|
case ingameMenuOptions:
|
||||||
break;
|
break;
|
||||||
case ingameMenuMainMenu:
|
case ingameMenuMainMenu:
|
||||||
SDL_FillRect(screen, NULL, 0);
|
SDL_FillRect(screen, NULL, 0);
|
||||||
_gameRunning = false;
|
_gameRunning = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.type == SDL_QUIT) {
|
if(event.type == SDL_QUIT) {
|
||||||
_gameRunning = false;
|
_gameRunning = false;
|
||||||
_ingameMenu.SetStatus(false);
|
_ingameMenu.SetStatus(false);
|
||||||
_runGameReturnValue = gameQuitGame;
|
_runGameReturnValue = gameQuitGame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::UpdateGame(void) {
|
void Game::UpdateGame(void) {
|
||||||
if(_ingameMenu.GetStatus() == false) {
|
if(_ingameMenu.GetStatus() == false) {
|
||||||
_map.Update();
|
_map.Update();
|
||||||
_player->Update();
|
_player->Update();
|
||||||
} else {
|
} else {
|
||||||
// :D
|
// :D
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::Render(void) {
|
void Game::Render(void) {
|
||||||
//SDL_FillRect(screen, NULL, 0); // You might want to clear the buffer! --konom | I don't want a blacked out ingame menu, save it for MainMenu. --Allanis
|
//SDL_FillRect(screen, NULL, 0); // You might want to clear the buffer! --konom | I don't want a blacked out ingame menu, save it for MainMenu. --Allanis
|
||||||
if(_ingameMenu.GetStatus() == false) {
|
if(_ingameMenu.GetStatus() == false) {
|
||||||
_map.Render();
|
_map.Render();
|
||||||
_player->Render();
|
_player->Render();
|
||||||
|
|
||||||
_playerHealthBar.DrawLiteral();
|
_playerHealthBar.DrawLiteral();
|
||||||
_playerHealth.RenderLiteral();
|
_playerHealth.RenderLiteral();
|
||||||
|
|
||||||
_playerExpBar.DrawLiteral();
|
|
||||||
_playerExp.RenderLiteral();
|
|
||||||
|
|
||||||
if(debugEnabled) {
|
|
||||||
_gameRenderTime.RenderLiteral();
|
|
||||||
_gameUpdateTime.RenderLiteral();
|
|
||||||
_playerXY.RenderLiteral();
|
|
||||||
_npcHealth.RenderLiteral();
|
|
||||||
}
|
|
||||||
|
|
||||||
eventHistory->Render();
|
_playerExpBar.DrawLiteral();
|
||||||
|
_playerExp.RenderLiteral();
|
||||||
|
|
||||||
} else {
|
if(debugEnabled) {
|
||||||
_ingameMenu.Render();
|
_gameRenderTime.RenderLiteral();
|
||||||
}
|
_gameUpdateTime.RenderLiteral();
|
||||||
SDL_Flip(screen);
|
_playerXY.RenderLiteral();
|
||||||
|
_npcHealth.RenderLiteral();
|
||||||
|
}
|
||||||
|
|
||||||
|
eventHistory->Render();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_ingameMenu.Render();
|
||||||
|
}
|
||||||
|
SDL_Flip(screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::LoadSavegame(const string savegameIDArg) {
|
void Game::LoadSavegame(const string savegameIDArg) {
|
||||||
_saveGameID = savegameIDArg;
|
_saveGameID = savegameIDArg;
|
||||||
string saveFilename = "../Save/" + _saveGameID;
|
string saveFilename = "../Save/" + _saveGameID;
|
||||||
|
|
||||||
// Converting to XML ftw!
|
// Converting to XML ftw!
|
||||||
TiXmlDocument mapFile(saveFilename.c_str());
|
TiXmlDocument mapFile(saveFilename.c_str());
|
||||||
assert(mapFile.LoadFile() == true);
|
assert(mapFile.LoadFile() == true);
|
||||||
|
|
||||||
TiXmlElement* rootElem = NULL;
|
|
||||||
TiXmlElement* dataElem = NULL;
|
|
||||||
|
|
||||||
// <save> - Grab a save file.
|
|
||||||
rootElem = mapFile.FirstChildElement("save");
|
|
||||||
assert(rootElem != NULL);
|
|
||||||
if(rootElem) {
|
|
||||||
// <name> - Parse the player name.
|
|
||||||
dataElem = rootElem->FirstChildElement("name");
|
|
||||||
assert(dataElem != NULL);
|
|
||||||
|
|
||||||
// Overloaded new/delete operator takes this out of scope..
|
TiXmlElement* rootElem = NULL;
|
||||||
// TODO: Fix.
|
TiXmlElement* dataElem = NULL;
|
||||||
//_player->SetName(dataElem->GetText());
|
|
||||||
// </name>
|
// <save> - Grab a save file.
|
||||||
|
rootElem = mapFile.FirstChildElement("save");
|
||||||
// <x> - Parse the player x coord.
|
assert(rootElem != NULL);
|
||||||
dataElem = dataElem->NextSiblingElement("x");
|
if(rootElem) {
|
||||||
assert(dataElem != NULL);
|
// <name> - Parse the player name.
|
||||||
int playerX = atoi(dataElem->GetText());
|
dataElem = rootElem->FirstChildElement("name");
|
||||||
// </x>
|
assert(dataElem != NULL);
|
||||||
|
|
||||||
// <y> - Parse the player y coord.
|
// Overloaded new/delete operator takes this out of scope..
|
||||||
dataElem = dataElem->NextSiblingElement("y");
|
// TODO: Fix.
|
||||||
assert(dataElem != NULL);
|
//_player->SetName(dataElem->GetText());
|
||||||
int playerY = atoi(dataElem->GetText());
|
// </name>
|
||||||
// </y>
|
|
||||||
|
// <x> - Parse the player x coord.
|
||||||
_player->SetXY((float)playerX, (float)playerY);
|
dataElem = dataElem->NextSiblingElement("x");
|
||||||
|
assert(dataElem != NULL);
|
||||||
// <map> - Parse the map file.
|
int playerX = atoi(dataElem->GetText());
|
||||||
dataElem = dataElem->NextSiblingElement("map");
|
// </x>
|
||||||
assert(dataElem != NULL);
|
|
||||||
_map.Load(dataElem->GetText());
|
// <y> - Parse the player y coord.
|
||||||
// </map>
|
dataElem = dataElem->NextSiblingElement("y");
|
||||||
}
|
assert(dataElem != NULL);
|
||||||
// <save>
|
int playerY = atoi(dataElem->GetText());
|
||||||
|
// </y>
|
||||||
// </save>
|
|
||||||
|
_player->SetXY((float)playerX, (float)playerY);
|
||||||
|
|
||||||
|
// <map> - Parse the map file.
|
||||||
|
dataElem = dataElem->NextSiblingElement("map");
|
||||||
|
assert(dataElem != NULL);
|
||||||
|
_map.Load(dataElem->GetText());
|
||||||
|
// </map>
|
||||||
|
}
|
||||||
|
// <save>
|
||||||
|
|
||||||
|
// </save>
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::SaveSavegame(void) {
|
void Game::SaveSavegame(void) {
|
||||||
string saveFilename = "../Save/" + _saveGameID;
|
string saveFilename = "../Save/" + _saveGameID;
|
||||||
|
|
||||||
TiXmlDocument doc;
|
TiXmlDocument doc;
|
||||||
|
|
||||||
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "", "");
|
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "", "");
|
||||||
|
|
||||||
TiXmlElement* saveElement = new TiXmlElement("save");
|
TiXmlElement* saveElement = new TiXmlElement("save");
|
||||||
|
|
||||||
TiXmlElement* nameElement = new TiXmlElement("name");
|
TiXmlElement* nameElement = new TiXmlElement("name");
|
||||||
TiXmlText* nameText = new TiXmlText("Allanis"); //TODO: replace with _player->GetName() when it works. --konom
|
TiXmlText* nameText = new TiXmlText("Allanis"); //TODO: replace with _player->GetName() when it works. --konom
|
||||||
nameElement->LinkEndChild(nameText);
|
nameElement->LinkEndChild(nameText);
|
||||||
|
|
||||||
std::stringstream xString;
|
std::stringstream xString;
|
||||||
xString << _player->GetX();
|
xString << _player->GetX();
|
||||||
|
|
||||||
TiXmlElement* xElement = new TiXmlElement("x");
|
TiXmlElement* xElement = new TiXmlElement("x");
|
||||||
TiXmlText* xText = new TiXmlText(xString.str().c_str());
|
TiXmlText* xText = new TiXmlText(xString.str().c_str());
|
||||||
xElement->LinkEndChild(xText);
|
xElement->LinkEndChild(xText);
|
||||||
|
|
||||||
std::stringstream yString;
|
std::stringstream yString;
|
||||||
yString << _player->GetY();
|
yString << _player->GetY();
|
||||||
|
|
||||||
TiXmlElement* yElement = new TiXmlElement("y");
|
TiXmlElement* yElement = new TiXmlElement("y");
|
||||||
TiXmlText* yText = new TiXmlText(yString.str().c_str());
|
TiXmlText* yText = new TiXmlText(yString.str().c_str());
|
||||||
yElement->LinkEndChild(yText);
|
yElement->LinkEndChild(yText);
|
||||||
|
|
||||||
TiXmlElement* mapElement = new TiXmlElement("map");
|
TiXmlElement* mapElement = new TiXmlElement("map");
|
||||||
TiXmlText* mapText = new TiXmlText("map"); //TODO: replace with actual map name.
|
TiXmlText* mapText = new TiXmlText("map"); //TODO: replace with actual map name.
|
||||||
mapElement->LinkEndChild(mapText);
|
mapElement->LinkEndChild(mapText);
|
||||||
|
|
||||||
saveElement->LinkEndChild(nameElement);
|
saveElement->LinkEndChild(nameElement);
|
||||||
saveElement->LinkEndChild(xElement);
|
saveElement->LinkEndChild(xElement);
|
||||||
saveElement->LinkEndChild(yElement);
|
saveElement->LinkEndChild(yElement);
|
||||||
saveElement->LinkEndChild(mapElement);
|
saveElement->LinkEndChild(mapElement);
|
||||||
|
|
||||||
doc.LinkEndChild(decl);
|
doc.LinkEndChild(decl);
|
||||||
doc.LinkEndChild(saveElement);
|
doc.LinkEndChild(saveElement);
|
||||||
|
|
||||||
doc.SaveFile(saveFilename.c_str());
|
doc.SaveFile(saveFilename.c_str());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user