#ifndef OPENGLCONTEXT_H__ #define OPENGLCONTEXT_H__ #include #include #include "define.h" #include "texture.h" // Documentation de SFML: http://www.sfml-dev.org/documentation/index-fr.php class OpenglContext { public: enum MOUSE_BUTTON { MOUSE_BUTTON_NONE = 0x00, MOUSE_BUTTON_LEFT = 0x01, MOUSE_BUTTON_MIDDLE = 0x02, MOUSE_BUTTON_RIGHT = 0x04, MOUSE_BUTTON_WHEEL_UP = 0x08, MOUSE_BUTTON_WHEEL_DOWN = 0x10 }; OpenglContext(); virtual ~OpenglContext(); virtual void Init() = 0; virtual void DeInit() = 0; virtual void LoadResource() = 0; virtual void UnloadResource() = 0; virtual void Render(float elapsedTime) = 0; virtual void KeyPressEvent(unsigned char key) = 0; virtual void KeyReleaseEvent(unsigned char key) = 0; virtual void MouseMoveEvent(int x, int y) = 0; virtual void MousePressEvent(const MOUSE_BUTTON &button, int x, int y) = 0; virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y) = 0; virtual void RenderSplashScreen(); bool Start(const std::string& title, int width, int height, bool fullscreen); bool Stop(); int Width() const; int Height() const; void SetMaxFps(int maxFps); int GetMaxFps() const; void SetFullscreen(bool fullscreen); bool IsFullscreen() const; protected: void CenterMouse(); void MakeRelativeToCenter(int& x, int& y) const; void ShowCursor(); void HideCursor(); void ShowCrossCursor() const; private: void InitWindow(int width, int height); MOUSE_BUTTON ConvertMouseButton(sf::Mouse::Button button) const; private: sf::Window m_app; int m_maxFps; bool m_fullscreen; std::string m_title; float m_lastFrameTime; Texture m_textureSplash; }; #endif // OPENGLCONTEXT_H__