From 2eb16c583c82fddf842a76f64ee1698aaf237b28 Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Sat, 30 Nov 2024 17:18:04 +0200 Subject: [PATCH] Use SoldierID --- Laptop/insurance Contract.cpp | 66 ++++++++++++++--------------------- Laptop/laptop.cpp | 6 ++-- Laptop/merccompare.cpp | 51 ++++++++++++--------------- Laptop/personnel.cpp | 7 ++-- 4 files changed, 57 insertions(+), 73 deletions(-) diff --git a/Laptop/insurance Contract.cpp b/Laptop/insurance Contract.cpp index ab97fb1b..c031f41f 100644 --- a/Laptop/insurance Contract.cpp +++ b/Laptop/insurance Contract.cpp @@ -163,7 +163,7 @@ BOOLEAN DisplayOrderGrid( UINT8 ubGridNumber, UINT8 ubMercID ); INT8 GetNumberOfHireMercsStartingFromID( UINT8 ubStartMercID ); //INT32 CalculateInsuranceCost( SOLDIERTYPE *pSoldier, BOOLEAN fHaveInsurance ); void InsuranceContractUserTextFieldCallBack( UINT8 ubID, BOOLEAN fEntering ); -INT8 CountInsurableMercs(); +UINT16 CountInsurableMercs(); void DisableInsuranceContractNextPreviousbuttons(); void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate); void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID ); @@ -943,20 +943,17 @@ void SelectInsuranceContractRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason } } -INT8 CountInsurableMercs() +UINT16 CountInsurableMercs() { - UINT16 cnt; - SOLDIERTYPE *pSoldier; - UINT16 bLastTeamID; - INT8 bCount=0; + UINT16 bCount = 0; // Set locator to first merc - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SoldierID Soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + 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++; } @@ -1094,33 +1091,29 @@ void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID ) // determines if a merc will run out of their insurance contract void DailyUpdateOfInsuredMercs() { - INT16 cnt; - INT16 bLastTeamID; - SOLDIERTYPE *pSoldier; + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + for ( ; Soldier <= bLastTeamID; ++Soldier) { //if the soldier is in the team array - if( pSoldier->bActive ) + if( Soldier->bActive ) { //if the merc has life insurance - if( pSoldier->usLifeInsurance ) + if( Soldier->usLifeInsurance ) { //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( GetTimeRemainingOnSoldiersInsuranceContract( pSoldier ) <= 0 ) + if( GetTimeRemainingOnSoldiersInsuranceContract( Soldier ) <= 0 ) { //if the soldier isn't dead - if( !IsMercDead( pSoldier->ubProfile ) ) + if( !IsMercDead( Soldier->ubProfile ) ) { - pSoldier->usLifeInsurance = 0; - pSoldier->iTotalLengthOfInsuranceContract = 0; - pSoldier->iStartOfInsuranceContract = 0; + Soldier->usLifeInsurance = 0; + Soldier->iTotalLengthOfInsuranceContract = 0; + Soldier->iStartOfInsuranceContract = 0; } } } @@ -1254,20 +1247,16 @@ void InsContractNoMercsPopupCallBack( UINT8 bExitValue ) void BuildInsuranceArray() { - INT16 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; gsMaxPlayersOnTeam = 0; // 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++; } } @@ -1787,14 +1776,13 @@ INT32 CalcStartDayOfInsurance( SOLDIERTYPE *pSoldier ) 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 - if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( Soldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) { return TRUE; } diff --git a/Laptop/laptop.cpp b/Laptop/laptop.cpp index 00c2f161..9809622f 100644 --- a/Laptop/laptop.cpp +++ b/Laptop/laptop.cpp @@ -6243,7 +6243,7 @@ void PrintNumberOnTeam( void ) { CHAR16 pString[ 32 ]; SOLDIERTYPE *pSoldier, *pTeamSoldier; - INT32 cnt=0; + SoldierID cnt = 0; INT32 iCounter=0; UINT16 usPosX, usPosY, usFontHeight, usStrLength; @@ -6256,9 +6256,9 @@ void PrintNumberOnTeam( void ) // grab number on team 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 ) ) ) { diff --git a/Laptop/merccompare.cpp b/Laptop/merccompare.cpp index 51c2fd94..4219df61 100644 --- a/Laptop/merccompare.cpp +++ b/Laptop/merccompare.cpp @@ -340,13 +340,12 @@ BOOLEAN EnterMercCompareAnalyze() // We fill two dropdowns with all mercs on our team std::vector > mercvector; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id) { - if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE ) - mercvector.push_back( std::make_pair( pSoldier->ubProfile, gMercProfiles[pSoldier->ubProfile].zNickname ) ); + if ( id->bActive && id->ubProfile != NO_PROFILE ) + mercvector.push_back( std::make_pair( id->ubProfile, gMercProfiles[id->ubProfile].zNickname ) ); } DropDownTemplate::getInstance( ).SetEntries( mercvector ); @@ -976,17 +975,16 @@ BOOLEAN EnterMercCompareMatrix( ) // create a map of all current squads with at least 2 members std::map squadmap; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - 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() ) - squadmap[pSoldier->bAssignment] = 1; + if ( squadmap.find( id->bAssignment ) == squadmap.end() ) + squadmap[id->bAssignment] = 1; else - ++squadmap[pSoldier->bAssignment]; + ++squadmap[id->bAssignment]; } } @@ -1079,15 +1077,14 @@ void RenderMercCompareMatrix( ) // display a table with all squadmembers std::vector squadvector; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bAssignment == gSquadToShow ) + if ( id->bActive && id->ubProfile != NO_PROFILE && id->bAssignment == gSquadToShow ) { // remember squamember - squadvector.push_back( pSoldier->ubProfile ); + squadvector.push_back( id->ubProfile ); } } @@ -1117,13 +1114,12 @@ void RenderMercCompareMatrix( ) for ( std::vector::iterator it = squadvector.begin(); it != itend; ++it ) { - INT16 idA = GetSoldierIDFromMercID( (*it) ); + SoldierID idA = GetSoldierIDFromMercID( (*it) ); - if ( idA < 0 ) + if ( idA == NOBODY ) continue; - SOLDIERTYPE* pSoldierA = MercPtrs[idA]; - + SOLDIERTYPE* pSoldierA = idA; if ( !pSoldierA ) continue; @@ -1140,9 +1136,9 @@ void RenderMercCompareMatrix( ) for ( std::vector::iterator it2 = squadvector.begin( ); it2 != itend; ++it2 ) { - INT16 idB = GetSoldierIDFromMercID( (*it2) ); + SoldierID idB = GetSoldierIDFromMercID( (*it2) ); - if ( idB < 0 ) + if ( idB == NOBODY ) continue; if ( idA == idB ) @@ -1151,8 +1147,7 @@ void RenderMercCompareMatrix( ) continue; } - SOLDIERTYPE* pSoldierB = MercPtrs[idB]; - + SOLDIERTYPE* pSoldierB = idB; if ( !pSoldierB ) continue; diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index 775ff5f4..65aabfe2 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -558,10 +558,11 @@ void EnterPersonnel( void ) // Fill in the current team list maxCurrentTeamIndex = -1; 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) { - pTeamSoldier = MercPtrs[ idx ]; + ++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. //if ((pTeamSoldier->bActive) &&