#pragma once #include #include #include namespace td { namespace game { class GameHistory { private: using HistorySizeType = std::uint16_t; std::vector> m_History; HistorySizeType m_Cursor; public: GameHistory(); void SetLockStep(HistorySizeType a_Index, protocol::LockStep&& a_LockStep); const protocol::LockStep& GetLockStep(HistorySizeType a_Index) const; bool HasLockStep(HistorySizeType a_Index) const; const protocol::LockStep& GetNextStep(); bool HasNextStep() const; void FromPacket(td::protocol::pdata::LockSteps&& a_Steps); td::protocol::packets::LockSteps ToPacket(HistorySizeType a_StartIndex); }; } // namespace game } // namespace td