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 | |
| 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')
| -rw-r--r-- | src/game/GameController.cpp | 70 | ||||
| -rw-r--r-- | src/game/GameController.h | 6 | ||||
| -rw-r--r-- | src/game/GameView.cpp | 15 |
3 files changed, 91 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(); diff --git a/src/game/GameController.h b/src/game/GameController.h index 08e8a3b..baa25ce 100644 --- a/src/game/GameController.h +++ b/src/game/GameController.h @@ -109,6 +109,12 @@ public: ui::Point NormaliseBlockCoord(ui::Point point); std::string ElementResolve(int type); + void ResetAir(); + void ResetSpark(); + void SwitchGravity(); + void SwitchAir(); + void ToggleAHeat(); + void LoadClipboard(); void LoadStamp(); diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 85f4330..4bbb811 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -1017,6 +1017,21 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool selectMode = SelectStamp; selectPoint1 = ui::Point(-1, -1); break; + case 'w': + c->SwitchGravity(); + break; + case 'y': + c->SwitchAir(); + break; + case 'u': + c->ToggleAHeat(); + break; + case '=': + if(ctrl) + c->ResetSpark(); + else + c->ResetAir(); + break; case 'c': if(ctrl) { |
