diff options
| author | jacob1 <jfu614@gmail.com> | 2013-07-02 19:09:00 (GMT) |
|---|---|---|
| committer | jacob1 <jfu614@gmail.com> | 2013-07-02 19:09:00 (GMT) |
| commit | 519d220101acbfcda9f6843d94182ed77a691c25 (patch) | |
| tree | d90ec9787cd61b91a8d20888fbfe97c8d9dd5267 /src | |
| parent | c1320d200735ab3a0e25d169a4bb329de2bb40ba (diff) | |
| download | powder-519d220101acbfcda9f6843d94182ed77a691c25.zip powder-519d220101acbfcda9f6843d94182ed77a691c25.tar.gz | |
save more settings in powder.pref like ngrav_enable, aheat_enable, pretty powders, and debug hud. Also save ambient heat in saves, and add a warning in the intro text in betas that you can't save publically
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/GameSave.cpp | 22 | ||||
| -rw-r--r-- | src/client/GameSave.h | 1 | ||||
| -rw-r--r-- | src/gui/game/GameController.cpp | 5 | ||||
| -rw-r--r-- | src/gui/game/GameModel.cpp | 11 | ||||
| -rw-r--r-- | src/simulation/elements/PIPE.cpp | 14 |
5 files changed, 42 insertions, 11 deletions
diff --git a/src/client/GameSave.cpp b/src/client/GameSave.cpp index c3aee45..3d271a2 100644 --- a/src/client/GameSave.cpp +++ b/src/client/GameSave.cpp @@ -20,6 +20,7 @@ legacyEnable(save.legacyEnable), gravityEnable(save.gravityEnable), paused(save.paused), gravityMode(save.gravityMode), +aheatEnable(save.aheatEnable), airMode(save.airMode), signs(save.signs), expanded(save.expanded), @@ -171,10 +172,11 @@ void GameSave::Expand() { if(hasOriginalData && !expanded) { - waterEEnabled = 0; - legacyEnable = 0; - gravityEnable = 0; - paused = 0; + waterEEnabled = false; + legacyEnable = false; + gravityEnable = false; + aheatEnable = false; + paused = false; gravityMode = 0; airMode = 0; expanded = true; @@ -618,6 +620,17 @@ void GameSave::readOPS(char * data, int dataLength) fprintf(stderr, "Wrong type for %s\n", bson_iterator_key(&iter)); } } + else if(!strcmp(bson_iterator_key(&iter), "aheat_enable")) + { + if(bson_iterator_type(&iter)==BSON_BOOL) + { + aheatEnable = bson_iterator_bool(&iter); + } + else + { + fprintf(stderr, "Wrong type for %s\n", bson_iterator_key(&iter)); + } + } else if(strcmp(bson_iterator_key(&iter), "waterEEnabled")==0) { if(bson_iterator_type(&iter)==BSON_BOOL) @@ -1973,6 +1986,7 @@ char * GameSave::serialiseOPS(int & dataLength) bson_append_bool(&b, "waterEEnabled", waterEEnabled); bson_append_bool(&b, "legacyEnable", legacyEnable); bson_append_bool(&b, "gravityEnable", gravityEnable); + bson_append_bool(&b, "aheat_enable", aheatEnable); bson_append_bool(&b, "paused", paused); bson_append_int(&b, "gravityMode", gravityMode); bson_append_int(&b, "airMode", airMode); diff --git a/src/client/GameSave.h b/src/client/GameSave.h index cbabb3e..559b3a0 100644 --- a/src/client/GameSave.h +++ b/src/client/GameSave.h @@ -42,6 +42,7 @@ public: bool waterEEnabled; bool legacyEnable; bool gravityEnable; + bool aheatEnable; bool paused; int gravityMode; int airMode; diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 852a433..815c7a4 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -150,6 +150,8 @@ GameController::GameController(): gameView->AttachController(this); gameModel->AddObserver(gameView); + gameView->SetDebugHUD(Client::Ref().GetPrefBool("Renderer.DebugMode", false)); + #ifdef LUACONSOLE commandInterface = new LuaScriptInterface(this, gameModel); ((LuaScriptInterface*)commandInterface)->SetWindow(gameView); @@ -1016,6 +1018,7 @@ void GameController::OpenLocalSaveWindow(bool asCurrent) gameSave->legacyEnable = sim->legacy_enable; gameSave->waterEEnabled = sim->water_equal_test; gameSave->gravityEnable = sim->grav->ngrav_enable; + gameSave->aheatEnable = sim->aheat_enable; if(!gameSave) { new ErrorMessage("Error", "Unable to build save."); @@ -1227,6 +1230,7 @@ void GameController::OpenSaveWindow() gameSave->legacyEnable = sim->legacy_enable; gameSave->waterEEnabled = sim->water_equal_test; gameSave->gravityEnable = sim->grav->ngrav_enable; + gameSave->aheatEnable = sim->aheat_enable; if(!gameSave) { new ErrorMessage("Error", "Unable to build save."); @@ -1278,6 +1282,7 @@ void GameController::SaveAsCurrent() gameSave->legacyEnable = sim->legacy_enable; gameSave->waterEEnabled = sim->water_equal_test; gameSave->gravityEnable = sim->grav->ngrav_enable; + gameSave->aheatEnable = sim->aheat_enable; if(!gameSave) { new ErrorMessage("Error", "Unable to build save."); diff --git a/src/gui/game/GameModel.cpp b/src/gui/game/GameModel.cpp index 889cf09..efb7d78 100644 --- a/src/gui/game/GameModel.cpp +++ b/src/gui/game/GameModel.cpp @@ -83,6 +83,11 @@ GameModel::GameModel(): //Load config into simulation edgeMode = Client::Ref().GetPrefInteger("Simulation.EdgeMode", 0); sim->SetEdgeMode(edgeMode); + int ngrav_enable = Client::Ref().GetPrefInteger("Simulation.NewtonianGravity", 0); + if (ngrav_enable) + sim->grav->start_grav_async(); + sim->aheat_enable = Client::Ref().GetPrefInteger("Simulation.AmbientHeat", 0); + sim->pretty_powder = Client::Ref().GetPrefInteger("Simulation.PrettyPowder", 0); //Load last user if(Client::Ref().GetAuthUser().ID) @@ -155,8 +160,12 @@ GameModel::~GameModel() Client::Ref().SetPref("Renderer.GravityField", (bool)ren->gravityFieldEnabled); Client::Ref().SetPref("Renderer.Decorations", (bool)ren->decorations_enable); + Client::Ref().SetPref("Renderer.DebugMode", ren->debugLines); //These two should always be equivalent, even though they are different things Client::Ref().SetPref("Simulation.EdgeMode", sim->edgeMode); + Client::Ref().SetPref("Simulation.NewtonianGravity", sim->grav->ngrav_enable); + Client::Ref().SetPref("Simulation.AmbientHeat", sim->aheat_enable); + Client::Ref().SetPref("Simulation.PrettyPowder", sim->pretty_powder); Client::Ref().SetPref("Decoration.Red", (int)colour.Red); Client::Ref().SetPref("Decoration.Green", (int)colour.Green); @@ -566,6 +575,7 @@ void GameModel::SetSave(SaveInfo * newSave) sim->air->airMode = saveData->airMode; 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 @@ -607,6 +617,7 @@ void GameModel::SetSaveFile(SaveFile * newSave) sim->air->airMode = saveData->airMode; 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(); diff --git a/src/simulation/elements/PIPE.cpp b/src/simulation/elements/PIPE.cpp index a470e6c..14dbee0 100644 --- a/src/simulation/elements/PIPE.cpp +++ b/src/simulation/elements/PIPE.cpp @@ -192,7 +192,7 @@ int Element_PIPE::update(UPDATE_FUNC_ARGS) np = sim->create_part(-1,x+rx,y+ry,parts[i].tmp&0xFF); if (np!=-1) { - transfer_pipe_to_part(parts+i, parts+np); + transfer_pipe_to_part(sim, parts+i, parts+np); } } //try eating particle at entrance @@ -374,8 +374,8 @@ int Element_PIPE::graphics(GRAPHICS_FUNC_ARGS) return 0; } -//#TPT-Directive ElementHeader Element_PIPE static void transfer_pipe_to_part(Particle *pipe, Particle *part) -void Element_PIPE::transfer_pipe_to_part(Particle *pipe, Particle *part) +//#TPT-Directive ElementHeader Element_PIPE static void transfer_pipe_to_part(Simulation * sim, Particle *pipe, Particle *part) +void Element_PIPE::transfer_pipe_to_part(Simulation * sim, Particle *pipe, Particle *part) { part->type = (pipe->tmp & 0xFF); part->temp = pipe->temp; @@ -384,7 +384,7 @@ void Element_PIPE::transfer_pipe_to_part(Particle *pipe, Particle *part) part->ctype = pipe->pavg[1]; pipe->tmp &= ~0xFF; - if (part->type != PT_PHOT && part->type != PT_ELEC && part->type != PT_NEUT) + if (!(sim->elements[part->type].Properties & TYPE_ENERGY)) { part->vx = 0.0f; part->vy = 0.0f; @@ -456,7 +456,7 @@ void Element_PIPE::pushParticle(Simulation * sim, int i, int count, int original for (nnx=0; nnx<80; nnx++) if (!sim->portalp[sim->parts[r>>8].tmp][count][nnx].type) { - transfer_pipe_to_part(sim->parts+i, &(sim->portalp[sim->parts[r>>8].tmp][count][nnx])); + transfer_pipe_to_part(sim, sim->parts+i, &(sim->portalp[sim->parts[r>>8].tmp][count][nnx])); count++; break; } @@ -482,7 +482,7 @@ void Element_PIPE::pushParticle(Simulation * sim, int i, int count, int original for (nnx=0; nnx<80; nnx++) if (!sim->portalp[sim->parts[r>>8].tmp][count][nnx].type) { - transfer_pipe_to_part(sim->parts+i, &(sim->portalp[sim->parts[r>>8].tmp][count][nnx])); + transfer_pipe_to_part(sim, sim->parts+i, &(sim->portalp[sim->parts[r>>8].tmp][count][nnx])); count++; break; } @@ -494,7 +494,7 @@ void Element_PIPE::pushParticle(Simulation * sim, int i, int count, int original np = sim->create_part(-1,x+rx,y+ry,sim->parts[i].tmp&0xFF); if (np!=-1) { - transfer_pipe_to_part(sim->parts+i, sim->parts+np); + transfer_pipe_to_part(sim, sim->parts+i, sim->parts+np); } } |
