X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2FChunkReceiver.hpp;h=d682d1e7f2b9251ecdaf2a81e583f2c44fbf5631;hb=e5caf98d970fe569fd8484dd0d6ea738f8251ae4;hp=74a03a74318f4fd9b75defb779c1a7d5a5da3fb5;hpb=8ae45b6555d55f301f83daf8c1337d332d8305ab;p=blank.git diff --git a/src/client/ChunkReceiver.hpp b/src/client/ChunkReceiver.hpp index 74a03a7..d682d1e 100644 --- a/src/client/ChunkReceiver.hpp +++ b/src/client/ChunkReceiver.hpp @@ -11,19 +11,28 @@ namespace blank { class ChunkStore; +class WorldSave; namespace client { class ChunkTransmission; +class Client; class ChunkReceiver { public: - explicit ChunkReceiver(ChunkStore &); + ChunkReceiver(Client &, ChunkStore &, const WorldSave &); ~ChunkReceiver(); void Update(int dt); + int ToLoad() const noexcept; + + void LoadOne(); + void LoadN(std::size_t n); + + void StoreN(std::size_t n); + void Handle(const Packet::ChunkBegin &); void Handle(const Packet::ChunkData &); @@ -31,10 +40,14 @@ private: ChunkTransmission &GetTransmission(std::uint32_t id); void Commit(ChunkTransmission &); + void ReRequest(ChunkTransmission &); + private: + Client &client; ChunkStore &store; + const WorldSave &save; std::list transmissions; - IntervalTimer timer; + CoarseTimer timer; };