A camera brings no vehicle, so the row should not show one

Cyd's catch on the new roster: a member who picked Live Cam was listed as
"name  vehicle  cam", vehicle first, as though the pick were a garnish.
The pick REPLACES the vehicle - that is exactly what it does in the egg -
so it replaces it on the line too: "name  LIVE CAM", in the menu roster
and in the members' room alike.

The room's row also still gated LIVE CAM to the owner, from the era when
only the host's pick was acted on - the comment beside it even explained
that showing it for a member "would be the room screen lying about the
grid". True then, backwards now: any row shows LIVE CAM, except in a
football room, where the egg builder strips every cam pick and the team
sheet is the truth.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-08-11 21:46:04 -05:00
co-authored by Claude Opus 5
parent 47817ca6f5
commit ae939bcea7
+21 -18
View File
@@ -724,13 +724,6 @@ namespace
// names, so nobody reads "bttlbrg".
//-----------------------------------------------------------
//
// A Live Cam host brings no vehicle, so its row says the role
// instead of a loadout. Only the owner's row: the host writes
// the egg, so only the host's pick is acted on, and a member
// who set Live Cam is still going to race - saying otherwise
// here would be the room screen lying about the grid.
//
//
// A build the room cannot race with is worth saying before
// anything about loadouts. A joiner is now turned away at the
// door, so this should only ever show for a member who was
@@ -744,11 +737,14 @@ namespace
DrawTextA(mem, text, -1, &row,
DT_RIGHT | DT_VCENTER | DT_SINGLELINE);
}
else if (member->camera && is_owner_row)
{
DrawTextA(mem, "LIVE CAM", -1, &row,
DT_RIGHT | DT_VCENTER | DT_SINGLELINE);
}
//
// A Live Cam brings no vehicle, so the row says the role where
// the loadout would go - ANY row now, since the egg honours a
// member's pick the same as the host's. Football first, though:
// there are no cameras in football (the egg builder strips the
// pick), so a football room shows the team sheet and saying
// LIVE CAM there would be the room lying about the grid.
//
else if (FootballLobby())
{
if (member->team[0] != '\0')
@@ -760,6 +756,11 @@ namespace
DrawTextA(mem, text, -1, &row, DT_RIGHT | DT_VCENTER | DT_SINGLELINE);
}
}
else if (member->camera)
{
DrawTextA(mem, "LIVE CAM", -1, &row,
DT_RIGHT | DT_VCENTER | DT_SINGLELINE);
}
else if (member->vehicle[0] != '\0')
{
sprintf(text, "%s - %s",
@@ -1216,22 +1217,24 @@ int
for (int i = 0; i < count && written < max_lines; ++i)
{
const char *name = members[i].name[0] ? members[i].name : "(joining...)";
//
// What they are bringing. A camera brings no vehicle - the pick
// replaces it outright, in the egg and so on this line.
//
const char *bring =
members[i].camera ? "LIVE CAM" : members[i].vehicle;
const char *note = "";
if (strcmp(members[i].build, RP412_VERSION) != 0)
{
note = " WRONG BUILD";
}
else if (members[i].camera)
{
note = " cam";
}
else if (!members[i].published)
{
note = " ...";
}
_snprintf(lines[written], 47, "%-14s %s%s",
name, members[i].vehicle, note);
_snprintf(lines[written], 47, "%-14s %s%s", name, bring, note);
lines[written][47] = '\0';
++written;
}