/* core/gameinterface.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CORE_GAMEINTERFACE_H__ #define __INCLUDED_CORE_GAMEINTERFACE_H__ namespace core { /// abstract interface from the core to the game-specific code /** The real game class has to derive from this class */ class GameInterface { public: /// create a new game singleton GameInterface(); /// destroy the game singleton virtual ~GameInterface(); /// initialize the game virtual bool init() = 0; /// shutdown the game virtual void shutdown() = 0; /// run one frame of the game /** @param sec time since the previous frame, in seconds */ virtual void frame (float seconds) = 0; /// a pointer to the current game instance static GameInterface * instance(); /// true if the game is ready and running bool connected; /// time the game has been running, in seconds float current_time; private: static GameInterface *gameinterface_instance; }; } #endif // __INCLUDED_CORE_GAMEINTERFACE_H__