/* 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; } /// returns true if the game is running an interactive module inline bool interactive() { return true; } /*----- 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); /// localplayer sends a chat message to the public channel void say(std::string const &args); /// localplayer sends a private message to another player void private_message(std::string const &args); /*----- 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; float connection_frametime; }; inline GameConnection *connection() { return GameConnection::instance(); } } #endif // __INCLUDED_CORE_GAMECONNECTION_H__