]> git.localhorst.tv Git - blank.git/blobdiff - src/net/Packet.hpp
also tell connection handlers about ack'd packets
[blank.git] / src / net / Packet.hpp
index af2f8727e3383669042365d2085c2f4c9a178083..4ff45df53b6e5a136310b57991087b3249d35549 100644 (file)
@@ -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<class PayloadType>
        PayloadType As() {