38 lines
789 B
C++
38 lines
789 B
C++
#pragma once
|
|
|
|
#include <optional>
|
|
#include <td/protocol/command/Commands.h>
|
|
#include <td/protocol/packet/Packets.h>
|
|
|
|
namespace td {
|
|
namespace game {
|
|
|
|
class GameHistory {
|
|
private:
|
|
using HistorySizeType = std::uint16_t;
|
|
|
|
std::vector<std::optional<protocol::LockStep>> 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
|