Gitea #43: the Comm pilot list now shows EVERY pilot -- three stacked fixes
1. Roster count used the binary's raw entry+0x29&0x40 read on our compiled objects (databinding trap) -> garbage latched pilotCount=1. Decoded: the flag is Player::NonScoringPlayerFlag (bit 14 = Entity::NextBit); both loops now use IsScoringPlayer(). Also closes the pilotIDs[1] overrun. 2. The build-once latch races async replicant arrival (rig-proven 1-then-2): rebuild on scoring-census change [T3 accommodation, demand-latch precedent]; also un-dangles departed peers. Forensic: '[score] pilot roster built: N'. 3. Name icons were a NULL stub + zeros blank authentically -> rows invisible. Wired BTPilotNameBitmap (playerBitmapIndex -> Mission small callsign raster, the radar-label chain); replaces the raw pilot+0x1e0 key. Rig-verified: Aeolus + Boreas rows with callsigns on both nodes incl. the staggered-start race; solo unregressed (1 scoring pilot). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0166KTsC7ADm7VXEi1HF1jNg
This commit is contained in:
co-authored by
Claude Opus 5
parent
7494e2ec6c
commit
b7107b1020
@@ -299,11 +299,11 @@ extern void *BTResolveRosterPilot(int slot);
|
||||
extern int BTPilotKills(void *pilot);
|
||||
extern int BTPilotDeaths(void *pilot);
|
||||
extern int BTPilotIsSelected(void *pilot, void *local_player); // SELECT-TARGET highlight (safe)
|
||||
|
||||
// App+0xC8 player-name-bitmap cache is not wired in the port (same deferral
|
||||
// PlayerStatus uses for its nameImage) -> NULL routes DrawMechIcon to the binary's
|
||||
// own cache-miss branch (the tinted name box), never an AV.
|
||||
static BitMap *LookupPlayerNameBitmap(int /*name_id*/) { return NULL; }
|
||||
// Gitea #43: the pilot's SMALL callsign raster (Mission small-bitmap chain via
|
||||
// the pilot's compiled playerBitmapIndex -- bridge in btplayer.cpp). Replaces
|
||||
// the port's old NULL-stub cache (which left every row an invisible blank box)
|
||||
// AND the binary's raw pilot+0x1e0 key read (our compiled layout differs).
|
||||
extern BitMap *BTPilotNameBitmap(void *pilot);
|
||||
|
||||
MethodDescription
|
||||
PilotList::methodDescription =
|
||||
@@ -429,8 +429,7 @@ Logical
|
||||
void
|
||||
PilotList::DrawMechIcon(void *pilot, int selected)
|
||||
{
|
||||
int nameId = *(int *)((char *)pilot + 0x1e0); // pilot name/id key
|
||||
BitMap *bmp = LookupPlayerNameBitmap(nameId);
|
||||
BitMap *bmp = BTPilotNameBitmap(pilot); // small callsign raster
|
||||
int boxColor = selected ? 0xff : 0;
|
||||
int blitColor = selected ? 0 : 0xff;
|
||||
if (bmp == NULL)
|
||||
|
||||
Reference in New Issue
Block a user