166 consumedPressedButton_.reset();
170 return std::unexpected(
resolved.error());
174 if (
desired != currentBackdrop_)
176 std::shared_ptr<const sequence::SequenceProgram> program;
183 return std::unexpected(
loaded.error().detail);
185 program = std::move(*
loaded);
188 std::vector<sequence::SequenceCommand> commands;
203 if (commands.size() >
207 return std::unexpected(
208 "sequence command queue cannot fit IBar backdrop transition");
211 for (
auto& command : commands)
213 const auto queued = std::visit(
222 return std::unexpected(
223 "validated IBar backdrop command rejected");
318 const std::array requests{
330 inputs.raiseCashCanBankrupt,
inputs.aiButtonRemoteState},
336 ButtonRequest{&optionsButton_, visible && gameInProgress,
false},
341 inputs.aiButtonRemoteState},
349 inputs.aiButtonRemoteState},
357 for (
const auto& request : requests)
359 stable(request.button->visualState());
362 (trackedRuleMode_ !=
inputs.ruleMode ||
363 trackedRulePlayer_ !=
inputs.rulePlayer);
366 trackedRuleMode_ =
inputs.ruleMode;
367 trackedRulePlayer_ =
inputs.rulePlayer;
374 for (
const auto& request : requests)
376 const auto before = request.button->visualState();
377 const auto buttonIndex = request.button->buttonIndex();
379 const auto result = request.button->sync(
380 request.desired,
playback, request.useGrey,
393 ?
inputs.desiredCardIndex : std::optional<std::uint8_t>{};
404 pendingCardRead_ = card_.
lastCard();
406 const auto propertyTitles = propertyTitles_.
sync(
409 return propertyTitles;
420 state.currentPlayer <
state.numberOfPlayers &&
425 inputs.desiredBuyAuctionSquare,
454 return currentPlayer;
std::expected< void, std::string > sync(const rules::GameState &state, bool visible, rules::PlayerNumber activePlayer, engine::SequencePlayback &playback, ActionButtonInputs inputs={})
std::expected< void, std::string > sync(std::optional< std::uint8_t > desiredCard, bool iBarVisible, display::Screen2D view, pieces::BoardCameraView camera, engine::SequencePlayback &playback)
std::expected< void, std::string > sync(const rules::GameState &state, const PropertyTitlePlan &titles, int currentMouseOver, std::uint64_t tick, engine::SequencePlayback &playback)