Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-01 19:34:47 +0000
committerStijn Buys <ingar@osirion.org>2008-02-01 19:34:47 +0000
commit6c8446cddb37df732fc9e5fc21f98e31968ce634 (patch)
tree25515ae78969e2f0ef216a5cbef8a650b217e8f8 /src/core/gameinterface.h
parentf794b9ee52293cefd6ac73fdf0d2a01c5388f057 (diff)
interface cleanup
Diffstat (limited to 'src/core/gameinterface.h')
-rw-r--r--src/core/gameinterface.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/core/gameinterface.h b/src/core/gameinterface.h
new file mode 100644
index 0000000..3bd887c
--- /dev/null
+++ b/src/core/gameinterface.h
@@ -0,0 +1,44 @@
+/*
+ core/game.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 void 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 sec) = 0;
+
+ /// a pointer to the current game instance
+ static GameInterface * instance();
+
+private:
+ /// game singleton
+ static GameInterface *gameinterface_instance;
+};
+
+}
+
+#endif // __INCLUDED_CORE_GAMEINTERFACE_H__