12 using Objects = std::vector<DeedBarPlayback::Published>;
21 const PlayerPlaybackInputs&
inputs)
25 if (!
grid)
return std::unexpected(
grid.error());
26 for (
const auto& item : *
grid)
28 if (
state.activeSort != 1)
37 static_cast<std::size_t
>(item.square)].owner;
45 return std::unexpected(
"UDStats Deed owner colour is out of range");
71 if (
desired == current_)
return {};
74 std::shared_ptr<const sequence::SequenceProgram>>
programs;
75 for (
const auto&
object :
desired)
77 if (
programs.contains(
object.id))
continue;
81 return std::unexpected(
82 "UDStats Deed owner bar resource failed: " +
loaded.error().detail);
86 std::set<std::pair<data::DataId, std::uint16_t>>
stops;
87 for (
const auto&
object : current_)
88 stops.emplace(
object.id,
object.priority);
94 return std::unexpected(
95 "sequence command queue cannot fit UDStats Deed owner bars");
101 return std::unexpected(
"validated UDStats Deed owner-bar stop rejected");
104 for (
const auto&
object :
desired)
109 return std::unexpected(
"validated UDStats Deed owner-bar start rejected");
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={})
std::expected< void, std::string > sync(const State &state, const rules::GameState &gameState, const PlayerPlaybackInputs &inputs, display::Screen2D desiredView, engine::SequencePlayback &playback)
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
constexpr std::size_t MaxPlayerColours
constexpr PlayerNumber MaxPlayers
SequenceTransform moveXYTransform(std::int32_t x, std::int32_t y) noexcept
constexpr int DeedOwnerBarOffsetX
constexpr std::uint16_t DeedOwnerBarPriority
constexpr int DeedOwnerBarOffsetY
std::expected< std::vector< DeedPlayback::Published >, std::string > planDeedGrid(const State &state, const rules::GameState &gameState, const PlayerPlaybackInputs &inputs)
constexpr data::DataTag DeedOwnerBarBaseTag