X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2FMasterState.hpp;h=ff1769fdecf6f4db622b3c5c6579be5222210c85;hb=ae5a7e7d8517fac406a88e9bf98fd3d5bb1728b9;hp=6bdb671836a9193a54068b67132a1284dad0e4c4;hpb=37e056bafe9603981d6bcb205e1472e063c94700;p=blank.git diff --git a/src/client/MasterState.hpp b/src/client/MasterState.hpp index 6bdb671..ff1769f 100644 --- a/src/client/MasterState.hpp +++ b/src/client/MasterState.hpp @@ -7,6 +7,7 @@ #include "../net/Client.hpp" #include "../net/ConnectionHandler.hpp" +#include #include @@ -51,6 +52,19 @@ public: void On(const Packet::Join &) override; void On(const Packet::Part &) override; + void On(const Packet::SpawnEntity &) override; + void On(const Packet::DespawnEntity &) override; + void On(const Packet::EntityUpdate &) override; + void On(const Packet::PlayerCorrection &) override; + void On(const Packet::ChunkBegin &) override; + void On(const Packet::ChunkData &) override; + +private: + /// flag entity as updated by given packet + /// returns false if the update should be ignored + bool UpdateEntity(std::uint32_t id, std::uint16_t seq); + /// drop update information or given entity + void ClearEntity(std::uint32_t id); private: Environment &env; @@ -64,6 +78,13 @@ private: int login_packet; + struct UpdateStatus { + std::uint16_t last_packet; + int last_update; + }; + std::map update_status; + IntervalTimer update_timer; + }; }