6static int parseInt(std::string_view sv) {
return std::stoi(std::string(sv)); }
10 if (sv.empty() || sv[0] !=
'#')
throw std::invalid_argument(
"missing #");
11 return std::stoi(std::string(sv.substr(1)));
16 if (line ==
"msz")
return Gui::Msz{};
17 if (line ==
"mct")
return Gui::Mct{};
18 if (line ==
"tna")
return Gui::Tna{};
19 if (line ==
"sgt")
return Gui::Sgt{};
20 if (line ==
"stu")
return Gui::Stu{};
22 if (line.starts_with(
"bct ")) {
23 auto rest = line.substr(4);
24 auto sp = rest.find(
' ');
25 if (sp == std::string_view::npos)
return std::nullopt;
27 int x =
parseInt(rest.substr(0, sp));
28 int y =
parseInt(rest.substr(sp + 1));
34 if (line.starts_with(
"ppo ")) {
41 if (line.starts_with(
"plv ")) {
48 if (line.starts_with(
"pin ")) {
55 if (line.starts_with(
"sst ")) {
static int parsePlayerId(std::string_view sv)
static int parseInt(std::string_view sv)
static std::optional< Gui::Request > parse(std::string_view line)
Parse one line from a GUI client (no trailing newline).