From 80044bb0f06b4186bcc2f07e1c5ddc4e195f2426 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Wed, 18 Jul 2012 17:22:35 +0100 Subject: [PATCH] Renderer Presets and default graphics function --- src/game/GameController.cpp | 8 +++++ src/game/GameController.h | 2 ++ src/game/GameView.cpp | 58 ++++++++++++++++++++++++++++++ src/game/GameView.h | 3 ++ src/game/RenderPreset.h | 19 ++++++++++ src/graphics/Renderer.cpp | 11 ++++++ src/simulation/elements/116.cpp | 2 +- src/simulation/elements/146.cpp | 2 +- src/simulation/elements/147.cpp | 2 +- src/simulation/elements/AMTR.cpp | 2 +- src/simulation/elements/ANAR.cpp | 2 +- src/simulation/elements/ARAY.cpp | 2 +- src/simulation/elements/BANG.cpp | 2 +- src/simulation/elements/BCLN.cpp | 2 +- src/simulation/elements/BGLA.cpp | 2 +- src/simulation/elements/BHOL.cpp | 2 +- src/simulation/elements/BMTL.cpp | 2 +- src/simulation/elements/BOYL.cpp | 2 +- src/simulation/elements/BRCK.cpp | 2 +- src/simulation/elements/BREC.cpp | 2 +- src/simulation/elements/BRMT.cpp | 2 +- src/simulation/elements/BTRY.cpp | 2 +- src/simulation/elements/C5.cpp | 2 +- src/simulation/elements/CAUS.cpp | 2 +- src/simulation/elements/CLNE.cpp | 2 +- src/simulation/elements/CNCT.cpp | 2 +- src/simulation/elements/CO2.cpp | 2 +- src/simulation/elements/CONV.cpp | 2 +- src/simulation/elements/DESL.cpp | 2 +- src/simulation/elements/DMND.cpp | 2 +- src/simulation/elements/DRIC.cpp | 2 +- src/simulation/elements/DSTW.cpp | 2 +- src/simulation/elements/DYST.cpp | 2 +- src/simulation/elements/ETRD.cpp | 2 +- src/simulation/elements/FOG.cpp | 2 +- src/simulation/elements/FRAY.cpp | 2 +- src/simulation/elements/FRZW.cpp | 2 +- src/simulation/elements/FRZZ.cpp | 2 +- src/simulation/elements/FSEP.cpp | 2 +- src/simulation/elements/FUSE.cpp | 2 +- src/simulation/elements/FWRK.cpp | 2 +- src/simulation/elements/GAS.cpp | 2 +- src/simulation/elements/GLAS.cpp | 2 +- src/simulation/elements/GOO.cpp | 2 +- src/simulation/elements/GUNP.cpp | 2 +- src/simulation/elements/H2.cpp | 2 +- src/simulation/elements/ICEI.cpp | 2 +- src/simulation/elements/IGNT.cpp | 2 +- src/simulation/elements/INSL.cpp | 2 +- src/simulation/elements/INST.cpp | 2 +- src/simulation/elements/INWR.cpp | 2 +- src/simulation/elements/IRON.cpp | 2 +- src/simulation/elements/ISOZ.cpp | 2 +- src/simulation/elements/ISZS.cpp | 2 +- src/simulation/elements/LNTG.cpp | 2 +- src/simulation/elements/LO2.cpp | 2 +- src/simulation/elements/LOLZ.cpp | 2 +- src/simulation/elements/LOVE.cpp | 2 +- src/simulation/elements/LRBD.cpp | 2 +- src/simulation/elements/MERC.cpp | 2 +- src/simulation/elements/METL.cpp | 2 +- src/simulation/elements/MORT.cpp | 2 +- src/simulation/elements/MWAX.cpp | 2 +- src/simulation/elements/NBHL.cpp | 2 +- src/simulation/elements/NBLE.cpp | 2 +- src/simulation/elements/NICE.cpp | 2 +- src/simulation/elements/NITR.cpp | 2 +- src/simulation/elements/NONE.cpp | 2 +- src/simulation/elements/NSCN.cpp | 2 +- src/simulation/elements/NTCT.cpp | 2 +- src/simulation/elements/NWHL.cpp | 2 +- src/simulation/elements/O2.cpp | 2 +- src/simulation/elements/OIL.cpp | 2 +- src/simulation/elements/PLEX.cpp | 2 +- src/simulation/elements/PLNT.cpp | 2 +- src/simulation/elements/PLUT.cpp | 2 +- src/simulation/elements/PSCN.cpp | 2 +- src/simulation/elements/PSTE.cpp | 2 +- src/simulation/elements/PSTS.cpp | 2 +- src/simulation/elements/PTCT.cpp | 2 +- src/simulation/elements/RBDM.cpp | 2 +- src/simulation/elements/REPL.cpp | 2 +- src/simulation/elements/RIME.cpp | 2 +- src/simulation/elements/SALT.cpp | 2 +- src/simulation/elements/SAND.cpp | 2 +- src/simulation/elements/SHLD1.cpp | 2 +- src/simulation/elements/SHLD2.cpp | 2 +- src/simulation/elements/SHLD3.cpp | 2 +- src/simulation/elements/SHLD4.cpp | 2 +- src/simulation/elements/SING.cpp | 2 +- src/simulation/elements/SLTW.cpp | 2 +- src/simulation/elements/SNOW.cpp | 2 +- src/simulation/elements/SOAP.cpp | 2 +- src/simulation/elements/SPAWN.cpp | 2 +- src/simulation/elements/SPAWN2.cpp | 2 +- src/simulation/elements/STNE.cpp | 2 +- src/simulation/elements/TESC.cpp | 2 +- src/simulation/elements/THRM.cpp | 2 +- src/simulation/elements/TTAN.cpp | 2 +- src/simulation/elements/URAN.cpp | 2 +- src/simulation/elements/VINE.cpp | 2 +- src/simulation/elements/VOID.cpp | 2 +- src/simulation/elements/WARP.cpp | 2 +- src/simulation/elements/WATR.cpp | 2 +- src/simulation/elements/WAX.cpp | 2 +- src/simulation/elements/WHOL.cpp | 2 +- src/simulation/elements/WOOD.cpp | 2 +- src/simulation/elements/WTRV.cpp | 2 +- src/simulation/elements/YEST.cpp | 2 +- 109 files changed, 204 insertions(+), 103 deletions(-) create mode 100644 src/game/RenderPreset.h diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 260d99a9c..074055405 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -402,6 +402,14 @@ void GameController::Exit() HasDone = true; } +void GameController::LoadRenderPreset(RenderPreset preset) +{ + Renderer * renderer = gameModel->GetRenderer(); + renderer->SetRenderMode(preset.RenderModes); + renderer->SetDisplayMode(preset.DisplayModes); + renderer->SetColourMode(preset.ColourMode); +} + void GameController::Update() { ui::Point pos = gameView->GetMousePosition(); diff --git a/src/game/GameController.h b/src/game/GameController.h index 4e2b43adc..2388c5da8 100644 --- a/src/game/GameController.h +++ b/src/game/GameController.h @@ -17,6 +17,7 @@ #include "cat/LuaScriptInterface.h" #include "options/OptionsController.h" #include "client/ClientListener.h" +#include "RenderPreset.h" #include "Menu.h" using namespace std; @@ -63,6 +64,7 @@ public: void Tick(); void Exit(); + void LoadRenderPreset(RenderPreset preset); void SetZoomEnabled(bool zoomEnable); void SetZoomPosition(ui::Point position); void AdjustBrushSize(int direction, bool logarithmic = false); diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 8adb9e124..62fd6a95c 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -255,6 +255,59 @@ GameView::GameView(): tempButton->Appearance.Margin = ui::Border(0, 2, 3, 2); tempButton->SetActionCallback(new ElementSearchAction(this)); AddComponent(tempButton); + + //Render mode presets. Possibly load from config in future? + renderModePresets = new RenderPreset[10]; + + renderModePresets[0].Name = "Alternative Velocity Display"; + renderModePresets[0].RenderModes.push_back(RENDER_EFFE); + renderModePresets[0].RenderModes.push_back(RENDER_BASC); + renderModePresets[0].DisplayModes.push_back(DISPLAY_AIRC); + + renderModePresets[1].Name = "Velocity Display"; + renderModePresets[1].RenderModes.push_back(RENDER_EFFE); + renderModePresets[1].RenderModes.push_back(RENDER_BASC); + renderModePresets[1].DisplayModes.push_back(DISPLAY_AIRV); + + renderModePresets[2].Name = "Pressure Display"; + renderModePresets[2].RenderModes.push_back(RENDER_EFFE); + renderModePresets[2].RenderModes.push_back(RENDER_BASC); + renderModePresets[2].DisplayModes.push_back(DISPLAY_AIRP); + + renderModePresets[3].Name = "Persistent Display"; + renderModePresets[3].RenderModes.push_back(RENDER_EFFE); + renderModePresets[3].RenderModes.push_back(RENDER_BASC); + renderModePresets[3].DisplayModes.push_back(DISPLAY_PERS); + + renderModePresets[4].Name = "Fire Display"; + renderModePresets[4].RenderModes.push_back(RENDER_FIRE); + renderModePresets[4].RenderModes.push_back(RENDER_EFFE); + renderModePresets[4].RenderModes.push_back(RENDER_BASC); + + renderModePresets[5].Name = "Blob Display"; + renderModePresets[5].RenderModes.push_back(RENDER_FIRE); + renderModePresets[5].RenderModes.push_back(RENDER_EFFE); + renderModePresets[5].RenderModes.push_back(RENDER_BLOB); + + renderModePresets[6].Name = "Heat Display"; + renderModePresets[6].RenderModes.push_back(RENDER_BASC); + renderModePresets[6].DisplayModes.push_back(DISPLAY_AIRH); + renderModePresets[6].ColourMode = COLOUR_HEAT; + + renderModePresets[7].Name = "Fancy Display"; + renderModePresets[7].RenderModes.push_back(RENDER_FIRE); + renderModePresets[7].RenderModes.push_back(RENDER_GLOW); + renderModePresets[7].RenderModes.push_back(RENDER_BLUR); + renderModePresets[7].RenderModes.push_back(RENDER_EFFE); + renderModePresets[7].RenderModes.push_back(RENDER_BASC); + renderModePresets[7].DisplayModes.push_back(DISPLAY_WARP); + + renderModePresets[8].Name = "Nothing Display"; + renderModePresets[8].RenderModes.push_back(RENDER_BASC); + + renderModePresets[9].Name = "Heat Gradient Display"; + renderModePresets[9].RenderModes.push_back(RENDER_BASC); + renderModePresets[9].ColourMode = COLOUR_GRAD; } class GameView::MenuAction: public ui::ButtonAction @@ -819,6 +872,11 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool c->AdjustBrushSize(-1, true); break; } + + if(key >= '0' && key <= '9') + { + c->LoadRenderPreset(renderModePresets[key-'0']); + } } void GameView::OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt) diff --git a/src/game/GameView.h b/src/game/GameView.h index 4576b1328..324f71646 100644 --- a/src/game/GameView.h +++ b/src/game/GameView.h @@ -12,6 +12,7 @@ #include "interface/Button.h" #include "interface/Slider.h" #include "ToolButton.h" +#include "RenderPreset.h" #include "Brush.h" using namespace std; @@ -76,6 +77,8 @@ private: ui::Point mousePosition; + RenderPreset * renderModePresets; + Thumbnail * placeSaveThumb; Particle sample; diff --git a/src/game/RenderPreset.h b/src/game/RenderPreset.h new file mode 100644 index 000000000..9cc9f4cdb --- /dev/null +++ b/src/game/RenderPreset.h @@ -0,0 +1,19 @@ +#ifndef RENDER_PRESET_H +#define RENDER_PRESET_H +class RenderPreset +{ +public: + std::string Name; + std::vector RenderModes; + std::vector DisplayModes; + unsigned int ColourMode; + + RenderPreset(): Name(""), ColourMode(0) {} + RenderPreset(std::string name, std::vector renderModes, std::vector displayModes, unsigned int colourMode): + Name(name), + RenderModes(renderModes), + DisplayModes(displayModes), + ColourMode(colourMode) + {} +}; +#endif \ No newline at end of file diff --git a/src/graphics/Renderer.cpp b/src/graphics/Renderer.cpp index ef3b8aaa2..5bf8eeff9 100644 --- a/src/graphics/Renderer.cpp +++ b/src/graphics/Renderer.cpp @@ -617,6 +617,8 @@ void Renderer::render_gravlensing() void Renderer::render_fire() { #ifndef OGLR + if(!(render_mode & FIREMODE)) + return; int i,j,x,y,r,g,b,nx,ny; for (j=0; j