21 constexpr std::uint8_t OffBoardSquare = 41;
64 static_cast<std::int64_t
>(
123 square.offeredInTradeTo =
132 player.cashGivenInTrade.fill(0);
139 deck.jailOfferedInTradeTo =
168 square.offeredInTradeTo !=
172 square.owner == player ||
173 square.offeredInTradeTo ==
192 .cashGivenInTrade[to] > 0 &&
208 deck.jailOfferedInTradeTo !=
211 deck.jailOwner == player ||
212 deck.jailOfferedInTradeTo ==
228 hit.fromPlayer == player ||
229 hit.toPlayer == player
249 square.offeredInTradeTo <
261 deck.jailOfferedInTradeTo <
279 .cashGivenInTrade[to] > 0)
336 static_cast<std::int64_t
>(
356 const std::int64_t amount =
358 .cashGivenInTrade[to];
371 static_cast<std::int64_t
>(
383 for (std::size_t
deckNo = 0;
385 static_cast<std::size_t
>(
395 deck.jailOfferedInTradeTo ==
405 deck.jailOfferedInTradeTo,
406 static_cast<std::int64_t
>(
432 static_cast<std::int64_t
>(
514 square.
owner == player &&
528 if (square.
owner == player)
532 static_cast<std::int64_t
>(
599 .cashGivenInTrade[
other];
624 std::array<std::uint32_t, MaxPlayers>
628 std::array<std::int64_t, MaxPlayers>
671 static_cast<std::uint8_t
>(
688 static_cast<std::uint8_t
>(
705 for (std::size_t
offset = 0;
765 for (std::size_t
deckNo = 0;
767 static_cast<std::size_t
>(
774 .jailOfferedInTradeTo;
830 const std::int64_t cash =
832 .cashGivenInTrade[to];
869 for (std::size_t
i = 0;
890 for (std::size_t
j = 0;
906 current.properties &&
1009 wrongPlayer(
state, message);
1026 JailRollOrPayOrCardDecision ||
1029 FlatOrFractionTaxDecision ||
1032 AuctionOrBuyDecision ||
1035 CollectingPayment ||
1046 wrongPhase(
state, message);
1071 ErrorTradeCantEditDuringAccept,
1120 ErrorCantTradeUntilSettled,
1173 wrongPhase(
state, message);
1182 wrongPlayer(
state, message);
1205 std::int64_t
value =
1210 static_cast<std::uint32_t
>(
1248 .cashGivenInTrade[from] != 0)
1251 .cashGivenInTrade[from] = 0;
1259 static_cast<std::int64_t
>(
1269 .cashGivenInTrade[to] =
1282 static_cast<std::int64_t
>(
1309 static_cast<std::size_t
>(
1349 static_cast<std::int64_t
>(
1360 static_cast<std::size_t
>(
1379 deck.jailOfferedInTradeTo =
1386 deck.jailOfferedInTradeTo =
1433 std::clamp<std::int64_t>(
1460 hit.toPlayer == to &&
1480 if (
found !=
nullptr)
1485 static_cast<std::int32_t
>(
1498 else if (
free !=
nullptr)
1516 static_cast<std::int32_t
>(
1607 static_cast<std::int64_t
>(
1625 static_cast<std::int64_t
>(
1629 static_cast<std::size_t
>(
1632 ].offeredInTradeTo !=
1687 wrongPhase(
state, message);
1696 wrongPlayer(
state, message);
1722 wrongPhase(
state, message);
1731 wrongPlayer(
state, message);
1772 static_cast<std::int64_t
>(
1802 wrongPhase(
state, message);
1811 wrongPlayer(
state, message);
1847 player.tradeAccepted =
1975 wrongPhase(
state, message);
2079 square.offeredInTradeTo ==
2085 square.offeredInTradeTo <
2099 deck.jailOfferedInTradeTo ==
2105 deck.jailOfferedInTradeTo <
2122 if (
hit.toPlayer == player)
2127 if (
hit.fromPlayer == player)
2143 const std::int64_t cash =
2145 .cashGivenInTrade[to];
2203 const std::int64_t
assets =
2427 NotifyTradeAcceptanceDecision,
constexpr std::int64_t ErrorTradeGiveAndGet
constexpr std::int64_t ErrorTradeHouseSale
constexpr std::int64_t ErrorTradeAccepted
constexpr std::int64_t ErrorTradeChanging
constexpr std::int64_t ErrorTradeBankruptcy
constexpr std::int64_t ErrorCantTradeThat
constexpr std::int64_t ErrorImmunityOutOf
constexpr std::int64_t ErrorFutureRentGranted
constexpr std::int64_t ErrorTradeRejected
std::size_t currentQueueSize()
bool sendAction(const actions::Message &message)
const SquareDefinition & definition(SquareType square)
PropertySet propertyBit(SquareType square)
bool transferGetOutOfJail(GameState &state, PlayerNumber fromPlayer, PlayerNumber toPlayer, DeckType deckType)
void stackDebt(GameState &state, PlayerNumber fromPlayer, PlayerNumber toPlayer, std::int64_t amount)
void transferPropertyForSettlement(GameState &state, std::uint8_t squareNo, PlayerNumber toPlayer)
void sellAllBuildingsForSettlement(GameState &state, std::uint8_t squareNo)
bool pop(GameState &state)
const PendingPhase & current(const GameState &state)
bool push(GameState &state, GamePhase phase, PlayerNumber fromPlayer, PlayerNumber toPlayer, std::int64_t amount)
void switchTo(GameState &state, GamePhase phase, PlayerNumber fromPlayer, PlayerNumber toPlayer, std::int64_t amount)
void wrongPlayer(const GameState &state, const actions::Message &message)
void wrongPhase(const GameState &state, const actions::Message &message)
bool beginWaitOnce(GameState &state, actions::Type hint)
void actionTradeItem(GameState &state, const actions::Message &message)
void onIdleTick(GameState &state)
void actionStartTradeEditing(GameState &state, const actions::Message &message)
void resetTransientState()
void actionClearTradedContracts(GameState &state, const actions::Message &message)
void actionTradeAccept(GameState &state, const actions::Message &message)
void actionClearTradeItems(GameState &state, const actions::Message &message)
void actionTradeEditingDone(GameState &state, const actions::Message &message)
bool restartTradePhase(GameState &state, const actions::Message &message)
constexpr PlayerNumber BankPlayer
std::uint8_t PlayerNumber
constexpr std::size_t MaxCountHitSets
constexpr std::size_t SquareCount
const GameState & state()
constexpr PlayerNumber MaxPlayers
constexpr PlayerNumber NobodyPlayer
constexpr PlayerNumber AllPlayers
rules::PlayerNumber fromPlayer
bool immunitiesTradingAllowed
bool futureRentTradingAllowed
std::array< CardDeck, static_cast< std::size_t >(DeckType::Count) > cards
std::array< CountHitRecord, MaxCountHitSets > countHits
PlayerNumber numberOfPlayers
std::array< SquareState, SquareCount > squares
std::array< PendingPhase, MaxPendingPhases > phaseStack
std::uint8_t numberOfPendingPhases
std::array< PlayerState, MaxPlayers > players
PlayerNumber offeredInTradeTo
std::int64_t mortgageCost