21 return static_cast<std::uint8_t
>(std::rand() % 3);
30 -> std::expected<data::DataId, std::string>
33 return std::unexpected(
"auction Pennybags variant is outside legacy 0..2 range");
61 return std::unexpected(
"auction Pennybags state is outside the legacy enum");
72 return std::unexpected(
"auction Pennybags player count exceeds legacy maximum");
95 -> std::expected<void, std::string>
99 return std::unexpected(
id.
error());
108 planned.pennyBagsSwitch =
false;
114 planned.pennyBagsSwitch =
true;
121 return std::unexpected(selected.error());
132 return std::unexpected(selected.error());
139 return std::unexpected(selected.error());
145 if (
planned.rollCallSerial != 0)
161 return std::unexpected(selected.error());
164 return std::unexpected(
"auction highest bidder token is out of range");
172 return std::unexpected(selected.error());
179 return std::unexpected(selected.error());
186 return std::unexpected(selected.error());
198 return std::unexpected(selected.error());
199 if (
planned.propertyForSale >= 28)
209 update.requestedBackdrop =
planned.formerView;
226 const auto info =
playback.runtime().info(
229 return std::unexpected(
"auction Pennybags displayed sequence has no runtime info");
230 if (info->endTime <= info->sequenceClock)
238 std::shared_ptr<const sequence::SequenceProgram> program;
244 return std::unexpected(
loaded.error().detail);
245 program = std::move(*
loaded);
248 std::vector<sequence::SequenceCommand> commands;
266 return std::unexpected(
267 "sequence command queue cannot fit auction Pennybags transition");
273 return std::unexpected(
"auction Pennybags ready sender is unavailable");
276 return std::unexpected(
sent.error());
280 for (
auto& command : commands)
282 const auto queued = std::visit(
289 return std::unexpected(
"validated auction Pennybags command rejected");
313 animationReachedEnd_ =
true;
314 currentSound_.reset();
std::expected< PennyBagsUpdate, std::string > sync(State &state, const rules::GameState &gameState, display::Screen2D desiredView, engine::SequencePlayback &playback, const AuctionReadySender &readySender)
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 data::DataTag PennyBagsAn04Tag
constexpr data::DataTag PennyBagsAn14Tag
constexpr data::DataTag PennyBagsAn07Tag
constexpr data::DataTag PennyBagsAn12Tag
constexpr data::DataTag PennyBagsAn03Tag
std::expected< data::DataId, std::string > pennyBagsSequenceDataId(PennyBagsState state, std::uint8_t variant)
constexpr data::DataTag PennyBagsAn15Tag
constexpr data::DataTag PennyBagsAn16Tag
constexpr data::DataTag PennyBagsAn05Tag
constexpr data::DataTag PennyBagsAn17Tag
constexpr data::DataTag PennyBagsAn13Tag
constexpr data::DataTag PennyBagsAn02Tag
constexpr std::uint16_t AuctionPennyBagsPriority
constexpr data::DataTag PennyBagsAn01Tag
constexpr data::DataTag PennyBagsAn06Tag
constexpr data::DataTag PennyBagsAn10Tag
constexpr data::DataTag PennyBagsAn08Tag
constexpr data::DataTag PennyBagsAn11Tag
std::function< std::expected< void, std::string >(std::uint32_t playerMask, std::int64_t serial)> AuctionReadySender
constexpr DataId EmptyDataId
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
constexpr std::size_t MaxTokens
constexpr PlayerNumber MaxPlayers
@ Auction_ExplanationOnButtonsToIncreaseBid
@ Auction_CongratulateWinner
@ Auction_CallOutTokenWithHighestBid