Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/network/network_game_manager.h @ 9596

Last change on this file since 9596 was 9406, checked in by bensch, 18 years ago

orxonox/trunk: merged the proxy back

merged with commandsvn merge -r9346:HEAD https://svn.orxonox.net/orxonox/branches/proxy .

no conflicts

File size: 2.1 KB
Line 
1/*!
2 * @file entity_manager.h
3 *  Manages creation and destruction of entities
4 */
5
6#ifndef _NETWORK_GAME_MANGER
7#define _NETWORK_GAME_MANAGER
8
9/* include this file, it contains some default definitions */
10#include "netdefs.h"
11
12/* include base_object.h since all classes are derived from this one */
13#include "synchronizeable.h"
14#include "playable.h"
15#include "message_manager.h"
16
17
18class TiXmlElement;
19class PNode;
20
21typedef enum NetworkGameManagerProtocol {
22  NET_CREATE_ENTITY = 0,
23  NET_REMOVE_ENTITY,
24  NET_CREATE_ENTITY_LIST,
25  NET_REMOVE_ENTITY_LIST,
26  NET_REQUEST_CREATE,
27  NET_REQUEST_REMOVE,
28  NET_YOU_ARE_ENTITY,
29  NET_REQUEST_ENTITY_LIST,
30
31  NET_NUMBER
32};
33
34struct clientBuffer
35{
36  int length;
37  int maxLength;
38  byte * buffer;
39};
40
41/*!
42 * a class that can create and remove entities over the network
43 */
44class NetworkGameManager: public Synchronizeable
45{
46
47  public:
48    virtual ~NetworkGameManager();
49
50    static NetworkGameManager* NetworkGameManager::getInstance()
51    { if (!NetworkGameManager::singletonRef) NetworkGameManager::singletonRef = new NetworkGameManager(); return NetworkGameManager::singletonRef; }
52
53
54    bool signalNewPlayer( int userId );
55    bool signalLeftPlayer( int userID );
56
57    void prefereTeam( int teamId );
58
59
60    inline void setGameState( int gameState ){ this->gameState = gameState; }
61    inline int getGameState(){ return this->gameState; }
62
63    void tick( float ds );
64
65    void removeSynchronizeable( int uniqueId );
66    void sendChatMessage( const std::string & message, int messageType );
67
68
69  private:
70    NetworkGameManager();
71
72    static bool delSynchronizeableHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
73    static bool preferedTeamHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
74    static bool chatMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
75
76    void setPreferedTeam( int userId, int teamId );
77
78
79  private:
80    static NetworkGameManager*    singletonRef;
81
82    int                           gameState;
83
84    std::list<Playable*>          playablesToDelete;
85};
86
87#endif /*_ENTITY_MANGER*/
Note: See TracBrowser for help on using the repository browser.