26 constexpr std::uint8_t OffBoardSquare = 41;
47 std::array<bool, MaxPlayers>
51 std::array<bool, MaxPlayers>
55 std::array<bool, MaxPlayers>
64 const actions::Message& message)
66 if (message.stringA.data() ==
nullptr)
72 message.stringA.data()
80 if (
slot >= MaxPlayers)
123 localPlayers[
index] =
137 std::wstring_view
name)
145 localPlayers[
i].
name ==
156 std::wstring_view
name)
164 localPlayers[
i].
name ==
199 PlayerNumber player = 0;
208 if (info.aiPlayerLevel == 0)
215 info.currentSquare ==
263 const actions::Message& message)
277 const std::wstring
name =
287 localPlayers[
i].
name ==
289 localPlayers[
i].
slot ==
301 const actions::Message& message)
320 player.aiPlayerLevel;
339 static_cast<std::uint8_t
>(
345 static_cast<std::uint8_t
>(
350 player.aiPlayerLevel =
351 static_cast<std::uint8_t
>(
389 player.aiPlayerLevel &&
408 localPlayers[
i].
slot ==
410 localPlayers[
i].
slot ==
413 localPlayers[
i].slot =
441 player.aiPlayerLevel != 0)
484 localPlayers[
i].
slot ==
487 localPlayers[
i].slot =
498 const actions::Message& message)
507 const actions::Message& message)
521 const std::wstring
name =
539 localPlayers[
i].
slot ==
616 std::size_t result = 0;
619 for (PlayerNumber player = 0;
708 player < MaxPlayers &&
724 for (PlayerNumber player = 0; player <
uiState.numberOfPlayers; ++player)
743 PlayerNumber player = 0;
766 const PlayerNumber
count =
767 std::min(
uiState.numberOfPlayers, MaxPlayers);
776 player =
static_cast<PlayerNumber
>(
count - 1);
779 const PlayerNumber start = player;
783 uiState.players[player].currentSquare < OffBoardSquare)
789 ?
static_cast<PlayerNumber
>(
count - 1)
790 :
static_cast<PlayerNumber
>(player - 1);
792 while (player != start);
806 const PlayerNumber
count = std::min(
uiState.numberOfPlayers, MaxPlayers);
815 for (PlayerNumber player = 0; player <
count; ++player)
821 for (PlayerNumber player = 0; player <
count; ++player)
833 PlayerNumber tradeBPlayer,
840 const PlayerNumber
count = std::min(
uiState.numberOfPlayers, MaxPlayers);
846 for (PlayerNumber player = 0; player <
count; ++player)
857 std::wstring_view
name,
860 std::uint8_t aiLevel,
constexpr std::int64_t ErrorNotYourPlayer
constexpr std::int64_t ErrorNoMorePlayers
constexpr std::int64_t ErrorNameInUse
bool sendAction(const actions::Message &message)
constexpr PlayerNumber BankPlayer
std::uint8_t PlayerNumber
constexpr PlayerNumber SpectatorPlayer
constexpr std::size_t MaxPlayerNameLength
constexpr PlayerNumber MaxPlayers
constexpr PlayerNumber NobodyPlayer
constexpr PlayerNumber AllPlayers
bool requestRemoveLocalPlayer(const GameState &uiState, PlayerNumber player)
PlayerNumber currentUIPlayer()
PlayerNumber anyLocalPlayer(const GameState &uiState)
PlayerNumber slotAt(std::size_t localIndex)
PlayerNumber tradeSourcePlayer(const GameState &uiState, PlayerNumber iBarCurrentPlayer)
void setCurrentUIPlayerFromPlayerSet(const GameState &uiState, std::uint32_t playerSet)
bool slotIsLocalAIPlayer(PlayerNumber slot)
bool isLocalRecipient(PlayerNumber recipient)
constexpr std::size_t MaxLocalPlayers
bool slotIsLocalHumanPlayer(PlayerNumber slot)
bool slotIsLocalPlayer(PlayerNumber slot)
void setCurrentUIPlayerFromPlayerNumber(PlayerNumber player)
PlayerNumber tradeAcceptanceIBarPlayer(const GameState &uiState, PlayerNumber tradeBPlayer, std::uint32_t pendingPlayers)
PlayerNumber housingShortageIBarPlayer(const GameState &uiState, PlayerNumber originalBuyer, std::uint32_t allowedPlayers)
bool requestAddLocalPlayer(const GameState &uiState, std::wstring_view name, std::uint8_t token, std::uint8_t colour, std::uint8_t aiLevel, bool takeOverAI)
void processRuleMessage(GameState &uiState, const actions::Message &message)