X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=src%2Fnet%2FPacket.hpp;fp=src%2Fnet%2FPacket.hpp;h=bb6140d5952cef743c69fe4d2ff3365123491d7b;hb=51a0b19601cb4b044c7eee1782aa85fc3a399d33;hp=4ff45df53b6e5a136310b57991087b3249d35549;hpb=b5a83cd3df5083ed0cccfe4876143e788b3836f9;p=blank.git diff --git a/src/net/Packet.hpp b/src/net/Packet.hpp index 4ff45df..bb6140d 100644 --- a/src/net/Packet.hpp +++ b/src/net/Packet.hpp @@ -99,6 +99,40 @@ struct Packet { void ReadPlayer(Entity &) const noexcept; }; + struct SpawnEntity : public Payload { + static constexpr std::uint8_t TYPE = 5; + static constexpr std::size_t MAX_LEN = 128; + + void WriteEntity(const Entity &) noexcept; + void ReadEntityID(std::uint32_t &) const noexcept; + void ReadEntity(Entity &) const noexcept; + }; + + struct DespawnEntity : public Payload { + static constexpr std::uint8_t TYPE = 6; + static constexpr std::size_t MAX_LEN = 4; + + void WriteEntityID(std::uint32_t) noexcept; + void ReadEntityID(std::uint32_t &) const noexcept; + }; + + struct EntityUpdate : public Payload { + static constexpr std::uint8_t TYPE = 7; + static constexpr std::size_t MAX_LEN = 452; + + static constexpr std::uint32_t MAX_ENTITIES = 7; + static constexpr std::size_t GetSize(std::uint32_t num) noexcept { + return 4 + (num * 64); + } + + void WriteEntityCount(std::uint32_t) noexcept; + void ReadEntityCount(std::uint32_t &) const noexcept; + + void WriteEntity(const Entity &, std::uint32_t) noexcept; + void ReadEntityID(std::uint32_t &, std::uint32_t) const noexcept; + void ReadEntity(Entity &, std::uint32_t) const noexcept; + }; + template PayloadType As() {