diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-03 18:25:28 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-03 18:25:28 (GMT) |
| commit | f586a5585f3838e78cf6880b84d4c369040b5f67 (patch) | |
| tree | a3188318952df1ffc8a048647dadfa17b7bbb55e /src/game/GameController.cpp | |
| parent | 0e5c3da0f5d932c9b1652b6c55476f467b15a2ce (diff) | |
| download | powder-f586a5585f3838e78cf6880b84d4c369040b5f67.zip powder-f586a5585f3838e78cf6880b84d4c369040b5f67.tar.gz | |
Add shortcuts for things like gravity, air and air reset, issues #85 and #57
Diffstat (limited to 'src/game/GameController.cpp')
| -rw-r--r-- | src/game/GameController.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index c992120..7e5d930 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -406,6 +406,76 @@ void GameController::Exit() HasDone = true; } +void GameController::ResetAir() +{ + gameModel->GetSimulation()->air->Clear(); +} + +void GameController::ResetSpark() +{ + Simulation * sim = gameModel->GetSimulation(); + for (int i = 0; i < NPART; i++) + if (sim->parts[i].type == PT_SPRK) + { + if (sim->parts[i].ctype >= 0 && sim->parts[i].ctype < PT_NUM && sim->elements[sim->parts[i].ctype].Enabled) + { + sim->parts[i].type = sim->parts[i].ctype; + sim->parts[i].life = 0; + } + else + sim->kill_part(i); + } +} + +void GameController::SwitchGravity() +{ + gameModel->GetSimulation()->gravityMode = (gameModel->GetSimulation()->gravityMode+1)%3; + + switch (gameModel->GetSimulation()->gravityMode) + { + case 0: + gameModel->SetInfoTip("Gravity: Vertical"); + break; + case 1: + gameModel->SetInfoTip("Gravity: Off"); + break; + case 2: + gameModel->SetInfoTip("Gravity: Radial"); + break; + } +} + +void GameController::SwitchAir() +{ + gameModel->GetSimulation()->air->airMode = (gameModel->GetSimulation()->air->airMode+1)%5; + + switch (gameModel->GetSimulation()->air->airMode) + { + case 0: + gameModel->SetInfoTip("Air: On"); + break; + case 1: + gameModel->SetInfoTip("Air: Pressure Off"); + break; + case 2: + gameModel->SetInfoTip("Air: Velocity Off"); + break; + case 3: + gameModel->SetInfoTip("Air: Off"); + break; + case 4: + gameModel->SetInfoTip("Air: No Update"); + break; + } +} + +void GameController::ToggleAHeat() +{ + gameModel->GetSimulation()->aheat_enable = !gameModel->GetSimulation()->aheat_enable; + gameModel->UpdateQuickOptions(); +} + + void GameController::LoadRenderPreset(RenderPreset preset) { Renderer * renderer = gameModel->GetRenderer(); |
