diff options
Diffstat (limited to 'src/game/GameModel.cpp')
| -rw-r--r-- | src/game/GameModel.cpp | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index ae3b191..08bd0ec 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -275,7 +275,8 @@ void GameModel::SetSave(Save * newSave) currentSave = newSave; if(currentSave) { - int returnVal = sim->Load(currentSave->GetData(), currentSave->GetDataLength()); + GameSave * newSave = new GameSave((char*)currentSave->GetData(), currentSave->GetDataLength()); + int returnVal = sim->Load(newSave); if(returnVal){ delete currentSave; currentSave = NULL; @@ -429,46 +430,49 @@ void GameModel::ClearSimulation() sim->clear_sim(); } -void GameModel::AddStamp(unsigned char * saveData, int saveSize) +void GameModel::SetStamp(Save * save) { + if(stamp) + delete stamp; + stamp = new GameSave((char*)save->GetData(), save->GetDataLength()); + notifyStampChanged(); +} + +void GameModel::AddStamp(GameSave * save) +{ + if(stamp) + delete stamp; + stamp = save; + + char * saveData; + int saveSize; + saveData = save->Serialise(saveSize); Save * tempSave = new Save(0, 0, 0, 0, "", ""); - tempSave->SetData(saveData, saveSize); + tempSave->SetData((unsigned char*)saveData, saveSize); Client::Ref().AddStamp(tempSave); delete tempSave; + + notifyClipboardChanged(); } -void GameModel::SetClipboard(unsigned char * saveData, int saveSize) +void GameModel::SetClipboard(GameSave * save) { if(clipboard) delete clipboard; - clipboard = new Save(0, 0, 0, 0, "", ""); - clipboard->SetData(saveData, saveSize); + clipboard = save; notifyClipboardChanged(); } -Save * GameModel::GetClipboard() +GameSave * GameModel::GetClipboard() { return clipboard; } -Save * GameModel::GetStamp() +GameSave * GameModel::GetStamp() { return stamp; } -void GameModel::SetStamp(Save * newStamp) -{ - if(stamp) - delete stamp; - if(newStamp) - { - stamp = new Save(*newStamp); - } - else - stamp = NULL; - notifyStampChanged(); -} - void GameModel::Log(string message) { consoleLog.push_front(message); |
