Use SoldierID

This commit is contained in:
Asdow
2024-11-30 17:18:04 +02:00
parent 5bbbec18bb
commit 2eb16c583c
4 changed files with 57 additions and 73 deletions
+27 -39
View File
@@ -163,7 +163,7 @@ BOOLEAN DisplayOrderGrid( UINT8 ubGridNumber, UINT8 ubMercID );
INT8 GetNumberOfHireMercsStartingFromID( UINT8 ubStartMercID ); INT8 GetNumberOfHireMercsStartingFromID( UINT8 ubStartMercID );
//INT32 CalculateInsuranceCost( SOLDIERTYPE *pSoldier, BOOLEAN fHaveInsurance ); //INT32 CalculateInsuranceCost( SOLDIERTYPE *pSoldier, BOOLEAN fHaveInsurance );
void InsuranceContractUserTextFieldCallBack( UINT8 ubID, BOOLEAN fEntering ); void InsuranceContractUserTextFieldCallBack( UINT8 ubID, BOOLEAN fEntering );
INT8 CountInsurableMercs(); UINT16 CountInsurableMercs();
void DisableInsuranceContractNextPreviousbuttons(); void DisableInsuranceContractNextPreviousbuttons();
void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate); void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate);
void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID ); void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID );
@@ -943,20 +943,17 @@ void SelectInsuranceContractRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason
} }
} }
INT8 CountInsurableMercs() UINT16 CountInsurableMercs()
{ {
UINT16 cnt; UINT16 bCount = 0;
SOLDIERTYPE *pSoldier;
UINT16 bLastTeamID;
INT8 bCount=0;
// Set locator to first merc // Set locator to first merc
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID Soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) for ( ; Soldier <= bLastTeamID; ++Soldier)
{ {
if (MercIsInsurable(pSoldier)) if (MercIsInsurable(Soldier))
{ {
bCount++; bCount++;
} }
@@ -1094,33 +1091,29 @@ void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID )
// determines if a merc will run out of their insurance contract // determines if a merc will run out of their insurance contract
void DailyUpdateOfInsuredMercs() void DailyUpdateOfInsuredMercs()
{ {
INT16 cnt; SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID;
INT16 bLastTeamID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
SOLDIERTYPE *pSoldier;
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; for ( ; Soldier <= bLastTeamID; ++Soldier)
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++)
{ {
//if the soldier is in the team array //if the soldier is in the team array
if( pSoldier->bActive ) if( Soldier->bActive )
{ {
//if the merc has life insurance //if the merc has life insurance
if( pSoldier->usLifeInsurance ) if( Soldier->usLifeInsurance )
{ {
//if the merc wasn't just hired //if the merc wasn't just hired
if( (INT16)GetWorldDay() != pSoldier->iStartOfInsuranceContract ) if( (INT16)GetWorldDay() != Soldier->iStartOfInsuranceContract )
{ {
//if the contract has run out of time //if the contract has run out of time
if( GetTimeRemainingOnSoldiersInsuranceContract( pSoldier ) <= 0 ) if( GetTimeRemainingOnSoldiersInsuranceContract( Soldier ) <= 0 )
{ {
//if the soldier isn't dead //if the soldier isn't dead
if( !IsMercDead( pSoldier->ubProfile ) ) if( !IsMercDead( Soldier->ubProfile ) )
{ {
pSoldier->usLifeInsurance = 0; Soldier->usLifeInsurance = 0;
pSoldier->iTotalLengthOfInsuranceContract = 0; Soldier->iTotalLengthOfInsuranceContract = 0;
pSoldier->iStartOfInsuranceContract = 0; Soldier->iStartOfInsuranceContract = 0;
} }
} }
} }
@@ -1254,20 +1247,16 @@ void InsContractNoMercsPopupCallBack( UINT8 bExitValue )
void BuildInsuranceArray() void BuildInsuranceArray()
{ {
INT16 cnt; SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID;
SOLDIERTYPE *pSoldier; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
INT16 bLastTeamID;
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
gsMaxPlayersOnTeam = 0; gsMaxPlayersOnTeam = 0;
// store profile #s of all insurable mercs in an array // store profile #s of all insurable mercs in an array
for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) for ( ; Soldier <= bLastTeamID; ++Soldier)
{ {
if( MercIsInsurable(pSoldier) ) if( MercIsInsurable(Soldier) )
{ {
gubInsuranceMercArray[ gsMaxPlayersOnTeam ] = pSoldier->ubProfile; gubInsuranceMercArray[ gsMaxPlayersOnTeam ] = Soldier->ubProfile;
gsMaxPlayersOnTeam++; gsMaxPlayersOnTeam++;
} }
} }
@@ -1787,14 +1776,13 @@ INT32 CalcStartDayOfInsurance( SOLDIERTYPE *pSoldier )
BOOLEAN AreAnyAimMercsOnTeam( ) BOOLEAN AreAnyAimMercsOnTeam( )
{ {
SOLDIERTYPE *pSoldier = NULL; SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID;
SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
for( int cnt = 0; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) for( ; Soldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++Soldier)
{ {
pSoldier = MercPtrs[cnt];
//check to see if any of the mercs are AIM mercs //check to see if any of the mercs are AIM mercs
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) if( Soldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
{ {
return TRUE; return TRUE;
} }
+3 -3
View File
@@ -6243,7 +6243,7 @@ void PrintNumberOnTeam( void )
{ {
CHAR16 pString[ 32 ]; CHAR16 pString[ 32 ];
SOLDIERTYPE *pSoldier, *pTeamSoldier; SOLDIERTYPE *pSoldier, *pTeamSoldier;
INT32 cnt=0; SoldierID cnt = 0;
INT32 iCounter=0; INT32 iCounter=0;
UINT16 usPosX, usPosY, usFontHeight, usStrLength; UINT16 usPosX, usPosY, usFontHeight, usStrLength;
@@ -6256,9 +6256,9 @@ void PrintNumberOnTeam( void )
// grab number on team // grab number on team
pSoldier = MercPtrs[0]; pSoldier = MercPtrs[0];
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++, pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt )
{ {
pTeamSoldier = MercPtrs[ cnt ]; pTeamSoldier = cnt;
if( ( pTeamSoldier->bActive)&&( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) ) if( ( pTeamSoldier->bActive)&&( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) )
{ {
+23 -28
View File
@@ -340,13 +340,12 @@ BOOLEAN EnterMercCompareAnalyze()
// We fill two dropdowns with all mercs on our team // We fill two dropdowns with all mercs on our team
std::vector<std::pair<INT16, STR16> > mercvector; std::vector<std::pair<INT16, STR16> > mercvector;
SOLDIERTYPE* pSoldier = NULL; SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; id <= lastid; ++id)
for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ )
{ {
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE ) if ( id->bActive && id->ubProfile != NO_PROFILE )
mercvector.push_back( std::make_pair( pSoldier->ubProfile, gMercProfiles[pSoldier->ubProfile].zNickname ) ); mercvector.push_back( std::make_pair( id->ubProfile, gMercProfiles[id->ubProfile].zNickname ) );
} }
DropDownTemplate<DROPDOWNNR_MERCCOMPARE1>::getInstance( ).SetEntries( mercvector ); DropDownTemplate<DROPDOWNNR_MERCCOMPARE1>::getInstance( ).SetEntries( mercvector );
@@ -976,17 +975,16 @@ BOOLEAN EnterMercCompareMatrix( )
// create a map of all current squads with at least 2 members // create a map of all current squads with at least 2 members
std::map<INT16, INT16> squadmap; std::map<INT16, INT16> squadmap;
SOLDIERTYPE* pSoldier = NULL; SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; id <= lastid; ++id )
for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ )
{ {
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bAssignment < ON_DUTY ) if ( id->bActive && id->ubProfile != NO_PROFILE && id->bAssignment < ON_DUTY )
{ {
if ( squadmap.find( pSoldier->bAssignment ) == squadmap.end() ) if ( squadmap.find( id->bAssignment ) == squadmap.end() )
squadmap[pSoldier->bAssignment] = 1; squadmap[id->bAssignment] = 1;
else else
++squadmap[pSoldier->bAssignment]; ++squadmap[id->bAssignment];
} }
} }
@@ -1079,15 +1077,14 @@ void RenderMercCompareMatrix( )
// display a table with all squadmembers // display a table with all squadmembers
std::vector<UINT8> squadvector; std::vector<UINT8> squadvector;
SOLDIERTYPE* pSoldier = NULL; SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; id <= lastid; ++id )
for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ )
{ {
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bAssignment == gSquadToShow ) if ( id->bActive && id->ubProfile != NO_PROFILE && id->bAssignment == gSquadToShow )
{ {
// remember squamember // remember squamember
squadvector.push_back( pSoldier->ubProfile ); squadvector.push_back( id->ubProfile );
} }
} }
@@ -1117,13 +1114,12 @@ void RenderMercCompareMatrix( )
for ( std::vector<UINT8>::iterator it = squadvector.begin(); it != itend; ++it ) for ( std::vector<UINT8>::iterator it = squadvector.begin(); it != itend; ++it )
{ {
INT16 idA = GetSoldierIDFromMercID( (*it) ); SoldierID idA = GetSoldierIDFromMercID( (*it) );
if ( idA < 0 ) if ( idA == NOBODY )
continue; continue;
SOLDIERTYPE* pSoldierA = MercPtrs[idA]; SOLDIERTYPE* pSoldierA = idA;
if ( !pSoldierA ) if ( !pSoldierA )
continue; continue;
@@ -1140,9 +1136,9 @@ void RenderMercCompareMatrix( )
for ( std::vector<UINT8>::iterator it2 = squadvector.begin( ); it2 != itend; ++it2 ) for ( std::vector<UINT8>::iterator it2 = squadvector.begin( ); it2 != itend; ++it2 )
{ {
INT16 idB = GetSoldierIDFromMercID( (*it2) ); SoldierID idB = GetSoldierIDFromMercID( (*it2) );
if ( idB < 0 ) if ( idB == NOBODY )
continue; continue;
if ( idA == idB ) if ( idA == idB )
@@ -1151,8 +1147,7 @@ void RenderMercCompareMatrix( )
continue; continue;
} }
SOLDIERTYPE* pSoldierB = MercPtrs[idB]; SOLDIERTYPE* pSoldierB = idB;
if ( !pSoldierB ) if ( !pSoldierB )
continue; continue;
+4 -3
View File
@@ -558,10 +558,11 @@ void EnterPersonnel( void )
// Fill in the current team list // Fill in the current team list
maxCurrentTeamIndex = -1; maxCurrentTeamIndex = -1;
SOLDIERTYPE *pTeamSoldier = MercPtrs[ 0 ]; SOLDIERTYPE *pTeamSoldier = MercPtrs[ 0 ];
for (int idx = gTacticalStatus.Team[ pTeamSoldier->bTeam ].bFirstID; for (SoldierID idx = gTacticalStatus.Team[ pTeamSoldier->bTeam ].bFirstID;
idx <= gTacticalStatus.Team[ pTeamSoldier->bTeam ].bLastID; idx <= gTacticalStatus.Team[ pTeamSoldier->bTeam ].bLastID;
++idx) { ++idx)
pTeamSoldier = MercPtrs[ idx ]; {
pTeamSoldier = idx;
// WANNE: Bugfix: Also show the roboter in ther personnel screen. This bug was introduced in revision 2498, when Many Mercenary was included. // WANNE: Bugfix: Also show the roboter in ther personnel screen. This bug was introduced in revision 2498, when Many Mercenary was included.
//if ((pTeamSoldier->bActive) && //if ((pTeamSoldier->bActive) &&