X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2FPacket.hpp;h=4ff45df53b6e5a136310b57991087b3249d35549;hb=b5a83cd3df5083ed0cccfe4876143e788b3836f9;hp=af2f8727e3383669042365d2085c2f4c9a178083;hpb=4e3d9c23940c4511623b5bf328cbbe42641c4b30;p=blank.git diff --git a/src/net/Packet.hpp b/src/net/Packet.hpp index af2f872..4ff45df 100644 --- a/src/net/Packet.hpp +++ b/src/net/Packet.hpp @@ -21,12 +21,20 @@ struct Packet { std::uint16_t seq; std::uint16_t ack; std::uint32_t hist; + + // true if this contains an ack for given (remote) seq + bool Acks(std::uint16_t) const noexcept; + std::uint16_t AckBegin() const noexcept { return ack; } + std::uint16_t AckEnd() const noexcept { return ack + std::uint16_t(33); } }; struct Header { std::uint32_t tag; TControl ctrl; std::uint8_t type; + std::uint8_t reserved1; + std::uint8_t reserved2; + std::uint8_t reserved3; } header; static constexpr std::size_t MAX_PAYLOAD_LEN = 500 - sizeof(Header); @@ -83,6 +91,14 @@ struct Packet { static constexpr std::size_t MAX_LEN = 0; }; + 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 ReadPlayer(Entity &) const noexcept; + }; + template PayloadType As() {