Mercurial > fife-parpg
diff engine/core/controller/engine.i @ 654:5d6b1820b953
* Added the ability to change screen modes on the fly. This works both in OpenGL and SDL modes.
* Added IEngineChangeListener so the client can update the cameras viewport if the screen mode has been changed. I chose to do it this way because the engine has no way to know which camera it should update. It will be up to the client to do it.
* The cursor surface is now correctly freed when exiting.
* Added DeviceCaps::getNearestScreenMode() for the client to request a supported screen mode.
closes[t:315]
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 21 Oct 2010 18:50:50 +0000 |
parents | 01acc9fc35ea |
children | e3140f01749d |
line wrap: on
line diff
--- a/engine/core/controller/engine.i Fri Oct 15 18:54:34 2010 +0000 +++ b/engine/core/controller/engine.i Thu Oct 21 18:50:50 2010 +0000 @@ -41,6 +41,7 @@ class RendererBase; class DeviceCaps; class ScreenMode; + class Image; class EngineSettings { public: @@ -85,6 +86,13 @@ EngineSettings(); }; + %feature("director") IEngineChangeListener; + class IEngineChangeListener { + public: + virtual ~IEngineChangeListener() {} + virtual void onScreenModeChanged(const ScreenMode& newmode) = 0; + }; + class Engine { public: Engine(); @@ -96,6 +104,8 @@ EngineSettings& getSettings(); const DeviceCaps& getDeviceCaps() const; + Image* changeScreenMode(const ScreenMode& mode); + void init(); void destroy(); @@ -112,5 +122,8 @@ GuiFont* getDefaultFont(); VFS* getVFS(); Cursor* getCursor(); + + void addChangeListener(IEngineChangeListener* listener); + void removeChangeListener(IEngineChangeListener* listener); }; }