1 #ifndef NETWORKSERVER_HH |
1 #ifndef NETWORKSERVER_HH |
2 #define NETWORKSERVER_HH |
2 #define NETWORKSERVER_HH |
3 |
3 |
4 #include "Network.hh" |
4 #include "Network.hh" |
5 #include "GameState.hh" |
5 #include "GameState.hh" |
|
6 #include "NetworkTCP.hh" |
|
7 #include "NetworkUDP.hh" |
6 |
8 |
7 #include <list> |
9 #include <list> |
8 #include <map> |
10 #include <map> |
9 #include <ClanLib/core.h> |
11 #include <ClanLib/core.h> |
10 |
12 |
13 |
15 |
14 class NetworkServer : public NetworkCore { |
16 class NetworkServer : public NetworkCore { |
15 friend class NetworkServerPlayer; |
17 friend class NetworkServerPlayer; |
16 |
18 |
17 private: |
19 private: |
|
20 NetworkTCPServer tcp_server; |
|
21 NetworkUDP udp; |
|
22 |
18 uint16_t pid_pool; |
23 uint16_t pid_pool; |
19 |
24 |
20 public: |
25 std::map<NetworkAddress, NetworkServerPlayer*> players; |
21 std::map<CL_NetComputer, NetworkServerPlayer*> players; |
|
22 |
26 |
23 public: |
27 public: |
24 NetworkServer (GameState &state, const std::string &listen_port); |
28 NetworkServer (GameState &state, const NetworkAddress &listen_addr); |
25 |
29 |
26 private: |
30 private: |
27 void on_connect (CL_NetComputer &computer); |
31 void on_client (NetworkTCPTransport *client); |
28 void on_disconnect (CL_NetComputer &computer); |
32 void on_packet_udp (const NetworkPacket &pkt, const NetworkAddress &src); |
29 |
|
30 |
|
31 }; |
33 }; |
32 |
34 |
33 class NetworkServerPlayer : public RemotePlayer { |
35 class NetworkServerPlayer : public RemotePlayer { |
34 private: |
36 private: |
35 NetworkServer &server; |
37 NetworkServer &server; |
36 CL_NetComputer &computer; |
38 NetworkTCPTransport *tcp; |
37 CL_NetObject_Server obj; |
|
38 |
39 |
39 CL_SlotContainer slots; |
40 CL_SlotContainer slots; |
40 |
41 |
41 uint16_t pid; |
42 uint16_t pid; |
42 |
43 |
43 public: |
44 public: |
44 NetworkServerPlayer (NetworkServer &server, CL_NetComputer &computer, uint16_t pid); |
45 NetworkServerPlayer (NetworkServer &server, NetworkTCPTransport *tcp, uint16_t pid); |
45 |
|
46 void disconnected (void); |
|
47 |
46 |
48 private: |
47 private: |
49 void on_move (CL_NetComputer &from, CL_NetPacket &pkt); |
48 void on_disconnected (void); |
|
49 void on_packet_tcp (const NetworkPacket &pkt); |
|
50 |
|
51 void on_move (const NetworkPacket &pkt); |
50 |
52 |
51 void send_position_update (void); |
53 void send_position_update (void); |
52 }; |
54 }; |
53 |
55 |
54 #endif |
56 #endif |