X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2FPacket.hpp;h=7b9b69e447289efbd2831503f5e3ea2689ce64e4;hb=3a487f44c26f9bb9d1a1c831406b6497b2b3b425;hp=09db0dfd1b0ceb4c69d23eae752d58af8f55a10d;hpb=81337cf6dac779222131b5e2843a11ac898bb495;p=blank.git diff --git a/src/net/Packet.hpp b/src/net/Packet.hpp index 09db0df..7b9b69e 100644 --- a/src/net/Packet.hpp +++ b/src/net/Packet.hpp @@ -10,6 +10,7 @@ namespace blank { +class Block; class Entity; class EntityState; @@ -107,10 +108,20 @@ struct Packet { struct PlayerUpdate : public Payload { static constexpr std::uint8_t TYPE = 4; - static constexpr std::size_t MAX_LEN = 64; - - void WritePlayer(const Entity &) noexcept; - void ReadPlayerState(EntityState &) const noexcept; + static constexpr std::size_t MAX_LEN = 76; + + void WritePredictedState(const EntityState &) noexcept; + void ReadPredictedState(EntityState &) const noexcept; + void WriteMovement(const glm::vec3 &) noexcept; + void ReadMovement(glm::vec3 &) const noexcept; + void WritePitch(float) noexcept; + void ReadPitch(float &) const noexcept; + void WriteYaw(float) noexcept; + void ReadYaw(float &) const noexcept; + void WriteActions(std::uint8_t) noexcept; + void ReadActions(std::uint8_t &) const noexcept; + void WriteSlot(std::uint8_t) noexcept; + void ReadSlot(std::uint8_t &) const noexcept; }; struct SpawnEntity : public Payload { @@ -133,11 +144,11 @@ struct Packet { struct EntityUpdate : public Payload { static constexpr std::uint8_t TYPE = 7; - static constexpr std::size_t MAX_LEN = 452; + static constexpr std::size_t MAX_LEN = 480; static constexpr std::uint32_t MAX_ENTITIES = 7; static constexpr std::size_t GetSize(std::uint32_t num) noexcept { - return 4 + (num * 64); + return 4 + (num * 68); } void WriteEntityCount(std::uint32_t) noexcept; @@ -187,6 +198,26 @@ struct Packet { void ReadData(std::uint8_t *, std::size_t maxlen) const noexcept; }; + struct BlockUpdate : public Payload { + static constexpr std::uint8_t TYPE = 11; + static constexpr std::size_t MAX_LEN = 484; + + static constexpr std::uint32_t MAX_BLOCKS = 78; + static constexpr std::size_t GetSize(std::uint32_t num) noexcept { + return 16 + (num * 6); + } + + void WriteChunkCoords(const glm::ivec3 &) noexcept; + void ReadChunkCoords(glm::ivec3 &) const noexcept; + void WriteBlockCount(std::uint32_t) noexcept; + void ReadBlockCount(std::uint32_t &) const noexcept; + + void WriteIndex(std::uint16_t, std::uint32_t) noexcept; + void ReadIndex(std::uint16_t &, std::uint32_t) const noexcept; + void WriteBlock(const Block &, std::uint32_t) noexcept; + void ReadBlock(Block &, std::uint32_t) const noexcept; + }; + template PayloadType As() {