7 #include <list> |
7 #include <list> |
8 #include <map> |
8 #include <map> |
9 #include <ClanLib/core.h> |
9 #include <ClanLib/core.h> |
10 |
10 |
11 // forward-declare |
11 // forward-declare |
12 class NetworkServerClient; |
12 class NetworkServerPlayer; |
13 |
13 |
14 class NetworkServer : public NetworkCore { |
14 class NetworkServer : public NetworkCore { |
|
15 friend class NetworkServerPlayer; |
|
16 |
|
17 private: |
|
18 uint16_t pid_pool; |
|
19 |
|
20 public: |
|
21 std::map<CL_NetComputer, NetworkServerPlayer*> players; |
|
22 |
15 public: |
23 public: |
16 NetworkServer (GameState &state, const std::string &listen_port); |
24 NetworkServer (GameState &state, const std::string &listen_port); |
17 |
25 |
18 private: |
26 private: |
19 void on_connect (CL_NetComputer &computer); |
27 void on_connect (CL_NetComputer &computer); |
20 void on_disconnect (CL_NetComputer &computer); |
28 void on_disconnect (CL_NetComputer &computer); |
|
29 |
|
30 |
21 }; |
31 }; |
22 |
32 |
23 class NetworkServerClient { |
33 class NetworkServerPlayer : public RemotePlayer { |
24 private: |
34 private: |
25 NetworkServer &server; |
35 NetworkServer &server; |
|
36 CL_NetComputer &computer; |
|
37 CL_NetObject_Server netobj; |
|
38 |
|
39 CL_SlotContainer slots; |
|
40 |
|
41 uint16_t pid; |
26 |
42 |
|
43 public: |
|
44 NetworkServerPlayer (NetworkServer &server, CL_NetComputer &computer, uint16_t pid); |
|
45 |
|
46 void disconnected (void); |
|
47 |
27 private: |
48 private: |
28 NetworkServerClient (NetworkServer &server); |
49 void on_move (CL_NetComputer &from, CL_NetPacket &pkt); |
|
50 |
|
51 void send_position_update (void); |
29 }; |
52 }; |
30 |
53 |
31 #endif |
54 #endif |