void GameModel::SetSaveFile(SaveFile * newSave) { SetSave(NULL); if(newSave && newSave->GetGameSave()) { GameSave * saveData = newSave->GetGameSave(); SetPaused(saveData->paused & GetPaused()); sim->gravityMode = saveData->gravityMode; sim->air->airMode = saveData->airMode; sim->legacy_enable = saveData->legacyEnable; sim->water_equal_test = saveData->waterEEnabled; if(saveData->gravityEnable && !sim->grav->ngrav_enable) { sim->grav->start_grav_async(); } else if(!saveData->gravityEnable && sim->grav->ngrav_enable) { sim->grav->stop_grav_async(); } sim->clear_sim(); sim->Load(saveData); } notifySaveChanged(); UpdateQuickOptions(); }
void GameModel::SetSave(SaveInfo * newSave) { if(currentSave != newSave) { if(currentSave) delete currentSave; if(newSave == NULL) currentSave = NULL; else currentSave = new SaveInfo(*newSave); } if(currentSave && currentSave->GetGameSave()) { GameSave * saveData = currentSave->GetGameSave(); SetPaused(saveData->paused | GetPaused()); sim->gravityMode = saveData->gravityMode; sim->air->airMode = saveData->airMode; sim->legacy_enable = saveData->legacyEnable; sim->water_equal_test = saveData->waterEEnabled; if(saveData->gravityEnable) sim->grav->start_grav_async(); else sim->grav->stop_grav_async(); sim->clear_sim(); sim->Load(saveData); } notifySaveChanged(); UpdateQuickOptions(); }
void GameModel::SetSave(SaveInfo * newSave) { if(currentSave != newSave) { delete currentSave; if(newSave == NULL) currentSave = NULL; else currentSave = new SaveInfo(*newSave); } delete currentFile; currentFile = NULL; if(currentSave && currentSave->GetGameSave()) { GameSave * saveData = currentSave->GetGameSave(); SetPaused(saveData->paused | GetPaused()); sim->gravityMode = saveData->gravityMode; sim->air->airMode = saveData->airMode; sim->edgeMode = saveData->edgeMode; sim->legacy_enable = saveData->legacyEnable; sim->water_equal_test = saveData->waterEEnabled; sim->aheat_enable = saveData->aheatEnable; if(saveData->gravityEnable) sim->grav->start_grav_async(); else sim->grav->stop_grav_async(); sim->clear_sim(); ren->ClearAccumulation(); if (!sim->Load(saveData)) { // This save was created before logging existed // Add in the correct info if (saveData->authors.size() == 0) { saveData->authors["type"] = "save"; saveData->authors["id"] = newSave->id; saveData->authors["username"] = newSave->userName; saveData->authors["title"] = newSave->name; saveData->authors["description"] = newSave->Description; saveData->authors["published"] = (int)newSave->Published; saveData->authors["date"] = newSave->updatedDate; } // This save was probably just created, and we didn't know the ID when creating it // Update with the proper ID else if (saveData->authors.get("id", -1) == 0 || saveData->authors.get("id", -1) == -1) { saveData->authors["id"] = newSave->id; } Client::Ref().OverwriteAuthorInfo(saveData->authors); } } notifySaveChanged(); UpdateQuickOptions(); }
void GameModel::SetSaveFile(SaveFile * newSave) { if(currentFile != newSave) { delete currentFile; if(newSave == NULL) currentFile = NULL; else currentFile = new SaveFile(*newSave); } delete currentSave; currentSave = NULL; if(newSave && newSave->GetGameSave()) { GameSave * saveData = newSave->GetGameSave(); SetPaused(saveData->paused | GetPaused()); sim->gravityMode = saveData->gravityMode; sim->air->airMode = saveData->airMode; sim->edgeMode = saveData->edgeMode; sim->legacy_enable = saveData->legacyEnable; sim->water_equal_test = saveData->waterEEnabled; sim->aheat_enable = saveData->aheatEnable; if(saveData->gravityEnable && !sim->grav->ngrav_enable) { sim->grav->start_grav_async(); } else if(!saveData->gravityEnable && sim->grav->ngrav_enable) { sim->grav->stop_grav_async(); } sim->clear_sim(); ren->ClearAccumulation(); if (!sim->Load(saveData)) { Client::Ref().OverwriteAuthorInfo(saveData->authors); } } notifySaveChanged(); UpdateQuickOptions(); }
int run() { SetPaused(GetPaused() ? 0 : 1); return 0; }