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-19 17:37:01 +0000
committerStijn Buys <ingar@osirion.org>2008-02-19 17:37:01 +0000
commit41ad1e4c9e2a70d0a8811f4b035f0d3018045e61 (patch)
treeabe7fa4544c22ba0cfa6375fd56f2e596f1bf626 /src/core/gameconnection.h
parent7daaf66869b7b9f85f71b1aa5e9a1b4c40710f33 (diff)
client-to-server connection
Diffstat (limited to 'src/core/gameconnection.h')
-rw-r--r--src/core/gameconnection.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/core/gameconnection.h b/src/core/gameconnection.h
new file mode 100644
index 0000000..c91ef22
--- /dev/null
+++ b/src/core/gameconnection.h
@@ -0,0 +1,59 @@
+/*
+ core/gameconnection.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_GAMECONNECTION_H__
+#define __INCLUDED_CORE_GAMECONNECTION_H__
+
+#include "core/gameinterface.h"
+#include "core/netconnection.h"
+
+namespace core
+{
+
+/// a connection to a remote game
+class GameConnection : public GameInterface
+{
+public:
+ GameConnection(std::string const &connectionstr);
+ ~GameConnection();
+
+/*----- inspectors ------------------------------------------------ */
+
+ /// returns true if the game connection can run a time frime
+ inline bool running() { return connection_running; }
+
+ /// returns true if the game connection can not run a time frime
+ inline bool error() { return !connection_running; }
+
+/*----- mutators -------------------------------------------------- */
+
+ /// run a game connection time frame
+ void frame(float seconds);
+
+ /// forward a command line to the remote server
+ void forward(std::string const &cmdline);
+
+/*----- static ---------------------------------------------------- */
+
+ /// return the current game connection
+ static inline GameConnection *instance() { return connection_instance; }
+
+protected:
+ /// abort runing
+ void abort();
+
+private:
+ bool connection_running;
+ static GameConnection *connection_instance;
+ NetConnection *connection_network;
+
+};
+
+inline GameConnection *connection() { return GameConnection::instance(); }
+
+}
+
+#endif // __INCLUDED_CORE_GAMECONNECTION_H__