9 std::expected<data::DataId, std::string>
15 state.currentPlayer >=
state.numberOfPlayers ||
24 return std::unexpected(
25 "current IBar player token is outside the legacy token range");
42 return std::unexpected(
resolved.error());
51 std::shared_ptr<const sequence::SequenceProgram> program;
58 return std::unexpected(
loaded.error().detail);
60 program = std::move(*
loaded);
63 std::vector<sequence::SequenceCommand> commands;
86 return std::unexpected(
87 "sequence command queue cannot fit current IBar player transition");
90 for (
auto& command : commands)
92 const auto queued = std::visit(
101 return std::unexpected(
102 "validated current IBar player command rejected");
std::expected< void, std::string > sync(const rules::GameState &state, bool visible, engine::SequencePlayback &playback)
static constexpr std::size_t Capacity
static std::expected< std::shared_ptr< const SequenceProgram >, RuntimeError > load(const data::DataSource &source, data::DataId id, std::size_t offset=0, DescriptionLimits limits={})
constexpr DataId EmptyDataId
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
constexpr std::int32_t CurrentPlayerTokenY
constexpr std::uint8_t LoopToBeginning
std::expected< data::DataId, std::string > desiredCurrentPlayerToken(const rules::GameState &state, bool visible)
constexpr std::uint16_t CurrentPlayerTokenPriority
constexpr std::int32_t CurrentPlayerTokenX
constexpr data::DataTag CurrentPlayerTokenBaseTag
constexpr std::size_t MaxTokens
constexpr PlayerNumber MaxPlayers
MoveSequenceCommand makeMoveXY(data::DataId dataId, std::uint16_t priority, std::int32_t x, std::int32_t y) noexcept
std::array< PlayerDisplay, rules::MaxPlayers > players