Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/network/src/lib/network/network_game_manager.h @ 6190

Last change on this file since 6190 was 6190, checked in by rennerc, 18 years ago

synchronizeable: added sender parameter to writeBytes
network_stream: creates now a network_game_manager
network_game_manager: implemented some functions

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
15
16
17/**
18 * protocol definition
19 *
20 *  CREATE_ENTITY:       CLASS_ID, UNIQUE_ID, OWNER
21 *  REMOVE_ENTITY:       UNIQUE_ID
22 *
23 *  CREATE_ENTITY_LIST:  NUMBER, [CLASS_ID, UNIQUE_ID, OWNER][0..NUMBER]
24 *  REMOVE_ENTITY_LIST:  NUMBER, [UNIQUE_ID][0..NUMBER]
25 *
26 *  REQUEST_CREATE:      CLASS_ID
27 *  REQUEST_REMOVE:      UNIQUE_ID
28 *
29 *  REQUEST_CREATE_LIST: NUMBER, [CLASS_ID][0..NUMBER]
30 *  REQUEST_CREATE_LIST: NUMBER, [UNIQUE_ID][0..NUMBER]
31 *
32 *  REQUEST_SYNC:        UNIQUE_ID
33 *  REQUEST_SYNC_LIST:   NUMBER, [UNIQUE_ID][0..NUMBER]
34 *
35 *
36 */
37
38typedef enum NetworkGameManagerProtocol{
39  CREATE_ENTITY = 0,
40  REMOVE_ENTITY,
41  REQUEST_CREATE,
42  REQUEST_SYNC
43};
44
45struct clientBuffer
46{
47  int length;
48  int maxLength;
49  byte * buffer;
50};
51
52/*!
53 * a class that can create and remove entities
54 */
55class NetworkGameManager: public Synchronizeable
56{
57  public:
58    NetworkGameManager();
59    ~NetworkGameManager();
60
61    virtual void writeBytes(const byte* data, int length, int sender);
62    virtual int readBytes(byte* data, int maxLength, int * reciever);
63    virtual void writeDebug() const;
64    virtual void readDebug() const;
65
66    void createEntity(int classID);
67    void removeEntity(int uniqueID);
68
69    void sync(int uniqueID);
70
71    void sendEntityList(int userID);
72
73  private:
74    void requestCreateEntity(int classID);
75    void executeCreateEntity(int classID);
76
77    void requestRemoveEntity(int uniqueID);
78    void executeRemoveEntity(int uniqueID);
79
80    void doCreateEntity(ClassID classID, int uniqueID, int owner);
81    void doRemoveEntity(int uniqueID);
82    void doRequestSync(int uniqueID, int userID);
83
84    bool canCreateEntity(int classID);
85
86    void resizeBufferVector(int n);
87
88  private:
89    std::vector<clientBuffer>     inBuffer;
90    std::vector<clientBuffer>     outBuffer;
91};
92
93#endif /*_ENTITY_MANGER*/
Note: See TracBrowser for help on using the repository browser.