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