]> git.localhorst.tv Git - blank.git/blob - client/MasterState.hpp
new gcc version
[blank.git] / client / MasterState.hpp
1 #ifndef BLANK_CLIENT_CLIENTSTATE_HPP_
2 #define BLANK_CLIENT_CLIENTSTATE_HPP_
3
4 #include "../app/State.hpp"
5 #include "../net/ConnectionHandler.hpp"
6
7 #include "Client.hpp"
8 #include "InitialState.hpp"
9 #include "InteractiveState.hpp"
10 #include "../app/Config.hpp"
11
12 #include <map>
13 #include <memory>
14
15
16 namespace blank {
17
18 class Environment;
19
20 namespace client {
21
22 class InteractiveState;
23
24 class MasterState
25 : public State
26 , public ConnectionHandler {
27
28 public:
29         MasterState(
30                 Environment &,
31                 Config &,
32                 const World::Config &
33         );
34
35         Client &GetClient() noexcept { return client; }
36         Environment &GetEnv() noexcept { return env; }
37
38         Config &GetConfig() noexcept { return config; }
39         const Config &GetConfig() const noexcept { return config; }
40
41         World::Config &GetWorldConf() noexcept { return world_conf; }
42         const World::Config &GetWorldConf() const noexcept { return world_conf; }
43
44         void Quit();
45
46         void OnEnter() override;
47
48         void Handle(const SDL_Event &) override;
49         void Update(int dt) override;
50         void Render(Viewport &) override;
51
52         void OnPacketLost(std::uint16_t) override;
53         void OnTimeout() override;
54
55         void On(const Packet::Join &) override;
56         void On(const Packet::Part &) override;
57         void On(const Packet::SpawnEntity &) override;
58         void On(const Packet::DespawnEntity &) override;
59         void On(const Packet::EntityUpdate &) override;
60         void On(const Packet::PlayerCorrection &) override;
61         void On(const Packet::ChunkBegin &) override;
62         void On(const Packet::ChunkData &) override;
63         void On(const Packet::BlockUpdate &) override;
64         void On(const Packet::Message &) override;
65
66 private:
67         Environment &env;
68         Config &config;
69         World::Config world_conf;
70         std::unique_ptr<InteractiveState> state;
71         Client client;
72
73         InitialState init_state;
74
75         int login_packet;
76
77 };
78
79 }
80 }
81
82 #endif