diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-24 12:24:17 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-24 12:24:17 (GMT) |
| commit | 9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d (patch) | |
| tree | ac7d040253b459ce102e476cb19ab59e3cfa90d7 /src/gui/game/GameView.h | |
| parent | 6bf98ccdca39936a3c51367862eed7c49f8786ec (diff) | |
| parent | bdc69f31c0be94191015838886bdcc2bc67f1acb (diff) | |
| download | powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.zip powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.tar.gz | |
Merge branch 'reorganisation' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src/gui/game/GameView.h')
| -rw-r--r-- | src/gui/game/GameView.h | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h new file mode 100644 index 0000000..093d80b --- /dev/null +++ b/src/gui/game/GameView.h @@ -0,0 +1,189 @@ +#ifndef GAMEVIEW_H +#define GAMEVIEW_H + +#include <vector> +#include <queue> +#include <deque> +#include <string> +#include "GameController.h" +#include "GameModel.h" +#include "gui/interface/Window.h" +#include "gui/interface/Point.h" +#include "gui/interface/Button.h" +#include "gui/interface/Slider.h" +#include "gui/interface/Textbox.h" +#include "ToolButton.h" +#include "Brush.h" +#include "simulation/Sample.h" + +using namespace std; + +enum DrawMode +{ + DrawPoints, DrawLine, DrawRect, DrawFill +}; + +enum SelectMode +{ + SelectNone, SelectStamp, SelectCopy, SelectCut, PlaceSave +}; + +class GameController; +class GameModel; +class GameView: public ui::Window +{ +private: + DrawMode drawMode; + + bool doScreenshot; + bool recording; + int screenshotIndex; + int recordingIndex; + + bool isMouseDown; + bool zoomEnabled; + bool zoomCursorFixed; + bool drawSnap; + bool shiftBehaviour; + bool ctrlBehaviour; + bool altBehaviour; + bool showHud; + bool showDebug; + bool wallBrush; + int introText; + int buttonTipShow; + std::string buttonTip; + std::string introTextMessage; + int toolIndex; + int currentSaveType; + Menu * lastMenu; + + int infoTipPresence; + std::string toolTip; + ui::Point toolTipPosition; + std::string infoTip; + int toolTipPresence; + + queue<ui::Point> pointQueue; + GameController * c; + Renderer * ren; + Brush * activeBrush; + //UI Elements + vector<ui::Button*> quickOptionButtons; + vector<ui::Button*> menuButtons; + vector<ToolButton*> toolButtons; + vector<ui::Component*> notificationComponents; + deque<string> logEntries; + float lastLogEntry; + ui::Button * scrollBar; + ui::Button * searchButton; + ui::Button * reloadButton; + ui::Button * saveSimulationButton; + ui::Button * downVoteButton; + ui::Button * upVoteButton; + ui::Button * tagSimulationButton; + ui::Button * clearSimButton; + ui::Button * loginButton; + ui::Button * simulationOptionButton; + ui::Button * displayModeButton; + ui::Button * pauseButton; + ui::Point currentMouse; + + ui::Button * colourPicker; + vector<ToolButton*> colourPresets; + + bool drawModeReset; + ui::Point drawPoint1; + ui::Point drawPoint2; + + SelectMode selectMode; + ui::Point selectPoint1; + ui::Point selectPoint2; + + ui::Point mousePosition; + + VideoBuffer * placeSaveThumb; + + SimulationSample sample; + + int lastOffset; + void setToolButtonOffset(int offset); + virtual ui::Point lineSnapCoords(ui::Point point1, ui::Point point2); + virtual ui::Point rectSnapCoords(ui::Point point1, ui::Point point2); + + void screenshot(); + void record(); + + void enableShiftBehaviour(); + void disableShiftBehaviour(); + void enableCtrlBehaviour(); + void disableCtrlBehaviour(); + void enableAltBehaviour(); + void disableAltBehaviour(); +public: + GameView(); + virtual ~GameView(); + + //Breaks MVC, but any other way is going to be more of a mess. + ui::Point GetMousePosition(); + void SetSample(SimulationSample sample); + void SetHudEnable(bool hudState); + bool CtrlBehaviour(){ return ctrlBehaviour; } + bool ShiftBehaviour(){ return shiftBehaviour; } + void ExitPrompt(); + void ToggleDebug(); + SelectMode GetSelectMode() { return selectMode; } + void BeginStampSelection(); + + void AttachController(GameController * _c){ c = _c; } + void NotifyRendererChanged(GameModel * sender); + void NotifySimulationChanged(GameModel * sender); + void NotifyPausedChanged(GameModel * sender); + void NotifySaveChanged(GameModel * sender); + void NotifyBrushChanged(GameModel * sender); + void NotifyMenuListChanged(GameModel * sender); + void NotifyToolListChanged(GameModel * sender); + void NotifyActiveToolsChanged(GameModel * sender); + void NotifyUserChanged(GameModel * sender); + void NotifyZoomChanged(GameModel * sender); + void NotifyColourSelectorVisibilityChanged(GameModel * sender); + void NotifyColourSelectorColourChanged(GameModel * sender); + void NotifyColourPresetsChanged(GameModel * sender); + void NotifyColourActivePresetChanged(GameModel * sender); + void NotifyPlaceSaveChanged(GameModel * sender); + void NotifyNotificationsChanged(GameModel * sender); + void NotifyLogChanged(GameModel * sender, string entry); + void NotifyToolTipChanged(GameModel * sender); + void NotifyInfoTipChanged(GameModel * sender); + void NotifyQuickOptionsChanged(GameModel * sender); + void NotifyLastToolChanged(GameModel * sender); + + + virtual void ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip); + + virtual void OnMouseMove(int x, int y, int dx, int dy); + virtual void OnMouseDown(int x, int y, unsigned button); + virtual void OnMouseUp(int x, int y, unsigned button); + virtual void OnMouseWheel(int x, int y, int d); + virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt); + virtual void OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt); + virtual void OnTick(float dt); + virtual void OnDraw(); + virtual void OnBlur(); + + //Top-level handlers, for Lua interface + virtual void DoDraw(); + virtual void DoMouseMove(int x, int y, int dx, int dy); + virtual void DoMouseDown(int x, int y, unsigned button); + virtual void DoMouseUp(int x, int y, unsigned button); + virtual void DoMouseWheel(int x, int y, int d); + virtual void DoKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt); + virtual void DoKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt); + + class MenuAction; + class ToolAction; + class OptionAction; + class OptionListener; +}; + +#endif // GAMEVIEW_H |
