/* 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); virtual ~GameConnection(); /*----- mutators -------------------------------------------------- */ /// run a game connection time frame virtual void frame(unsigned long timestamp); /// forward a command line to the remote server void forward(std::string const &cmdline); /// forward a remote console command void rcon(std::string const &cmdline); /// localplayer sends a chat message to the global chat channel void shout(std::string const &args); /// localplayer sends a chat message to the local chat channel void say(std::string const &args); /// localplayer sends a private message to another player void private_message(std::string const &args); /// request info record with id virtual Info *request_info(const unsigned int id); /// request inventory for entity with id virtual Inventory *request_inventory(Entity *entity); /*----- static ---------------------------------------------------- */ /// return the current game connection static inline GameConnection *instance() { return connection_instance; } private: unsigned long connection_netframe; // last network frame timestamp NetConnection *connection_network; static GameConnection *connection_instance; }; inline GameConnection *connection() { return GameConnection::instance(); } } #endif // __INCLUDED_CORE_GAMECONNECTION_H__