/* 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__ #include "core/player.h" namespace core { /// broadcast a network message to all players void message_broadcast(std::string const & message, int ignoreplayer=-1); /// send a message to a player void message_send(Player &player, std::string const & message); /// abstract interface from the core to the game-specific code class GameInterface { public: /// create a new game GameInterface(const char *gamename = 0); /// destroy the game virtual ~GameInterface(); /// a pointer to the current game instance static GameInterface * instance(); /// true if the game is ready and running bool connected; /// run one frame of the game /// @param sec time since the previous frame, in seconds virtual void frame(float seconds) = 0; /// initialize the game virtual bool init() = 0; /// shutdown the game virtual void shutdown() = 0; /// is called when a player connects virtual void player_connect(Player *player) = 0; /// is called when a player disconnects virtual void player_disconnect(Player *player) = 0; static GameInterface *gameinterface_instance; /// the name of the game std::string const & name(); private: std::string game_name; }; /// pointer to the current GameInterface GameInterface *game(); } #endif // __INCLUDED_CORE_GAMEINTERFACE_H__