/*! * @file entity_manager.h * Manages creation and destruction of entities */ #ifndef _NETWORK_GAME_MANGER #define _NETWORK_GAME_MANAGER /* include this file, it contains some default definitions */ #include "netdefs.h" /* include base_object.h since all classes are derived from this one */ #include "synchronizeable.h" #include "playable.h" #include "message_manager.h" class TiXmlElement; class PNode; struct clientBuffer { int length; int maxLength; byte * buffer; }; /*! * a class that can create and remove entities over the network */ class NetworkGameManager: public Synchronizeable { ObjectListDeclaration(NetworkGameManager); public: virtual ~NetworkGameManager(); static NetworkGameManager* getInstance() { if (!NetworkGameManager::singletonRef) NetworkGameManager::singletonRef = new NetworkGameManager(); return NetworkGameManager::singletonRef; } bool signalNewPlayer( int userId ); bool signalLeftPlayer( int userID ); void prefereTeam( int teamId ); inline void setGameState( int gameState ){ this->gameState = gameState; } inline int getGameState(){ return this->gameState; } void tick( float ds ); void removeSynchronizeable( int uniqueId ); void sendChatMessage( const std::string & message, int messageType ); private: NetworkGameManager(); static bool delSynchronizeableHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId ); static bool preferedTeamHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId ); static bool chatMessageHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId ); void setPreferedTeam( int userId, int teamId ); private: static NetworkGameManager* singletonRef; int gameState; std::list playablesToDelete; }; #endif /*_ENTITY_MANGER*/