35 std::shared_ptr<Text> seatText =
nullptr;
36 std::shared_ptr<Text> localTagText =
nullptr;
37 std::shared_ptr<Text> nameText =
nullptr;
38 std::shared_ptr<Text> winsText =
nullptr;
39 std::shared_ptr<Text> stateText =
nullptr;
44 void onEvent(
const SDL_Event& event)
override;
45 void update(
unsigned int delta)
override;
50 void syncPendingReadyState(
const net::MsgLobbyState& lobbyState, uint8_t localPlayerId);
51 void refreshLobbyPresentationIfChanged(
const net::MsgLobbyState& lobbyState, uint8_t localPlayerId);
52 void setStatus(std::string_view message, SDL_Color color);
53 void setCountdownText(std::string_view message, SDL_Color color);
54 void rebuildLobbyPresentation(
const net::MsgLobbyState& lobbyState, uint8_t localPlayerId);
55 void returnToMenu(
bool disconnectClient, std::string_view reason);
57 std::shared_ptr<Text> titleText_ =
nullptr;
58 std::shared_ptr<Text> statusText_ =
nullptr;
59 std::shared_ptr<Text> countdownText_ =
nullptr;
60 std::shared_ptr<Text> helpText_ =
nullptr;
61 std::shared_ptr<Text> seatHeaderText_ =
nullptr;
62 std::shared_ptr<Text> playerHeaderText_ =
nullptr;
63 std::shared_ptr<Text> winsHeaderText_ =
nullptr;
64 std::shared_ptr<Text> stateHeaderText_ =
nullptr;
65 std::array<SeatRowWidgets, net::kMaxPlayers> seatRows_{};
68 std::optional<bool> pendingReadyState_{};
69 uint32_t lastReadyRequestMs_ = 0;
70 bool hasRenderedLobbyState_ =
false;
71 bool lobbyStateStale_ =
false;
72 bool lastRenderedLobbyStale_ =
false;
73 bool returningToMenu_ =
false;