Mercurial > fife-parpg
view engine/core/controller/engine.h @ 287:fdb1e98fd8b6
* Create an autorelease pool, so autoreleased SDL objects don't leak (Mac OS X specific issue)
* Patch by nschum
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 21 Jun 2009 15:43:12 +0000 |
parents | a9c4b895ed02 |
children | 64738befdf3b |
line wrap: on
line source
/*************************************************************************** * Copyright (C) 2005-2008 by the FIFE team * * http://www.fifengine.de * * This file is part of FIFE. * * * * FIFE is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ #ifndef FIFE_ENGINE_H #define FIFE_ENGINE_H // Standard C++ library includes #include <map> #include <string> #include <vector> // Platform specific includes #ifdef USE_COCOA #include <objc/runtime.h> #endif // 3rd party library includes #include <SDL.h> // FIFE includes // These includes are split up in two parts, separated by one empty line // First block: files included from the FIFE root src directory // Second block: files included from the same folder #include "enginesettings.h" namespace gcn { class Graphics; } namespace FIFE { class SoundManager; class RenderBackend; class GUIManager; class VFS; class VFSSourceFactory; class EventManager; class TimeManager; class ImagePool; class AnimationPool; class View; class Model; class LogManager; class GuiFont; class Cursor; class SoundClipPool; /** Engine acts as a controller to the whole system * Responsibilities of the engine are: * - Construct and initialize engine internals * - Clean-up when the program ends * - Act as an entry point to the engine subsystems */ class Engine { public: /** Constructor */ Engine(); /** Destructor */ virtual ~Engine(); /** Gets settings class for engine */ EngineSettings& getSettings(); /** Initializes the engine */ void init(); /** Explicit destruction of engine */ void destroy(); /** Initializes the continuous processing of the engine * Call this only once in your program */ void initializePumping(); /** Finalizes the continuous processing of the engine * Call this only once in your program, after you have called * initializePumping + (pump() * N times) */ void finalizePumping(); /** Runs one cycle for the engine */ void pump(); /** Provides access point to the SoundManager */ SoundManager* getSoundManager() { return m_soundmanager; } /** Provides access point to the EventManager */ EventManager* getEventManager() { return m_eventmanager; } /** Provides access point to the TimeManager */ TimeManager* getTimeManager() { return m_timemanager; } /** Provides access point to the GuiManager */ GUIManager* getGuiManager() { return m_guimanager; } /** Provides access point to the ImagePool */ ImagePool* getImagePool() { return m_imagepool; } /** Provides access point to the AnimationPool */ AnimationPool* getAnimationPool() { return m_animpool; } /** Provides access point to the SoundClipPool */ SoundClipPool* getSoundClipPool() { return m_soundclippool; } /** Provides access point to the RenderBackend */ RenderBackend* getRenderBackend() { return m_renderbackend; } /** Provides access point to the Model */ Model* getModel() { return m_model; } /** Provides access point to the View */ View* getView() { return m_view; } /** Provides access point to the LogManager */ LogManager* getLogManager() { return m_logmanager; } /** Returns default font used in the engine */ GuiFont* getDefaultFont() { return m_defaultfont; } /** Provides access point to the VFS */ VFS* getVFS() { return m_vfs; } /** Returns cursor used in the engine */ Cursor* getCursor() { return m_cursor; } private: void preInit(); RenderBackend* m_renderbackend; GUIManager* m_guimanager; EventManager* m_eventmanager; SoundManager* m_soundmanager; TimeManager* m_timemanager; ImagePool* m_imagepool; AnimationPool* m_animpool; SoundClipPool* m_soundclippool; VFS* m_vfs; Model* m_model; gcn::Graphics* m_gui_graphics; View* m_view; LogManager* m_logmanager; GuiFont* m_defaultfont; Cursor* m_cursor; bool m_destroyed; EngineSettings m_settings; #ifdef USE_COCOA objc_object *m_autoreleasePool; #endif }; }//FIFE #endif