]> git.localhorst.tv Git - blank.git/blob - src/server/Server.hpp
cf4fc0433e889f5966bee3806eee1427d57c521c
[blank.git] / src / server / Server.hpp
1 #ifndef BLANK_SERVER_SERVER_HPP
2 #define BLANK_SERVER_SERVER_HPP
3
4 #include "../app/Config.hpp"
5
6 #include <list>
7 #include <SDL_net.h>
8
9
10 namespace blank {
11
12 class CompositeModel;
13 class World;
14
15 namespace server {
16
17 class ClientConnection;
18
19 class Server {
20
21 public:
22         Server(const Config::Network &, World &);
23         ~Server();
24
25         void Handle();
26
27         void Update(int dt);
28
29         UDPsocket &GetSocket() noexcept { return serv_sock; }
30         UDPpacket &GetPacket() noexcept { return serv_pack; }
31
32         World &GetWorld() noexcept { return world; }
33
34         void SetPlayerModel(const CompositeModel &) noexcept;
35         bool HasPlayerModel() const noexcept;
36         const CompositeModel &GetPlayerModel() const noexcept;
37
38 private:
39         void HandlePacket(const UDPpacket &);
40
41         ClientConnection &GetClient(const IPaddress &);
42
43 private:
44         UDPsocket serv_sock;
45         UDPpacket serv_pack;
46         std::list<ClientConnection> clients;
47
48         World &world;
49         const CompositeModel *player_model;
50
51 };
52
53 }
54 }
55
56 #endif