40 int run(
int argc,
char *argv[]);
44 std::atomic<bool> waiting_for_input_;
45 std::thread event_thread_;
48 std::string server_host_;
49 uint16_t server_port_;
50 std::string player_name_;
52 std::optional<uint32_t> target_game_id_;
53 std::optional<std::string> target_game_name_;
54 std::optional<GameSpec> custom_game_spec_;
55 bool request_game_list_;
57 bool first_update =
true;
60 void parseArguments(
int argc,
char *argv[]);
61 bool parseGameSpec(
const std::string &spec);
62 void setupCallbacks();
63 void handleJoinMode();
65 void joinGame(uint32_t game_id);
66 void joinGame(
const std::string &name);
67 void createCustomGame();
74 void printGameList(
const std::vector<GameInfo> &games);
75 std::string printPlayer(uint8_t player_id,
const std::string &player_name,
bool highlight =
false);
78 void handleUserInput();
81 std::string colorize(
const std::string &text,
int color_code);