diff options
Diffstat (limited to 'src/render/RenderView.cpp')
| -rw-r--r-- | src/render/RenderView.cpp | 401 |
1 files changed, 0 insertions, 401 deletions
diff --git a/src/render/RenderView.cpp b/src/render/RenderView.cpp deleted file mode 100644 index 508ff47..0000000 --- a/src/render/RenderView.cpp +++ /dev/null @@ -1,401 +0,0 @@ -#include "simulation/ElementGraphics.h" -#include "graphics/Graphics.h" -#include "graphics/Renderer.h" -#include "RenderView.h" - -class RenderView::RenderModeAction: public ui::CheckboxAction -{ - RenderView * v; -public: - unsigned int renderMode; - RenderModeAction(RenderView * v_, unsigned int renderMode_) - { - v = v_; - renderMode = renderMode_; - } - virtual void ActionCallback(ui::Checkbox * sender) - { - if(sender->GetChecked()) - v->c->SetRenderMode(renderMode); - else - v->c->UnsetRenderMode(renderMode); - } -}; - -class RenderView::DisplayModeAction: public ui::CheckboxAction -{ - RenderView * v; -public: - unsigned int displayMode; - DisplayModeAction(RenderView * v_, unsigned int displayMode_) - { - v = v_; - displayMode = displayMode_; - } - virtual void ActionCallback(ui::Checkbox * sender) - { - if(sender->GetChecked()) - v->c->SetDisplayMode(displayMode); - else - v->c->UnsetDisplayMode(displayMode); - } -}; - -class RenderView::ColourModeAction: public ui::CheckboxAction -{ - RenderView * v; -public: - unsigned int colourMode; - ColourModeAction(RenderView * v_, unsigned int colourMode_) - { - v = v_; - colourMode = colourMode_; - } - virtual void ActionCallback(ui::Checkbox * sender) - { - if(sender->GetChecked()) - v->c->SetColourMode(colourMode); - else - v->c->SetColourMode(0); - } -}; - -class RenderView::RenderPresetAction: public ui::ButtonAction -{ - RenderView * v; -public: - int renderPreset; - RenderPresetAction(RenderView * v_, int renderPreset_) - { - v = v_; - renderPreset = renderPreset_; - } - virtual void ActionCallback(ui::Button * sender) - { - v->c->LoadRenderPreset(renderPreset); - } -}; - -RenderView::RenderView(): - ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)), - toolTip(""), - toolTipPresence(0), - ren(NULL) -{ - ui::Button * presetButton; - int presetButtonOffset = 375; - int checkboxOffset = 1; - int cSpace = 32; - int sSpace = 38; - - presetButton = new ui::Button(ui::Point(presetButtonOffset+200, YRES+6), ui::Point(30, 13), "", "Velocity display mode preset"); - presetButton->SetIcon(IconVelocity); - presetButton->SetActionCallback(new RenderPresetAction(this, 1)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+200, YRES+6+18), ui::Point(30, 13), "", "Pressure display mode preset"); - presetButton->SetIcon(IconPressure); - presetButton->SetActionCallback(new RenderPresetAction(this, 2)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+161, YRES+6), ui::Point(30, 13), "", "Persistent display mode preset"); - presetButton->SetIcon(IconPersistant); - presetButton->SetActionCallback(new RenderPresetAction(this, 3)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+161, YRES+6+18), ui::Point(30, 13), "", "Fire display mode preset"); - presetButton->SetIcon(IconFire); - presetButton->SetActionCallback(new RenderPresetAction(this, 4)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+122, YRES+6), ui::Point(30, 13), "", "Blob display mode preset"); - presetButton->SetIcon(IconBlob); - presetButton->SetActionCallback(new RenderPresetAction(this, 5)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+122, YRES+6+18), ui::Point(30, 13), "", "Heat display mode preset"); - presetButton->SetIcon(IconHeat); - presetButton->SetActionCallback(new RenderPresetAction(this, 6)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+83, YRES+6), ui::Point(30, 13), "", "Fancy display mode preset"); - presetButton->SetIcon(IconBlur); - presetButton->SetActionCallback(new RenderPresetAction(this, 7)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+83, YRES+6+18), ui::Point(30, 13), "", "Nothing display mode preset"); - presetButton->SetIcon(IconBasic); - presetButton->SetActionCallback(new RenderPresetAction(this, 8)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+44, YRES+6), ui::Point(30, 13), "", "Heat gradient display mode preset"); - presetButton->SetIcon(IconGradient); - presetButton->SetActionCallback(new RenderPresetAction(this, 9)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+44, YRES+6+18), ui::Point(30, 13), "", "Alternative Velocity display mode preset"); - presetButton->SetIcon(IconAltAir); - presetButton->SetActionCallback(new RenderPresetAction(this, 0)); - AddComponent(presetButton); - - presetButton = new ui::Button(ui::Point(presetButtonOffset+5, YRES+6), ui::Point(30, 13), "", "Life display mode preset"); - presetButton->SetIcon(IconLife); - presetButton->SetActionCallback(new RenderPresetAction(this, 10)); - AddComponent(presetButton); - - ui::Checkbox * tCheckbox; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Effects", "Adds Special flare effects to some elements"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconEffect); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_EFFE)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Fire", "Fire effect for gasses"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconFire); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_FIRE)); - AddComponent(tCheckbox); - - checkboxOffset += cSpace; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Glow", "Glow effect on some elements"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconGlow); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_GLOW)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Blur", "Blur effect for liquids"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconBlur); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_BLUR)); - AddComponent(tCheckbox); - - checkboxOffset += cSpace; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Blob", "Makes everything be drawn like a blob"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconBlob); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_BLOB)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Point", "Basic rendering, without this, most things will be invisible"); - renderModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconBasic); - tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_BASC)); - AddComponent(tCheckbox); - - checkboxOffset += sSpace; - line1 = checkboxOffset-5; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Alt. Air", "Displays pressure as red and blue, and velocity as white"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconAltAir); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_AIRC)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Pressure", "Displays pressure, red is positive and blue is negative"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconPressure); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_AIRP)); - AddComponent(tCheckbox); - - checkboxOffset += cSpace; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Velocity", "Displays velocity and positive pressure: up/down adds blue, right/left adds red, still pressure adds green"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconVelocity); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_AIRV)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Air-heat", "Displays the temperature of the air like heat display does"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconHeat); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_AIRH)); - AddComponent(tCheckbox); - - /*tCheckbox = new ui::Checkbox(ui::Point(216, YRES+4), ui::Point(30, 16), "Air", ""); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconAltAir); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_AIR)); - AddComponent(tCheckbox);*/ - - checkboxOffset += sSpace; - line2 = checkboxOffset-5; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Warp", "Gravity lensing, Newtonian Gravity bends light with this on"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconWarp); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_WARP)); - AddComponent(tCheckbox); - -#ifdef OGLR - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Effect", "I don't know what this does..."); //I would remove the whole checkbox, but then there's a large empty space -#else - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Effect", "Does nothing"); -#endif - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconEffect); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_EFFE)); - AddComponent(tCheckbox); - - checkboxOffset += cSpace; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Persistent", "Element paths persist on the screen for a while"); - displayModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconPersistant); - tCheckbox->SetActionCallback(new DisplayModeAction(this, DISPLAY_PERS)); - AddComponent(tCheckbox); - - checkboxOffset += sSpace; - line3 = checkboxOffset-5; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Heat", "Displays temperatures of the elements, dark blue is coldest, pink is hottest"); - colourModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconHeat); - tCheckbox->SetActionCallback(new ColourModeAction(this, COLOUR_HEAT)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "Life", "Displays the life value of elements in greyscale gradients"); - colourModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconLife); - tCheckbox->SetActionCallback(new ColourModeAction(this, COLOUR_LIFE)); - AddComponent(tCheckbox); - - checkboxOffset += cSpace; - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4+18), ui::Point(30, 16), "H-Gradient", "Changes colors of elements slightly to show heat diffusing through them"); - colourModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconGradient); - tCheckbox->SetActionCallback(new ColourModeAction(this, COLOUR_GRAD)); - AddComponent(tCheckbox); - - tCheckbox = new ui::Checkbox(ui::Point(checkboxOffset, YRES+4), ui::Point(30, 16), "Basic", "No special effects at all for anything, overrides all other options and deco"); - colourModes.push_back(tCheckbox); - tCheckbox->SetIcon(IconBasic); - tCheckbox->SetActionCallback(new ColourModeAction(this, COLOUR_BASC)); - AddComponent(tCheckbox); - - checkboxOffset += sSpace; - line4 = checkboxOffset-5; -} - -void RenderView::OnMouseDown(int x, int y, unsigned button) -{ - if(x > XRES || y < YRES) - c->Exit(); -} - -void RenderView::NotifyRendererChanged(RenderModel * sender) -{ - ren = sender->GetRenderer(); -} - -void RenderView::NotifyRenderChanged(RenderModel * sender) -{ - for(int i = 0; i < renderModes.size(); i++) - { - if(renderModes[i]->GetActionCallback()) - { - //Compares bitmasks at the moment, this means that "Point" is always on when other options that depend on it are, this might confuse some users, TODO: get the full list and compare that? - RenderModeAction * action = (RenderModeAction *)(renderModes[i]->GetActionCallback()); - if(action->renderMode == (sender->GetRenderMode() & action->renderMode)) - { - renderModes[i]->SetChecked(true); - } - else - { - renderModes[i]->SetChecked(false); - } - } - } -} - -void RenderView::NotifyDisplayChanged(RenderModel * sender) -{ - for(int i = 0; i < displayModes.size(); i++) - { - if(displayModes[i]->GetActionCallback()) - { - DisplayModeAction * action = (DisplayModeAction *)(displayModes[i]->GetActionCallback()); - if(action->displayMode == (sender->GetDisplayMode() & action->displayMode)) - { - displayModes[i]->SetChecked(true); - } - else - { - displayModes[i]->SetChecked(false); - } - } - } -} - -void RenderView::NotifyColourChanged(RenderModel * sender) -{ - for(int i = 0; i < colourModes.size(); i++) - { - if(colourModes[i]->GetActionCallback()) - { - ColourModeAction * action = (ColourModeAction *)(colourModes[i]->GetActionCallback()); - if(action->colourMode == sender->GetColourMode()) - { - colourModes[i]->SetChecked(true); - } - else - { - colourModes[i]->SetChecked(false); - } - } - } -} - -void RenderView::OnDraw() -{ - Graphics * g = ui::Engine::Ref().g; - g->clearrect(-1, -1, XRES+BARSIZE+1, YRES+MENUSIZE+1); - if(ren) - { - ren->clearScreen(1.0f); - ren->RenderBegin(); - ren->RenderEnd(); - } - g->draw_line(0, YRES, XRES-1, YRES, 200, 200, 200, 255); - g->draw_line(line1, YRES, line1, YRES+MENUSIZE, 200, 200, 200, 255); - g->draw_line(line2, YRES, line2, YRES+MENUSIZE, 200, 200, 200, 255); - g->draw_line(line3, YRES, line3, YRES+MENUSIZE, 200, 200, 200, 255); - g->draw_line(line4, YRES, line4, YRES+MENUSIZE, 200, 200, 200, 255); - g->draw_line(XRES, 0, XRES, YRES+MENUSIZE, 255, 255, 255, 255); - if(toolTipPresence && toolTip.length()) - { - g->drawtext(6, Size.Y-MENUSIZE-12, (char*)toolTip.c_str(), 255, 255, 255, toolTipPresence>51?255:toolTipPresence*5); - } -} - -void RenderView::OnTick(float dt) -{ - if(toolTipPresence>0) - { - toolTipPresence -= int(dt)>0?int(dt):1; - if(toolTipPresence<0) - toolTipPresence = 0; - } -} - -void RenderView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt) -{ - if (shift && key == '1') - c->LoadRenderPreset(10); - else if(key >= '0' && key <= '9') - { - c->LoadRenderPreset(key-'0'); - } -} - -void RenderView::ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip) -{ - this->toolTip = toolTip; - toolTipPresence = 500; -} - -RenderView::~RenderView() { -} |
