25 plan.styles[
static_cast<std::size_t
>(square)] =
style;
36 const int square = *
inputs.selectedDeed;
40 plan.styles[
static_cast<std::size_t
>(square)] =
41 state.squares[
static_cast<std::size_t
>(square)].mortgaged
87 if (
bit == 0)
continue;
89 const auto&
property =
state.squares[
static_cast<std::size_t
>(square)];
138 std::array<data::DataId, rules::SquareCount>
desired{};
145 const auto index =
static_cast<std::size_t
>(square);
160 return std::unexpected(
loaded.error().detail);
166 playback.commands().pendingCount() >
169 return std::unexpected(
170 "sequence command queue cannot fit IBar property title transition");
173 std::vector<sequence::SequenceCommand> commands;
177 const auto index =
static_cast<std::size_t
>(square);
196 for (
auto& command : commands)
198 const auto queued = std::visit(
205 return std::unexpected(
206 "validated IBar property title command rejected");
216 int square,
bool mortgaged)
noexcept
222 const auto base = mortgaged
267 std::shared_ptr<const sequence::SequenceProgram> program;
272 return std::unexpected(
loaded.error());
273 program = std::move(*
loaded);
276 std::vector<sequence::SequenceCommand> commands;
290 if (commands.size() >
293 return std::unexpected(
294 "sequence command queue cannot fit IBar Buy/Auction popup transition");
297 for (
auto& command : commands)
299 const auto queued = std::visit(
306 return std::unexpected(
307 "validated IBar Buy/Auction popup command rejected");
361 if (checkedSquare_ == -1)
373 std::shared_ptr<const sequence::SequenceProgram> program;
378 return std::unexpected(
loaded.error());
379 program = std::move(*
loaded);
382 std::vector<sequence::SequenceCommand> commands;
396 if (commands.size() >
399 return std::unexpected(
400 "sequence command queue cannot fit IBar property hover transition");
403 for (
auto& command : commands)
405 const auto queued = std::visit(
412 return std::unexpected(
413 "validated IBar property hover command rejected");
decision::EconomicActionPlan plan
std::expected< void, std::string > sync(const rules::GameState &state, const PropertyTitlePlan &titles, int currentMouseOver, std::uint64_t tick, engine::SequencePlayback &playback)
std::expected< void, std::string > sync(const PropertyTitlePlan &plan, 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 bool isBoardVisible(Screen2D screen) noexcept
int propertyIndex(int square) noexcept
std::uint32_t PropertyMask
Rect propertyRect(int square) noexcept
PropertyMask propertyBit(int square) noexcept
int propertyBarOrder(int square) noexcept
constexpr std::uint16_t BuyAuctionPopupPriority
constexpr data::DataTag PropertyFullColourBaseTag
constexpr std::int32_t PropertyHoverX
constexpr data::DataTag PropertyMortgagedBaseTag
constexpr std::uint64_t PropertyHoverDelayTicks
data::DataId propertyTitleDataId(int square, PropertyTitleStyle style) noexcept
data::DataId propertyHoverDataId(int square, bool mortgaged) noexcept
PropertyTitlePlan planPropertyTitles(const rules::GameState &state, const PropertyTitleInputs &inputs) noexcept
constexpr std::int32_t BuyAuctionPopupXLeft
constexpr std::uint16_t PropertyBasePriority
constexpr data::DataTag PropertyLowColourBaseTag
constexpr std::int32_t BuyAuctionPopupXRight
constexpr data::DataTag PropertyHoverNormalBaseTag
constexpr std::int32_t BuyAuctionPopupY
constexpr std::uint16_t PropertyHoverPriority
constexpr std::int32_t BuyAuctionPopupXTrade
constexpr std::int32_t PropertyHoverY
constexpr data::DataTag PropertyHoverMortgagedBaseTag
constexpr PlayerNumber BankPlayer
constexpr std::size_t SquareCount
constexpr PlayerNumber MaxPlayers
constexpr PlayerNumber NobodyPlayer
MoveSequenceCommand makeMoveXY(data::DataId dataId, std::uint16_t priority, std::int32_t x, std::int32_t y) noexcept