diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-05 14:26:17 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-05 14:26:17 (GMT) |
| commit | ed270d8dbf685fdc00e01959e1aa63c2163f152b (patch) | |
| tree | 6653c43fd2875f32cde195ac43b9d63e8f9b96cb /src | |
| parent | 351ce1525f570a52d571d1da720ae4f6a5815a22 (diff) | |
| download | powder-ed270d8dbf685fdc00e01959e1aa63c2163f152b.zip powder-ed270d8dbf685fdc00e01959e1aa63c2163f152b.tar.gz | |
Draw gravity zones when using grav wall
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/GameController.cpp | 8 | ||||
| -rw-r--r-- | src/game/GameModel.cpp | 1 | ||||
| -rw-r--r-- | src/game/QuickOptions.h | 22 | ||||
| -rw-r--r-- | src/graphics/Renderer.cpp | 11 | ||||
| -rw-r--r-- | src/graphics/Renderer.h | 3 | ||||
| -rw-r--r-- | src/simulation/Gravity.h | 2 |
6 files changed, 40 insertions, 7 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 350bc25..ea21fd1 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -653,6 +653,14 @@ void GameController::SetActiveMenu(Menu * menu) void GameController::SetActiveTool(int toolSelection, Tool * tool) { gameModel->SetActiveTool(toolSelection, tool); + gameModel->GetRenderer()->gravityZonesEnabled = false; + for(int i = 0; i < 3; i++) + { + if(gameModel->GetActiveTool(i) == gameModel->GetMenuList().at(SC_WALL)->GetToolList().at(WL_GRAV)) + { + gameModel->GetRenderer()->gravityZonesEnabled = true; + } + } } void GameController::OpenSearch() diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 85f54d3..9a9e807 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -138,6 +138,7 @@ void GameModel::BuildQuickOptionMenu() quickOptions.push_back(new DecorationsOption(this)); quickOptions.push_back(new NGravityOption(this)); quickOptions.push_back(new AHeatOption(this)); + quickOptions.push_back(new DrawGravWallOption(this)); notifyQuickOptionsChanged(); UpdateQuickOptions(); diff --git a/src/game/QuickOptions.h b/src/game/QuickOptions.h index f194c1c..b22834c 100644 --- a/src/game/QuickOptions.h +++ b/src/game/QuickOptions.h @@ -29,11 +29,11 @@ public: } virtual bool GetToggle() { - return m->GetRenderer()->gravifyFieldEnabled; + return m->GetRenderer()->gravityFieldEnabled; } virtual void perform() { - m->GetRenderer()->gravifyFieldEnabled = !m->GetRenderer()->gravifyFieldEnabled; + m->GetRenderer()->gravityFieldEnabled = !m->GetRenderer()->gravityFieldEnabled; } }; @@ -96,4 +96,22 @@ public: { m->GetSimulation()->aheat_enable = !m->GetSimulation()->aheat_enable; } +}; + +class DrawGravWallOption: public QuickOption +{ +public: + DrawGravWallOption(GameModel * m): + QuickOption("Z", "Draw gravity zones", m, Toggle) + { + + } + virtual bool GetToggle() + { + return m->GetRenderer()->gravityZonesEnabled; + } + virtual void perform() + { + m->GetRenderer()->gravityZonesEnabled = !m->GetRenderer()->gravityZonesEnabled; + } };
\ No newline at end of file diff --git a/src/graphics/Renderer.cpp b/src/graphics/Renderer.cpp index 9949926..c1f24da 100644 --- a/src/graphics/Renderer.cpp +++ b/src/graphics/Renderer.cpp @@ -43,6 +43,7 @@ void Renderer::RenderBegin() render_parts(); render_fire(); DrawWalls(); + draw_grav_zones(); DrawSigns(); #ifndef OGLR FinaliseParts(); @@ -1901,7 +1902,7 @@ void Renderer::draw_grav() int x, y, i, ca; float nx, ny, dist; - if(!gravifyFieldEnabled) + if(!gravityFieldEnabled) return; for (y=0; y<YRES/CELL; y++) @@ -2062,12 +2063,15 @@ void Renderer::draw_air() void Renderer::draw_grav_zones() { + if(!gravityZonesEnabled) + return; + int x, y, i, j; for (y=0; y<YRES/CELL; y++) { for (x=0; x<XRES/CELL; x++) { - //if(sim->gravmask[y*(XRES/CELL)+x]) + if(sim->grav->gravmask[y*(XRES/CELL)+x]) { for (j=0; j<CELL; j++)//draws the colors for (i=0; i<CELL; i++) @@ -2102,7 +2106,8 @@ Renderer::Renderer(Graphics * g, Simulation * sim): ZFACTOR(8), zoomEnabled(false), decorations_enable(1), - gravifyFieldEnabled(false) + gravityFieldEnabled(false), + gravityZonesEnabled(false) { this->g = g; this->sim = sim; diff --git a/src/graphics/Renderer.h b/src/graphics/Renderer.h index 721d39e..bf0f448 100644 --- a/src/graphics/Renderer.h +++ b/src/graphics/Renderer.h @@ -42,7 +42,8 @@ public: char * plasma_data; int emp_decor; // - bool gravifyFieldEnabled; + bool gravityZonesEnabled; + bool gravityFieldEnabled; int decorations_enable; Simulation * sim; Graphics * g; diff --git a/src/simulation/Gravity.h b/src/simulation/Gravity.h index e78332a..8d81211 100644 --- a/src/simulation/Gravity.h +++ b/src/simulation/Gravity.h @@ -43,7 +43,6 @@ typedef struct mask_el mask_el; class Gravity { private: - unsigned *gravmask; float *th_ogravmap; float *th_gravmap; @@ -68,6 +67,7 @@ private: //Simulation * sim; public: + unsigned *gravmask; float *gravmap; float *gravp; float *gravy; |
