12 using Objects = std::vector<DeedPlayback::Published>;
26 const auto base = mortgaged
32 const rules::GameState&
gameState,
int square,
33 const PlayerPlaybackInputs&
inputs)
noexcept
39 return bit != 0 && (
inputs.mortgageProperties &
bit) != 0;
41 return gameState.squares[
static_cast<std::size_t
>(square)].mortgaged;
52 const rules::GameState&
gameState,
int square,
58 return gameState.squares[
static_cast<std::size_t
>(square)].mortgaged;
62 const PlayerPlaybackInputs&
inputs)
66 inputs.iBarPlayerLocalHuman;
73 return std::unexpected(
"UDStats Deed sort references invalid square");
75 if (
state.activeSort == 3 &&
state.deedMetric[
rank] == 0)
continue;
77 const auto owner =
gameState.squares[
static_cast<std::size_t
>(square)].owner;
80 if (owner !=
inputs.iBarPlayer)
continue;
84 const auto id =
deedId(square,
87 return std::unexpected(
"UDStats Deed square has no deed sequence");
99 std::expected<std::vector<DeedPlayback::Published>, std::string>
120 if (
desired == current_)
return {};
122 std::shared_ptr<const sequence::SequenceProgram>>
programs;
123 for (
const auto&
object :
desired)
125 if (
programs.contains(
object.id))
continue;
129 return std::unexpected(
130 "UDStats Deed resource failed: " +
loaded.error().detail);
134 std::set<std::pair<data::DataId, std::uint16_t>>
stops;
135 for (
const auto&
object : current_)
136 stops.emplace(
object.id,
object.priority);
142 return std::unexpected(
143 "sequence command queue cannot fit UDStats Deed transition");
149 return std::unexpected(
"validated UDStats Deed stop rejected");
152 for (
const auto&
object :
desired)
157 return std::unexpected(
"validated UDStats Deed 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 EmptyDataId
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
int propertyIndex(int square) noexcept
PropertyMask propertyBit(int square) noexcept
constexpr std::size_t SquareCount
SequenceTransform moveXYTransform(std::int32_t x, std::int32_t y) noexcept
constexpr int DeedGridColumns
constexpr int DeedGridColumnStep
constexpr data::DataTag PlayerDeedMortgagedBaseTag
std::expected< std::vector< DeedPlayback::Published >, std::string > planDeedGrid(const State &state, const rules::GameState &gameState, const PlayerPlaybackInputs &inputs)
constexpr data::DataTag PlayerDeedNormalBaseTag
constexpr std::uint16_t DeedGridPriority
constexpr int DeedGridRowStep