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
@@ -1497,6 +1497,23 @@ int BTPilotDeaths(void *pilot)
|
||||
int deaths = ((BTPlayer *)pilot)->GetDeaths();
|
||||
return (deaths < 0) ? 0 : deaths;
|
||||
}
|
||||
// Gitea #43 completion: the pilot-list NAME icon. The binary blits the
|
||||
// pilot's SMALL callsign raster -- the same 64x16 egg bitmaps the radar
|
||||
// labels use (Mission's small-bitmap chain, keyed 1-based by the egg
|
||||
// 'bitmapindex') -- but the port's PilotList had a NULL-stub lookup, so a
|
||||
// roster row was a blank box + blanked-zero numerals: invisible until the
|
||||
// pilot scored. Camera players carry index -1 (PLAYER.cpp:744) -> NULL ->
|
||||
// DrawMechIcon's authentic cache-miss box branch.
|
||||
BitMap *BTPilotNameBitmap(void *pilot)
|
||||
{
|
||||
if (pilot == 0 || application == 0)
|
||||
return 0;
|
||||
Mission *mission = application->GetCurrentMission();
|
||||
int index = ((BTPlayer *)pilot)->playerBitmapIndex;
|
||||
if (mission == 0 || index <= 0)
|
||||
return 0;
|
||||
return mission->GetSmallNameBitmap(index);
|
||||
}
|
||||
|
||||
// OBSERVED-DEATH tally (MP DEATHS fix): each node maintains every player's
|
||||
// score from LOCALLY OBSERVED events -- exactly how the KILLS credit already
|
||||
|
||||
Reference in New Issue
Block a user