#include "../net/Client.hpp"
#include "../net/ConnectionHandler.hpp"
+#include <map>
#include <memory>
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;
+
+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;
int login_packet;
+ struct UpdateStatus {
+ std::uint16_t last_packet;
+ int last_update;
+ };
+ std::map<std::uint32_t, UpdateStatus> update_status;
+ IntervalTimer update_timer;
+
};
}