diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 350bc25c9..ea21fd19f 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 85f54d389..9a9e8079b 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 f194c1c18..b22834cac 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 9949926eb..c1f24da51 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; ygravmask[y*(XRES/CELL)+x]) + if(sim->grav->gravmask[y*(XRES/CELL)+x]) { for (j=0; jg = g; this->sim = sim; diff --git a/src/graphics/Renderer.h b/src/graphics/Renderer.h index 721d39ec3..bf0f4489b 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 e78332acf..8d81211e4 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;