#pragma once #include #include #include #include #include namespace scwx { namespace wsr88d { namespace rpg { class LinkedVectorPacketImpl; class LinkedVectorPacket : public Packet { public: explicit LinkedVectorPacket(); ~LinkedVectorPacket(); LinkedVectorPacket(const LinkedVectorPacket&) = delete; LinkedVectorPacket& operator=(const LinkedVectorPacket&) = delete; LinkedVectorPacket(LinkedVectorPacket&&) noexcept; LinkedVectorPacket& operator=(LinkedVectorPacket&&) noexcept; std::uint16_t packet_code() const override; std::uint16_t length_of_block() const; std::optional value_of_vector() const; std::int16_t start_i() const; std::int16_t start_j() const; std::vector end_i() const; std::vector end_j() const; units::kilometers start_i_km() const; units::kilometers start_j_km() const; std::vector> end_i_km() const; std::vector> end_j_km() const; std::size_t data_size() const override; bool Parse(std::istream& is) override; static std::shared_ptr Create(std::istream& is); private: std::unique_ptr p; }; } // namespace rpg } // namespace wsr88d } // namespace scwx