]> git.localhorst.tv Git - blank.git/blob - src/server/Server.hpp
store players in world save
[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 #include "../world/WorldManipulator.hpp"
6
7 #include <list>
8 #include <SDL_net.h>
9
10
11 namespace blank {
12
13 class CompositeModel;
14 class World;
15 class WorldSave;
16
17 namespace server {
18
19 class ClientConnection;
20
21 class Server
22 : public WorldManipulator {
23
24 public:
25         Server(const Config::Network &, World &, const WorldSave &);
26         ~Server();
27
28         void Handle();
29
30         void Update(int dt);
31
32         UDPsocket &GetSocket() noexcept { return serv_sock; }
33         UDPpacket &GetPacket() noexcept { return serv_pack; }
34
35         World &GetWorld() noexcept { return world; }
36         const WorldSave &GetWorldSave() noexcept { return save; }
37
38         void SetPlayerModel(const CompositeModel &) noexcept;
39         bool HasPlayerModel() const noexcept;
40         const CompositeModel &GetPlayerModel() const noexcept;
41
42         void SetBlock(Chunk &, int, const Block &) override;
43
44 private:
45         void HandlePacket(const UDPpacket &);
46
47         ClientConnection &GetClient(const IPaddress &);
48
49 private:
50         UDPsocket serv_sock;
51         UDPpacket serv_pack;
52         std::list<ClientConnection> clients;
53
54         World &world;
55         const WorldSave &save;
56         const CompositeModel *player_model;
57
58 };
59
60 }
61 }
62
63 #endif