Convert to SoldierID

TacticalStatusType::ubEnemySightingOnTheirTurnEnemyID
TacticalStatusType::ubEnemySightingOnTheirTurnPlayerID
TacticalTeamType::ubLastMercToRadio
This commit is contained in:
Asdow
2024-11-17 10:23:01 +02:00
parent 61c5a41bea
commit f0be44bb42
4 changed files with 249 additions and 300 deletions
+2 -2
View File
@@ -580,9 +580,9 @@ UINT32 MainGameScreenHandle(void)
{ {
if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum ) if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum )
{ {
MercPtrs[ gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID ]->AdjustNoAPToFinishMove( FALSE ); gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->AdjustNoAPToFinishMove( FALSE );
} }
MercPtrs[ gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID ]->flags.fPauseAllAnimation = FALSE; gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->flags.fPauseAllAnimation = FALSE;
gTacticalStatus.fEnemySightingOnTheirTurn = FALSE; gTacticalStatus.fEnemySightingOnTheirTurn = FALSE;
} }
+3 -3
View File
@@ -28,7 +28,7 @@ typedef struct
COLORVAL RadarColor; COLORVAL RadarColor;
INT8 bSide; INT8 bSide;
INT16 bMenInSector; INT16 bMenInSector;
UINT16 ubLastMercToRadio; SoldierID ubLastMercToRadio;
INT8 bTeamActive; INT8 bTeamActive;
INT8 bAwareOfOpposition; INT8 bAwareOfOpposition;
INT8 bHuman; INT8 bHuman;
@@ -89,8 +89,8 @@ struct TacticalStatusType
INT8 bRealtimeSpeed; INT8 bRealtimeSpeed;
UINT8 ubEnemyIntention; UINT8 ubEnemyIntention;
UINT8 ubEnemyIntendedRetreatDirection; UINT8 ubEnemyIntendedRetreatDirection;
UINT16 ubEnemySightingOnTheirTurnEnemyID; SoldierID ubEnemySightingOnTheirTurnEnemyID;
UINT16 ubEnemySightingOnTheirTurnPlayerID; SoldierID ubEnemySightingOnTheirTurnPlayerID;
BOOLEAN fEnemySightingOnTheirTurn; BOOLEAN fEnemySightingOnTheirTurn;
BOOLEAN fAutoBandageMode; BOOLEAN fAutoBandageMode;
UINT8 ubAttackBusyCount; UINT8 ubAttackBusyCount;
+9 -60
View File
@@ -3043,21 +3043,17 @@ void RemoveOneOpponent(SOLDIERTYPE *pSoldier)
void RemoveManAsTarget(SOLDIERTYPE *pSoldier) void RemoveManAsTarget(SOLDIERTYPE *pSoldier)
{ {
SOLDIERTYPE *pOpponent; SOLDIERTYPE *pOpponent;
UINT16 ubTarget,ubLoop; UINT8 ubLoop;
SoldierID ubTarget = pSoldier->ubID;
ubTarget = pSoldier->ubID;
// clean up the public opponent lists and locations // clean up the public opponent lists and locations
for (ubLoop = 0; ubLoop < MAXTEAMS; ubLoop++) for (ubLoop = 0; ubLoop < MAXTEAMS; ubLoop++)
{ // never causes any additional looks { // never causes any additional looks
UpdatePublic(ubLoop, ubTarget, NOT_HEARD_OR_SEEN, NOWHERE, 0); UpdatePublic(ubLoop, ubTarget, NOT_HEARD_OR_SEEN, NOWHERE, 0);
} }
/* /*
IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS? IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS?
// make sure this guy is no longer a possible target for anyone // make sure this guy is no longer a possible target for anyone
@@ -3066,7 +3062,6 @@ IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS?
if (pOpponent->bOppNum == ubTarget) if (pOpponent->bOppNum == ubTarget)
pOpponent->bOppNum = NOBODY; pOpponent->bOppNum = NOBODY;
} }
*/ */
@@ -3092,7 +3087,6 @@ IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS?
} }
/* /*
for (ubLoop = 0,pOpponent = Menptr; ubLoop < MAXMERCS; ubLoop++,pOpponent++) for (ubLoop = 0,pOpponent = Menptr; ubLoop < MAXMERCS; ubLoop++,pOpponent++)
{ {
// if the target is a true opponent and currently seen by this merc // if the target is a true opponent and currently seen by this merc
@@ -3116,24 +3110,16 @@ IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS?
if (gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio == ubTarget) if (gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio == ubTarget)
gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = NOBODY; gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = NOBODY;
} }
void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
void UpdatePublic(UINT8 ubTeam, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
{ {
INT32 cnt; INT32 cnt;
INT8 *pbPublOL;
UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE; UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT8* pbPublOL = &(gbPublicOpplist[ubTeam][ubID]);
pbPublOL = &(gbPublicOpplist[ubTeam][ubID]);
// if new opplist is more up-to-date, or we are just wiping it for some reason // if new opplist is more up-to-date, or we are just wiping it for some reason
if ((gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][bNewOpplist - OLDEST_HEARD_VALUE] > 0) || if ((gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][bNewOpplist - OLDEST_HEARD_VALUE] > 0) ||
@@ -3185,8 +3171,7 @@ void UpdatePublic(UINT8 ubTeam, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, IN
void UpdatePersonal(SOLDIERTYPE *pSoldier, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
{ {
/* /*
#ifdef RECORDOPPLIST #ifdef RECORDOPPLIST
@@ -3207,8 +3192,6 @@ void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT16 ubID, INT8 bNewOpplist, INT32
INT8 OurMaxPublicOpplist() INT8 OurMaxPublicOpplist()
{ {
UINT32 uiLoop; UINT32 uiLoop;
@@ -3225,7 +3208,7 @@ INT8 OurMaxPublicOpplist()
continue; // next merc continue; // next merc
// if this man is NEUTRAL / on our side, he's not an opponent // if this man is NEUTRAL / on our side, he's not an opponent
if (pSoldier->aiData.bNeutral || (gTacticalStatus.Team[gbPlayerNum].bSide == Menptr[pSoldier->ubID].bSide)) if (pSoldier->aiData.bNeutral || (gTacticalStatus.Team[gbPlayerNum].bSide == pSoldier->ubID->bSide))
continue; // next merc continue; // next merc
// opponent, check our public opplist value for him // opponent, check our public opplist value for him
@@ -3243,7 +3226,6 @@ INT8 OurMaxPublicOpplist()
/* /*
BOOLEAN VisibleAnywhere(SOLDIERTYPE *pSoldier) BOOLEAN VisibleAnywhere(SOLDIERTYPE *pSoldier)
{ {
@@ -3671,20 +3653,17 @@ void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo
SOLDIERTYPE *pOpponent; SOLDIERTYPE *pOpponent;
INT32 iLoop; INT32 iLoop;
UINT16 start, end, revealedEnemies = 0, unknownEnemies = 0, stillUnseen = TRUE; UINT16 start, end, revealedEnemies = 0, unknownEnemies = 0, stillUnseen = TRUE;
UINT16 scrollToGuynum = NOBODY,sightedHatedOpponent = FALSE; BOOLEAN sightedHatedOpponent = FALSE;
//UINT8 oppIsCivilian; //UINT8 oppIsCivilian;
INT8 *pPersOL,*pbPublOL; //,dayQuote; INT8 *pPersOL,*pbPublOL; //,dayQuote;
BOOLEAN fContactSeen; BOOLEAN fContactSeen;
BOOLEAN fSawCreatureForFirstTime = FALSE; BOOLEAN fSawCreatureForFirstTime = FALSE;
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RADIO SIGHTINGS: for %d about %d",pSoldier->ubID,ubAbout) ); String("RADIO SIGHTINGS: for %d about %d",pSoldier->ubID,ubAbout) );
#endif #endif
#ifdef RECORDNET #ifdef RECORDNET
if (!ptr->human) if (!ptr->human)
fprintf(NetDebugFile,"\tNPC %d(%s) radios his sightings to his team\n",ptr->guynum,ExtMen[ptr->guynum].name); fprintf(NetDebugFile,"\tNPC %d(%s) radios his sightings to his team\n",ptr->guynum,ExtMen[ptr->guynum].name);
@@ -3693,10 +3672,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = pSoldier->ubID; gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = pSoldier->ubID;
// who are we radioing about? // who are we radioing about?
if (ubAbout == EVERYBODY) if (ubAbout == EVERYBODY)
{ {
@@ -3736,8 +3711,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RS: inactive/notInSector/life %d",pOpponent->ubID) ); String("RS: inactive/notInSector/life %d",pOpponent->ubID) );
#endif #endif
continue; // skip to the next merc continue; // skip to the next merc
} }
@@ -3749,7 +3722,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RS: same side %d",pSoldier->bSide) ); String("RS: same side %d",pSoldier->bSide) );
#endif #endif
continue; // skip to the next merc continue; // skip to the next merc
} }
@@ -3769,12 +3741,10 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
#ifdef RECORDOPPLIST #ifdef RECORDOPPLIST
//fprintf(OpplistFile,"not heard or seen\n"); //fprintf(OpplistFile,"not heard or seen\n");
#endif #endif
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RS: not heard or seen") ); String("RS: not heard or seen") );
#endif #endif
continue; // skip to the next opponent continue; // skip to the next opponent
} }
@@ -3785,21 +3755,16 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
#ifdef RECORDOPPLIST #ifdef RECORDOPPLIST
//fprintf(OpplistFile,"no new knowledge (per %d, pub %d)\n",*pPersOL,*pbPublOL); //fprintf(OpplistFile,"no new knowledge (per %d, pub %d)\n",*pPersOL,*pbPublOL);
#endif #endif
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RS: no new knowledge per %d pub %d",*pPersOL,*pbPublOL) ); String("RS: no new knowledge per %d pub %d",*pPersOL,*pbPublOL) );
#endif #endif
continue; // skip to the next opponent continue; // skip to the next opponent
} }
#ifdef RECORDOPPLIST #ifdef RECORDOPPLIST
//fprintf(OpplistFile,"made it!\n"); //fprintf(OpplistFile,"made it!\n");
#endif #endif
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("RS: made it!") ); String("RS: made it!") );
@@ -3810,11 +3775,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
// if it's our merc, and he currently sees this opponent // if it's our merc, and he currently sees this opponent
if (PTR_OURTEAM && (*pPersOL == SEEN_CURRENTLY) && !(( pOpponent->bSide == pSoldier->bSide) || pOpponent->aiData.bNeutral)) if (PTR_OURTEAM && (*pPersOL == SEEN_CURRENTLY) && !(( pOpponent->bSide == pSoldier->bSide) || pOpponent->aiData.bNeutral))
{ {
// used by QueueDayMessage() to scroll to one of the new enemies
// scroll to the last guy seen, unless we see a hated guy, then use him!
if (!sightedHatedOpponent)
scrollToGuynum = pOpponent->ubID;
// don't care whether and how many new enemies are seen if everyone visible // don't care whether and how many new enemies are seen if everyone visible
// and he's healthy enough to be a threat (so is worth talking about) // and he's healthy enough to be a threat (so is worth talking about)
@@ -3844,7 +3804,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
} }
else else
{ {
// if he has publicly not been seen now, or anytime during this turn // if he has publicly not been seen now, or anytime during this turn
if ((*pbPublOL != SEEN_CURRENTLY) && (*pbPublOL != SEEN_THIS_TURN)) if ((*pbPublOL != SEEN_CURRENTLY) && (*pbPublOL != SEEN_THIS_TURN))
{ {
@@ -3872,7 +3831,7 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
{ {
// this has already come up so turn OFF the pause-all-anims flag for the previous // this has already come up so turn OFF the pause-all-anims flag for the previous
// person and set it for this next person // person and set it for this next person
MercPtrs[gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID]->flags.fPauseAllAnimation = FALSE; gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->flags.fPauseAllAnimation = FALSE;
} }
else else
{ {
@@ -3883,7 +3842,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
gTacticalStatus.uiTimeSinceDemoOn = GetJA2Clock( ); gTacticalStatus.uiTimeSinceDemoOn = GetJA2Clock( );
pOpponent->flags.fPauseAllAnimation = TRUE; pOpponent->flags.fPauseAllAnimation = TRUE;
} }
} }
@@ -3898,7 +3856,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
// 2 is for bloodcat // 2 is for bloodcat
gfPlayerTeamSawCreatures = 2; gfPlayerTeamSawCreatures = 2;
} }
} }
if ( pOpponent->flags.uiStatusFlags & SOLDIER_MONSTER ) if ( pOpponent->flags.uiStatusFlags & SOLDIER_MONSTER )
@@ -3908,7 +3865,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
fSawCreatureForFirstTime = TRUE; fSawCreatureForFirstTime = TRUE;
} }
} }
} }
} }
else else
@@ -3926,15 +3882,10 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
#ifdef RECORDOPPLIST #ifdef RECORDOPPLIST
fprintf(OpplistFile,"UpdatePublic (RadioSightings) for team %d about %d\n",ptr->team,oppPtr->guynum); fprintf(OpplistFile,"UpdatePublic (RadioSightings) for team %d about %d\n",ptr->team,oppPtr->guynum);
#endif #endif
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
String("...............UPDATE PUBLIC: soldier %d SEEING soldier %d",pSoldier->ubID,pOpponent->ubID) ); String("...............UPDATE PUBLIC: soldier %d SEEING soldier %d",pSoldier->ubID,pOpponent->ubID) );
#endif #endif
UpdatePublic(ubTeamToRadioTo,pOpponent->ubID,*pPersOL,gsLastKnownOppLoc[pSoldier->ubID][pOpponent->ubID],gbLastKnownOppLevel[pSoldier->ubID][pOpponent->ubID]); UpdatePublic(ubTeamToRadioTo,pOpponent->ubID,*pPersOL,gsLastKnownOppLoc[pSoldier->ubID][pOpponent->ubID],gbLastKnownOppLevel[pSoldier->ubID][pOpponent->ubID]);
} }
@@ -3960,7 +3911,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
{ {
// First check for a virgin map and set to false if we see our first guy.... // First check for a virgin map and set to false if we see our first guy....
// Only if this guy is an ememy! // Only if this guy is an ememy!
OurTeamSeesSomeone( pSoldier, revealedEnemies, unknownEnemies ); OurTeamSeesSomeone( pSoldier, revealedEnemies, unknownEnemies );
} }
else if (fSawCreatureForFirstTime) else if (fSawCreatureForFirstTime)
@@ -3968,7 +3918,6 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3,
gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags |= PROFILE_MISC_FLAG_HAVESEENCREATURE; gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags |= PROFILE_MISC_FLAG_HAVESEENCREATURE;
TacticalCharacterDialogue( pSoldier, QUOTE_FIRSTTIME_GAME_SEE_CREATURE ); TacticalCharacterDialogue( pSoldier, QUOTE_FIRSTTIME_GAME_SEE_CREATURE );
} }
} }
} }
} }
+2 -2
View File
@@ -117,7 +117,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo,
void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate); void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate);
void AddOneOpponent(SOLDIERTYPE *pSoldier); void AddOneOpponent(SOLDIERTYPE *pSoldier);
void RemoveOneOpponent(SOLDIERTYPE *pSoldier); void RemoveOneOpponent(SOLDIERTYPE *pSoldier);
void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel); void UpdatePersonal(SOLDIERTYPE *pSoldier, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel);
INT16 MaxNormalDistanceVisible( void ); INT16 MaxNormalDistanceVisible( void );
INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir, INT32 sSubjectGridNo, INT8 bLevel, const BOOLEAN& isCowering, const UINT8& tunnelVision); INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir, INT32 sSubjectGridNo, INT8 bLevel, const BOOLEAN& isCowering, const UINT8& tunnelVision);
void ResetLastKnownLocs(SOLDIERTYPE *ptr); void ResetLastKnownLocs(SOLDIERTYPE *ptr);
@@ -129,7 +129,7 @@ void InitOpponentKnowledgeSystem(void);
void InitSoldierOppList(SOLDIERTYPE *pSoldier); void InitSoldierOppList(SOLDIERTYPE *pSoldier);
void BetweenTurnsVisibilityAdjustments(void); void BetweenTurnsVisibilityAdjustments(void);
void RemoveManAsTarget(SOLDIERTYPE *pSoldier); void RemoveManAsTarget(SOLDIERTYPE *pSoldier);
void UpdatePublic(UINT8 ubTeam, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel ); void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel );
void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo ); void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo );
void OurTeamRadiosRandomlyAbout(UINT16 ubAbout); void OurTeamRadiosRandomlyAbout(UINT16 ubAbout);
void DebugSoldierPage1( ); void DebugSoldierPage1( );