summaryrefslogtreecommitdiff
path: root/includes/interface/Engine.h
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-14 18:51:24 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-14 18:51:24 (GMT)
commit2c9295007a287dc01ff63fcf7b3da141f7474e37 (patch)
treee8065e920ca45686a40e41fd46513e13d46f47b0 /includes/interface/Engine.h
parentfc2f52099c0bbb2412046252bf7b5e4113bbe8e4 (diff)
downloadpowder-2c9295007a287dc01ff63fcf7b3da141f7474e37.zip
powder-2c9295007a287dc01ff63fcf7b3da141f7474e37.tar.gz
Various things, also IEF UI
Diffstat (limited to 'includes/interface/Engine.h')
-rw-r--r--includes/interface/Engine.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/includes/interface/Engine.h b/includes/interface/Engine.h
new file mode 100644
index 0000000..682a09d
--- /dev/null
+++ b/includes/interface/Engine.h
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <SDL/SDL.h>
+#include "Singleton.h"
+#include "Platform.h"
+#include "State.h"
+#include "Graphics.h"
+
+namespace ui
+{
+ class State;
+
+ /* class Engine
+ *
+ * Controls the User Interface.
+ * Send user inputs to the Engine and the appropriate controls and components will interact.
+ */
+ class Engine: public Singleton<Engine>
+ {
+ public:
+ Engine();
+ ~Engine();
+
+ void onMouseMove(int x, int y);
+ void onMouseClick(int x, int y, unsigned button);
+ void onMouseUnclick(int x, int y, unsigned button);
+ void onMouseWheel(int x, int y, int delta);
+ void onKeyPress(int key, bool shift, bool ctrl, bool alt);
+ void onKeyRelease(int key, bool shift, bool ctrl, bool alt);
+ void onResize(int newWidth, int newHeight);
+ void onClose();
+
+ void Begin(int width, int height, SDL_Surface * surface);
+ inline bool Running() { return running_; }
+ void Exit();
+
+ void Tick(float dt);
+ void Draw();
+
+ inline int GetMouseX() { return mousex_; }
+ inline int GetMouseY() { return mousey_; }
+ inline int GetWidth() { return width_; }
+ inline int GetHeight() { return height_; }
+
+ inline void SetSize(int width, int height);
+
+ void SetState(State* state);
+ inline State* GetState() { return state_; }
+ Graphics * g;
+ private:
+ State* statequeued_;
+ State* state_;
+
+ bool running_;
+
+ int mousex_;
+ int mousey_;
+ int mousexp_;
+ int mouseyp_;
+ int width_;
+ int height_;
+ };
+
+}