From b74ccf3ddc78adba208b92eb0efd4ead91e7c0ca Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Sun, 17 Nov 2024 23:45:48 +0200 Subject: [PATCH] Convert to SoldierID --- Ja2/gamescreen.cpp | 10 +-- Ja2/gamescreen.h | 10 +-- Strategic/ASD.cpp | 2 +- Strategic/Assignments.cpp | 2 +- Strategic/Assignments.h | 4 +- Strategic/Auto Resolve.cpp | 4 +- Tactical/Handle UI.cpp | 122 ++++++++++++++-------------- Tactical/Handle UI.h | 8 +- Tactical/Interface Cursors.cpp | 2 +- Tactical/Interface Items.cpp | 44 +++++----- Tactical/Interface Panels.cpp | 6 +- Tactical/Interface Panels.h | 2 +- Tactical/Interface.cpp | 2 +- Tactical/Interface.h | 2 +- Tactical/Merc Entering.cpp | 76 ++++++++--------- Tactical/Merc Hiring.cpp | 4 +- Tactical/Merc Hiring.h | 2 +- Tactical/Overhead Types.h | 2 +- Tactical/Real Time Input.cpp | 4 +- Tactical/Soldier Control.h | 118 +++++++++++++-------------- Tactical/SoldierTooltips.cpp | 4 +- Tactical/Turn Based Input.cpp | 24 +++--- Tactical/UI Cursors.cpp | 36 ++++---- Tactical/UI Cursors.h | 4 +- Tactical/merc entering.h | 4 +- TacticalAI/AIInternals.h | 30 +++---- TacticalAI/AIList.cpp | 22 ++--- TacticalAI/AIList.h | 18 ++-- TacticalAI/AIMain.cpp | 34 ++++---- TacticalAI/Attacks.cpp | 54 ++++++------ TacticalAI/CreatureDecideAction.cpp | 4 +- TacticalAI/DecideAction.cpp | 8 +- TacticalAI/FindLocations.cpp | 10 +-- TacticalAI/Knowledge.cpp | 2 +- TacticalAI/Medical.cpp | 14 ++-- TacticalAI/NPC.cpp | 11 +-- TacticalAI/ai.h | 8 +- TileEngine/Explosion Control.cpp | 2 +- TileEngine/Explosion Control.h | 2 +- TileEngine/SmokeEffects.cpp | 2 +- TileEngine/SmokeEffects.h | 18 ++-- TileEngine/overhead map.cpp | 2 +- TileEngine/physics.cpp | 4 +- TileEngine/pits.cpp | 4 +- TileEngine/structure.cpp | 4 +- 45 files changed, 376 insertions(+), 375 deletions(-) diff --git a/Ja2/gamescreen.cpp b/Ja2/gamescreen.cpp index d95c5266..e4f9046d 100644 --- a/Ja2/gamescreen.cpp +++ b/Ja2/gamescreen.cpp @@ -108,10 +108,10 @@ INT32 giCounterPeriodOverlay = 0; BOOLEAN gfExitToNewSector = FALSE; //UINT8 gubNewSectorExitDirection; -BOOLEAN gfGameScreenLocateToSoldier = FALSE; -BOOLEAN gfEnteringMapScreen = FALSE; -UINT32 uiOldMouseCursor; -UINT16 gubPreferredInitialSelectedGuy = NOBODY; +BOOLEAN gfGameScreenLocateToSoldier = FALSE; +BOOLEAN gfEnteringMapScreen = FALSE; +UINT32 uiOldMouseCursor; +SoldierID gubPreferredInitialSelectedGuy = NOBODY; BOOLEAN gfTacticalIsModal = FALSE; MOUSE_REGION gTacticalDisableRegion; @@ -1038,7 +1038,7 @@ void TacticalScreenLocateToSoldier( ) if ( gubPreferredInitialSelectedGuy != NOBODY ) { // ATE: Put condition here... - if ( OK_CONTROLLABLE_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) && OK_INTERRUPT_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) ) + if ( OK_CONTROLLABLE_MERC( gubPreferredInitialSelectedGuy ) && OK_INTERRUPT_MERC( gubPreferredInitialSelectedGuy ) ) { LocateSoldier( gubPreferredInitialSelectedGuy, 10 ); SelectSoldier( gubPreferredInitialSelectedGuy, FALSE, TRUE ); diff --git a/Ja2/gamescreen.h b/Ja2/gamescreen.h index 49a65019..11a0ccf3 100644 --- a/Ja2/gamescreen.h +++ b/Ja2/gamescreen.h @@ -1,7 +1,7 @@ #ifndef _GAMESCREEN_H #define _GAMESCREEN_H - +#include "Overhead Types.h" #include "fade screen.h" #define ARE_IN_FADE_IN( ) ( gfFadeIn || gfFadeInitialized ) @@ -14,9 +14,9 @@ void FadeOutGameScreen( ); typedef void (*MODAL_HOOK)( void ); -extern BOOLEAN gfGameScreenLocateToSoldier; -extern BOOLEAN gfEnteringMapScreen; -extern UINT16 gubPreferredInitialSelectedGuy; +extern BOOLEAN gfGameScreenLocateToSoldier; +extern BOOLEAN gfEnteringMapScreen; +extern SoldierID gubPreferredInitialSelectedGuy; void EnterMapScreen( ); @@ -41,4 +41,4 @@ void InitHelicopterEntranceByMercs( void ); void InternalLeaveTacticalScreen( UINT32 uiNewScreen ); -#endif \ No newline at end of file +#endif diff --git a/Strategic/ASD.cpp b/Strategic/ASD.cpp index 41bad719..443c4d89 100644 --- a/Strategic/ASD.cpp +++ b/Strategic/ASD.cpp @@ -1091,7 +1091,7 @@ void EnemyHeliSAMCheck( INT16 id ) // also check whether this sector is not enemy-controlled - we can't have the AI shooting at its own helis if ( pSAMStrategicMap && !pSAMStrategicMap->fEnemyControlled ) { - UINT16 ubBestSAMOperatorID = NOBODY; + SoldierID ubBestSAMOperatorID = NOBODY; FLOAT samcth = GetBestSAMOperatorCTH_Player( gpSamSectorX[i], gpSamSectorY[i], 0, &ubBestSAMOperatorID ); // cth is reduced if SAM is damaged, even if it can still operate diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 2a4aaec5..bed21b31 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -3776,7 +3776,7 @@ UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPt } // Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present -FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID ) +FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID ) { // if nobody is here, nobody can fire FLOAT bestsamcth = 0.0f; diff --git a/Strategic/Assignments.h b/Strategic/Assignments.h index 03672ed7..fe5c2c05 100644 --- a/Strategic/Assignments.h +++ b/Strategic/Assignments.h @@ -318,7 +318,7 @@ UINT32 CalculatePrisonGuardValue(SOLDIERTYPE *pSoldier ); UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts ); // Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present -FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID ); +FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID ); INT16 GetTrainWorkerPts(SOLDIERTYPE *pSoldier); @@ -592,4 +592,4 @@ UINT8 CalcSoldierNeedForSleep( SOLDIERTYPE *pSoldier ); // Flugente: administration assignment FLOAT GetAdministrationPercentage( INT16 sX, INT16 sY ); -#endif \ No newline at end of file +#endif diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 6613354a..e55eb561 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -3009,9 +3009,7 @@ void MercCellMouseClickCallback( MOUSE_REGION *reg, INT32 reason ) if( gpAR->pRobotCell ) { //if controller is retreating, make the robot retreat too. - UINT16 ubRobotControllerID; - - ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; + SoldierID ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; if( ubRobotControllerID == NOBODY ) { diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index aa5c7910..f07301e8 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -293,7 +293,7 @@ BOOLEAN gfResetUIMovementOptimization = FALSE; BOOLEAN gfResetUIItemCursorOptimization = FALSE; BOOLEAN gfBeginVehicleCursor = FALSE; INT32 gsOutOfRangeGridNo = NOWHERE; -UINT16 gubOutOfRangeMerc = NOBODY; +SoldierID gubOutOfRangeMerc = NOBODY; BOOLEAN gfOKForExchangeCursor = FALSE; UINT32 guiUIInterfaceSwapCursorsTime = 0; INT32 gsJumpOverGridNo = 0; @@ -463,29 +463,29 @@ BOOLEAN gfUICanBeginAllMoveCycle = FALSE; // GEts set so we know that the ne INT32 gsSelectedGridNo = 0; INT16 gsSelectedLevel = I_GROUND_LEVEL; -INT16 gsSelectedGuy = NOBODY; +SoldierID gsSelectedGuy = NOBODY; -BOOLEAN gfUIDisplayDamage = FALSE; -INT8 gbDamage = 0; -INT32 gsDamageGridNo = 0; +BOOLEAN gfUIDisplayDamage = FALSE; +INT8 gbDamage = 0; +INT32 gsDamageGridNo = 0; -BOOLEAN gfUIRefreshArrows = FALSE; +BOOLEAN gfUIRefreshArrows = FALSE; // Thse flags are not re-set after each frame -BOOLEAN gfPlotNewMovement = FALSE; -BOOLEAN gfPlotNewMovementNOCOST = FALSE; -UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN; -INT8 gbAdjustStanceDiff = 0; -INT8 gbClimbID = 0; +BOOLEAN gfPlotNewMovement = FALSE; +BOOLEAN gfPlotNewMovementNOCOST = FALSE; +UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN; +INT8 gbAdjustStanceDiff = 0; +INT8 gbClimbID = 0; -BOOLEAN gfUIShowExitEast = FALSE; -BOOLEAN gfUIShowExitWest = FALSE; -BOOLEAN gfUIShowExitNorth = FALSE; -BOOLEAN gfUIShowExitSouth = FALSE; -BOOLEAN gfUIShowExitExitGrid = FALSE; +BOOLEAN gfUIShowExitEast = FALSE; +BOOLEAN gfUIShowExitWest = FALSE; +BOOLEAN gfUIShowExitNorth = FALSE; +BOOLEAN gfUIShowExitSouth = FALSE; +BOOLEAN gfUIShowExitExitGrid = FALSE; -BOOLEAN gfUINewStateForIntTile = FALSE; +BOOLEAN gfUINewStateForIntTile = FALSE; BOOLEAN gfUIForceReExamineCursorData = FALSE; @@ -2210,7 +2210,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) // anv: if we selected vehicle driver, move his vehicle if ( pSoldier->flags.uiStatusFlags & (SOLDIER_DRIVER ) ) { - pSoldier = GetSoldierStructureForVehicle( MercPtrs[ pSoldier->ubID ]->iVehicleId ); + pSoldier = GetSoldierStructureForVehicle( pSoldier->iVehicleId ); // anv: if shift is pressed, treat is as ram + move - flag has to be set for later add structure checks if ( _KeyDown( SHIFT ) ) { @@ -2981,7 +2981,7 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; } if ( pTSoldier != NULL ) @@ -3464,7 +3464,7 @@ BOOLEAN SelectedMercCanAffordMove( ) return( FALSE ); } -void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) +void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) { INT8 bNewDirection; SOLDIERTYPE *pSoldier; @@ -3625,11 +3625,11 @@ void ToggleLookCursorMode( UINT32 *puiNewEvent ) BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode ) { - SOLDIERTYPE *pSoldier; - UINT16 usSoldierIndex; - UINT32 uiMercFlags; - INT32 usMapPos; - BOOLEAN fFoundMerc = FALSE; + SOLDIERTYPE *pSoldier; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; + INT32 usMapPos; + BOOLEAN fFoundMerc = FALSE; if( !GetMouseMapPos( &usMapPos) ) { @@ -3768,16 +3768,16 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode ) ErasePath( TRUE ); // Show cursor with highlight on selected merc - guiNewUICursor = NO_UICURSOR; + guiNewUICursor = NO_UICURSOR; // Show cursor with highlight - gfUIHandleSelection = ENEMY_GUY_SELECTION; - gsSelectedGridNo = pSoldier->sGridNo; - gsSelectedLevel = pSoldier->pathing.bLevel; + gfUIHandleSelection = ENEMY_GUY_SELECTION; + gsSelectedGridNo = pSoldier->sGridNo; + gsSelectedLevel = pSoldier->pathing.bLevel; } } - gfUIHandleSelectionAboveGuy = TRUE; - gsSelectedGuy = usSoldierIndex; + gfUIHandleSelectionAboveGuy = TRUE; + gsSelectedGuy = usSoldierIndex; } } else @@ -3838,9 +3838,9 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent ) } -void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance ) +void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; + SOLDIERTYPE *pSoldier = ubSoldierID; if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { @@ -4058,7 +4058,7 @@ void GetCursorMovementFlags( UINT32 *puiCursorFlags ) BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags ) { BOOLEAN fSetCursor = FALSE; - static UINT16 usTargetID = NOBODY; + static SoldierID usTargetID = NOBODY; static BOOLEAN fTargetFound = FALSE; BOOLEAN fTargetFoundAndLookingForOne = FALSE; @@ -4588,7 +4588,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) // Check if we are on a target if ( gfUIFullTargetFound ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo == -1 ) { sActionGridNo = sAdjustedGridNo; @@ -4596,7 +4596,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) ///////////////////////////////////////////////////////////////////////////////////////// // CHANGED BY SANDRO - REDUCE AP COST TO STEAL FOR MARTIAL ARTS AND HAND TO HAND NEW TRAITS - if (MercPtrs[ gusUIFullTargetID ]->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem) + if (gusUIFullTargetID->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem) { sAPCost += (GetBasicAPsToPickupItem( pSoldier )); // stealing from collapsed soldiers is treated differently } @@ -4641,7 +4641,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) { if ( gfUIFullTargetFound ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if (!TileIsOutOfBounds(sActionGridNo)) { @@ -4813,7 +4813,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( IsRepairableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 ) @@ -4830,7 +4830,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( IsRefuelableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 ) @@ -4847,7 +4847,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( pSoldier->pathing.bLevel == 0 ) @@ -4874,7 +4874,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[gusUIFullTargetID]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } UINT16 structindex; @@ -4893,7 +4893,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; return( TRUE ); } @@ -4916,7 +4916,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->IsValidBloodDonor() ) + if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->IsValidBloodDonor() ) return( TRUE ); } } @@ -4930,7 +4930,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->CanReceiveSplint() ) + if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->CanReceiveSplint() ) return( TRUE ); } } @@ -4944,7 +4944,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; return( TRUE ); } @@ -4998,7 +4998,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) } // IF a guy's here, chack if they need medical help! - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // If we are a vehicle... if ( ( pTSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_ROBOT ) ) ) @@ -5578,12 +5578,12 @@ UINT32 UIHandleLCLook( UI_EVENT *pUIEvent ) UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) { - SOLDIERTYPE *pSoldier; - UINT16 ubTargID; - UINT32 uiRange; - INT32 usMapPos; - BOOLEAN fValidTalkableGuy = FALSE; - INT32 sTargetGridNo; + SOLDIERTYPE *pSoldier; + SoldierID ubTargID; + UINT32 uiRange; + INT32 usMapPos; + BOOLEAN fValidTalkableGuy = FALSE; + INT32 sTargetGridNo; // Get soldier if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) ) @@ -5616,7 +5616,7 @@ UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) // Get distance away if ( fValidTalkableGuy ) { - sTargetGridNo = MercPtrs[ ubTargID ]->sGridNo; + sTargetGridNo = ubTargID->sGridNo; } uiRange = PythSpacesAway( pSoldier->sGridNo, sTargetGridNo ); @@ -6365,7 +6365,7 @@ UINT32 UIHandleLAEndLockOurTurn( UI_EVENT *pUIEvent ) -BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) +BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) { // Check if there is a guy here to talk to! if ( gfUIFullTargetFound ) @@ -6790,7 +6790,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM // unless we are over our own vehicle, then we can call vehicle menu if( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; if( pSoldier->iVehicleId == pTSoldier->bVehicleID ) { guiNewUICursor = ENTER_VEHICLE_UICURSOR; @@ -6803,7 +6803,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM if ( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // anv: added condition - make sure we won't put vehicle in another vehicle if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) ) @@ -7198,7 +7198,7 @@ BOOLEAN ValidQuickExchangePosition( ) // Check if we over a civ if ( gfUIFullTargetFound ) { - pOverSoldier = MercPtrs[ gusUIFullTargetID ]; + pOverSoldier = gusUIFullTargetID; //KM: Replaced this older if statement for the new one which allows exchanging with militia //if ( ( pOverSoldier->bSide != gbPlayerNum ) && pOverSoldier->aiData.bNeutral ) @@ -7265,7 +7265,7 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec INT32 sFourGrids[4], sDistance=0, sSpot, sInBetween, sInBetween2, iDoorGridNo; static const UINT8 sDirs[4] = { NORTH, EAST, SOUTH, WEST }; //INT32 cnt; - UINT16 ubGuyThere; + SoldierID ubGuyThere; UINT8 ubMovementCost, ubDirection; INT8 bTileHeight = 0; @@ -7370,7 +7370,7 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel ); if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID ) { - if ( gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } @@ -7444,12 +7444,12 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec // If there's a guy on any of the two middle tiles, and he's not prone, we can't jump over him ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel ); - if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } ubGuyThere = WhoIsThere2( sInBetween2, pSoldier->pathing.bLevel ); - if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } diff --git a/Tactical/Handle UI.h b/Tactical/Handle UI.h index ce634e5c..eab79f68 100644 --- a/Tactical/Handle UI.h +++ b/Tactical/Handle UI.h @@ -198,7 +198,7 @@ extern UINT32 guiShowUPDownArrows; extern BOOLEAN gfUIHandleSelection; extern BOOLEAN gfUIHandleSelectionAboveGuy; extern INT32 gsSelectedGridNo; -extern INT16 gsSelectedGuy; +extern SoldierID gsSelectedGuy; extern BOOLEAN gfUIInDeadlock; extern UINT16 gUIDeadlockedSoldier; @@ -320,13 +320,13 @@ void AdjustSoldierCreationStartValues( ); BOOLEAN SelectedMercCanAffordAttack( ); BOOLEAN SelectedMercCanAffordMove( ); -void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); +void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); void ToggleHandCursorMode( UINT32 *puiNewEvent ); void ToggleTalkCursorMode( UINT32 *puiNewEvent ); void ToggleLookCursorMode( UINT32 *puiNewEvent ); -void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance ); +void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance ); void GetCursorMovementFlags( UINT32 *puiCursorFlags ); BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags ); @@ -334,7 +334,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ); BOOLEAN UIOkForItemPickup( SOLDIERTYPE *pSoldier, INT32 sGridNo ); -BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); +BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); BOOLEAN IsValidTalkableNPC( SoldierID ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); BOOLEAN HandleTalkInit( ); diff --git a/Tactical/Interface Cursors.cpp b/Tactical/Interface Cursors.cpp index 386e086a..baf0ad0a 100644 --- a/Tactical/Interface Cursors.cpp +++ b/Tactical/Interface Cursors.cpp @@ -335,7 +335,7 @@ BOOLEAN DrawUICursor( ) // If we are over a target, jump to that.... if ( gfUIFullTargetFound ) { - gusTargetDropPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + gusTargetDropPos = gusUIFullTargetID->sGridNo; } // Put tile on the floor diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index cdd87caa..b3f56f6a 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -8773,23 +8773,23 @@ BOOLEAN SoldierCanSeeCatchComing( SOLDIERTYPE *pSoldier, INT32 sSrcGridNo ) void DrawItemTileCursor( ) { - INT32 usMapPos; - UINT16 usIndex; - UINT16 ubSoldierID; - INT16 sAPCost; - BOOLEAN fRecalc; - UINT32 uiCursorFlags; - INT32 sFinalGridNo; - UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW; - SOLDIERTYPE *pSoldier; - BOOLEAN fGiveItem = FALSE; - INT32 sActionGridNo; - UINT8 ubDirection; - static UINT32 uiOldCursorId = 0; - static UINT16 usOldMousePos = 0; - INT16 sEndZ = 0; - INT16 sDist; - INT8 bLevel; + INT32 usMapPos; + UINT16 usIndex; + SoldierID ubSoldierID; + INT16 sAPCost; + BOOLEAN fRecalc; + UINT32 uiCursorFlags; + INT32 sFinalGridNo; + UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW; + SOLDIERTYPE *pSoldier; + BOOLEAN fGiveItem = FALSE; + INT32 sActionGridNo; + UINT8 ubDirection; + static UINT32 uiOldCursorId = 0; + static UINT16 usOldMousePos = 0; + INT16 sEndZ = 0; + INT16 sDist; + INT8 bLevel; if (GetMouseMapPos( &usMapPos) ) { @@ -9120,15 +9120,15 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) } - UINT8 ubDirection; - UINT16 ubSoldierID; - UINT16 usItem; + UINT8 ubDirection; + SoldierID ubSoldierID; + UINT16 usItem; INT16 sAPCost; SOLDIERTYPE *pSoldier=NULL; UINT8 ubThrowActionCode=0; - UINT32 uiThrowActionData=0; + UINT32 uiThrowActionData=0; INT16 sEndZ = 0; - BOOLEAN fGiveItem = FALSE; + BOOLEAN fGiveItem = FALSE; INT32 sGridNo; INT16 sDist; diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index d606dfb7..40df6462 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -6403,10 +6403,10 @@ void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed ) } } -void EndRadioLocator( UINT16 ubID ) +void EndRadioLocator( SoldierID ubID ) { - MercPtrs[ ubID ]->flags.fFlashLocator = FALSE; - MercPtrs[ ubID ]->flags.fShowLocator = FALSE; + ubID->flags.fFlashLocator = FALSE; + ubID->flags.fShowLocator = FALSE; } diff --git a/Tactical/Interface Panels.h b/Tactical/Interface Panels.h index 95563cf2..8908aa30 100644 --- a/Tactical/Interface Panels.h +++ b/Tactical/Interface Panels.h @@ -108,7 +108,7 @@ extern INT8 gbNewItemCycle[ NUM_INV_SLOTS ]; extern UINT8 gubNewItemMerc; void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed ); -void EndRadioLocator( UINT16 ubID ); +void EndRadioLocator( SoldierID ubID ); extern MOUSE_REGION gSMPanelRegion; diff --git a/Tactical/Interface.cpp b/Tactical/Interface.cpp index 11f920fd..3d543bf6 100644 --- a/Tactical/Interface.cpp +++ b/Tactical/Interface.cpp @@ -1667,7 +1667,7 @@ void DrawCTHPixelToBuffer( UINT16 *pBuffer, UINT32 uiPitch, INT16 sLeft, INT16 s //QUOTE_SYSTEM_STRUCT soldierTTInfo; -void DrawSelectedUIAboveGuy( UINT16 usSoldierID ) +void DrawSelectedUIAboveGuy( SoldierID usSoldierID ) { SOLDIERTYPE *pSoldier; INT16 sXPos, sYPos; diff --git a/Tactical/Interface.h b/Tactical/Interface.h index e596305f..2d2f7d00 100644 --- a/Tactical/Interface.h +++ b/Tactical/Interface.h @@ -458,7 +458,7 @@ void HandleInterfaceBackgrounds( ); void BeginOverlayMessage( UINT32 uiFont, STR16 pFontString, ... ); void EndOverlayMessage( ); -void DrawSelectedUIAboveGuy( UINT16 usSoldierID ); +void DrawSelectedUIAboveGuy( SoldierID usSoldierID ); // HEADROCK HAM 4: Draw the CTH indicator, using values grabbed from the global CTH array BOOLEAN DrawCTHIndicator(); diff --git a/Tactical/Merc Entering.cpp b/Tactical/Merc Entering.cpp index ce3c7279..e657ad45 100644 --- a/Tactical/Merc Entering.cpp +++ b/Tactical/Merc Entering.cpp @@ -355,7 +355,7 @@ UINT8 ubHeliScripts[ NUM_HELI_STATES ][ MAX_HELI_SCRIPT ] = BOOLEAN gfHandleHeli = FALSE; -UINT16 gusHeliSeats[ MAX_MERC_IN_HELI ]; +SoldierID gusHeliSeats[ MAX_MERC_IN_HELI ]; INT8 gbNumHeliSeatsOccupied = 0; BOOLEAN gfFirstGuyDown = FALSE; @@ -392,7 +392,7 @@ void ResetHeliSeats( ) gbNumHeliSeatsOccupied = 0; } -void AddMercToHeli( UINT16 ubID ) +void AddMercToHeli( SoldierID ubID ) { if ( gbNumHeliSeatsOccupied < MAX_MERC_IN_HELI ) { @@ -502,21 +502,21 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Add merc to sector #ifdef JA2UB - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; #else - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; #endif // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); // Check for merc arrives quotes... - HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] ); + HandleMercArrivesQuotes( gusHeliSeats[ cnt ] ); - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() ); } @@ -558,23 +558,23 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Add merc to sector #ifdef JA2UB - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; #else - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; // sevenfm: if soldiers land into enemy sector, use gsGridNoSweetSpot - //MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; - MercPtrs[gusHeliSeats[cnt]]->usStrategicInsertionData = gsGridNoSweetSpot; + //gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gsGridNoSweetSpot; #endif // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); // Check for merc arrives quotes... - HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] ); + HandleMercArrivesQuotes( gusHeliSeats[ cnt ] ); - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() ); } // Remove heli @@ -698,24 +698,24 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely. // In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING animation. - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING; - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE ); + gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING; + gusHeliSeats[ gbCurDrop ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE ); // Change insertion code - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usStrategicInsertionData = gsGridNoSweetSpot; + gusHeliSeats[ gbCurDrop ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ gbCurDrop ]->usStrategicInsertionData = gsGridNoSweetSpot; // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); - //EVENT_SetSoldierPosition( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], sWorldX, sWorldY ); + UpdateMercInSector( gusHeliSeats[ gbCurDrop ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + //EVENT_SetSoldierPosition( gusHeliSeats[ gbCurDrop ], sWorldX, sWorldY ); // IF the first guy down, set squad! if ( gfFirstGuyDown ) { gfFirstGuyDown = FALSE; - SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE ); + SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE ); } - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ gbCurDrop ]->GetName() ); ++gbCurDrop; @@ -1024,7 +1024,7 @@ void HandleFirstHeliDropOfGame( ) CharacterDialogueWithSpecialEvent( 0, 0, 0, DIALOGUE_TACTICAL_UI , FALSE , FALSE , DIALOGUE_SPECIAL_EVENT_ENABLE_AI ,0, 0 ); } -UINT16 SpawnAirDropElite( INT32 sGridNo ) +SoldierID SpawnAirDropElite( INT32 sGridNo ) { SOLDIERTYPE *pSoldier; @@ -1076,7 +1076,7 @@ void InitiateEnemyAirDropSoldiers( INT32 sGridNo ) for ( int i = 0; i < 6; ++i ) { - UINT16 id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); + SoldierID id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); if ( id == NOBODY ) return; @@ -1192,23 +1192,23 @@ void HandleEnemyAirdrop( ) { // Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely. // In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING aniamtion. - //MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING; - MercPtrs[gusHeliSeats[gbCurDrop]]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE ); + //gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING; + gusHeliSeats[gbCurDrop]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE ); // Change insertion code - MercPtrs[gusHeliSeats[gbCurDrop]]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[gusHeliSeats[gbCurDrop]]->usStrategicInsertionData = gsGridNoSweetSpot; + gusHeliSeats[gbCurDrop]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[gbCurDrop]->usStrategicInsertionData = gsGridNoSweetSpot; // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[gusHeliSeats[gbCurDrop]], gWorldSectorX, gWorldSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[gbCurDrop], gWorldSectorX, gWorldSectorY, startingZ ); // IF the first guy down, set squad! if ( gfFirstGuyDown ) { gfFirstGuyDown = FALSE; - //SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE ); + //SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE ); } - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], MercPtrs[gusHeliSeats[gbCurDrop]]->GetName( ) ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], gusHeliSeats[gbCurDrop]->GetName( ) ); ++gbCurDrop; diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index 5df4fed2..92410d87 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -425,7 +425,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) } -void MercArrivesCallback( UINT16 ubSoldierID ) +void MercArrivesCallback( SoldierID ubSoldierID ) { MERCPROFILESTRUCT *pMerc; SOLDIERTYPE *pSoldier; @@ -457,7 +457,7 @@ void MercArrivesCallback( UINT16 ubSoldierID ) // stop time compression until player restarts it StopTimeCompression(); - pSoldier = &Menptr[ ubSoldierID ]; + pSoldier = ubSoldierID; pMerc = &gMercProfiles[ pSoldier->ubProfile ]; diff --git a/Tactical/Merc Hiring.h b/Tactical/Merc Hiring.h index d083788d..a7366b48 100644 --- a/Tactical/Merc Hiring.h +++ b/Tactical/Merc Hiring.h @@ -46,7 +46,7 @@ extern INT16 gsMercArriveSectorY; INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc); -void MercArrivesCallback( UINT16 ubSoldierID ); +void MercArrivesCallback( SoldierID ubSoldierID ); BOOLEAN IsMercHireable( UINT8 ubMercID ); BOOLEAN IsMercDead( UINT8 ubMercID ); UINT16 NumberOfMercsOnPlayerTeam(); diff --git a/Tactical/Overhead Types.h b/Tactical/Overhead Types.h index 1807979a..d4ed672f 100644 --- a/Tactical/Overhead Types.h +++ b/Tactical/Overhead Types.h @@ -361,7 +361,7 @@ typedef CHAR8 PaletteRepID[ 30 ]; typedef struct { UINT8 ubType; - PaletteRepID ID; + PaletteRepID ID; UINT8 ubPaletteSize; UINT8 *r; UINT8 *g; diff --git a/Tactical/Real Time Input.cpp b/Tactical/Real Time Input.cpp index 9ba02699..10928e46 100644 --- a/Tactical/Real Time Input.cpp +++ b/Tactical/Real Time Input.cpp @@ -1489,7 +1489,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) { if( gfUIFullTargetFound ) { - if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && gusUIFullTargetID->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) { uiMoveTargetSoldierId = gusUIFullTargetID; *puiNewEvent = T_CHANGE_TO_TALKING; @@ -1536,7 +1536,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) { guiUITargetSoldierId = gusUIFullTargetID; - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum ) + if ( gusUIFullTargetID->bTeam != gbPlayerNum ) { fOnValidGuy = TRUE; } diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 158cb352..473da2a0 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -788,65 +788,65 @@ public: void ConvertFrom_101_To_102(const OLDSOLDIERTYPE_101& src); public: // AI STUFF from before the changes to the memory structure - INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database - INT8 bLastAction; - INT8 bAction; - INT32 usActionData; - INT8 bNextAction; - INT32 usNextActionData; - INT8 bActionInProgress; - INT8 bAlertStatus; - INT8 bOppCnt; - INT8 bNeutral; - INT8 bNewSituation; - INT8 bNextTargetLevel; - INT8 bOrders; - INT8 bAttitude; - INT8 bUnderFire; - INT8 bShock; - INT8 bUnderEscort; - INT8 bBypassToGreen; - UINT8 ubLastMercToRadio; - INT8 bDominantDir; // AI main direction to face... - INT8 bPatrolCnt; // number of patrol gridnos - INT8 bNextPatrolPnt; // index to next patrol gridno - INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL - INT32 sNoiseGridno; - UINT8 ubNoiseVolume; - INT8 bLastAttackHit; - UINT16 ubXRayedBy; - FLOAT dHeightAdjustment; - INT8 bMorale; - INT8 bTeamMoraleMod; - INT8 bTacticalMoraleMod; - INT8 bStrategicMoraleMod; - INT8 bAIMorale; - UINT8 ubPendingAction; - UINT8 ubPendingActionAnimCount; - UINT32 uiPendingActionData1; - INT32 sPendingActionData2; - INT8 bPendingActionData3; - INT8 ubDoorHandleCode; - UINT32 uiPendingActionData4; - INT8 bInterruptDuelPts; - INT8 bPassedLastInterrupt; - INT16 bIntStartAPs; //100AP - INT8 bMoved; - INT8 bHunting; - UINT8 ubLastCall; - UINT16 ubCaller; - INT32 sCallerGridNo; - UINT8 bCallPriority; - INT8 bCallActedUpon; - INT8 bFrenzied; - INT8 bNormalSmell; - INT8 bMonsterSmell; - INT8 bMobility; - INT8 bRTPCombat; - INT8 fAIFlags; - INT16 bAimTime; //100AP - INT8 bShownAimTime; - UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added + INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database + INT8 bLastAction; + INT8 bAction; + INT32 usActionData; + INT8 bNextAction; + INT32 usNextActionData; + INT8 bActionInProgress; + INT8 bAlertStatus; + INT8 bOppCnt; + INT8 bNeutral; + INT8 bNewSituation; + INT8 bNextTargetLevel; + INT8 bOrders; + INT8 bAttitude; + INT8 bUnderFire; + INT8 bShock; + INT8 bUnderEscort; + INT8 bBypassToGreen; + UINT8 ubLastMercToRadio; + INT8 bDominantDir; // AI main direction to face... + INT8 bPatrolCnt; // number of patrol gridnos + INT8 bNextPatrolPnt; // index to next patrol gridno + INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL + INT32 sNoiseGridno; + UINT8 ubNoiseVolume; + INT8 bLastAttackHit; + UINT16 ubXRayedBy; + FLOAT dHeightAdjustment; + INT8 bMorale; + INT8 bTeamMoraleMod; + INT8 bTacticalMoraleMod; + INT8 bStrategicMoraleMod; + INT8 bAIMorale; + UINT8 ubPendingAction; + UINT8 ubPendingActionAnimCount; + UINT32 uiPendingActionData1; + INT32 sPendingActionData2; + INT8 bPendingActionData3; + INT8 ubDoorHandleCode; + UINT32 uiPendingActionData4; + INT8 bInterruptDuelPts; + INT8 bPassedLastInterrupt; + INT16 bIntStartAPs; //100AP + INT8 bMoved; + INT8 bHunting; + UINT8 ubLastCall; + SoldierID ubCaller; + INT32 sCallerGridNo; + UINT8 bCallPriority; + INT8 bCallActedUpon; + INT8 bFrenzied; + INT8 bNormalSmell; + INT8 bMonsterSmell; + INT8 bMobility; + INT8 bRTPCombat; + INT8 fAIFlags; + INT16 bAimTime; //100AP + INT8 bShownAimTime; + UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added }; class STRUCT_Flags//last edited at version 102 diff --git a/Tactical/SoldierTooltips.cpp b/Tactical/SoldierTooltips.cpp index ceb58df0..854a4141 100644 --- a/Tactical/SoldierTooltips.cpp +++ b/Tactical/SoldierTooltips.cpp @@ -133,7 +133,7 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) { //CHRISL: Changed the second parameter to use the same information as the 'F' hotkey uses. //iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, sSoldierGridNo ) / 10; - iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, MercPtrs[ gusUIFullTargetID ]->sGridNo ) / 10; + iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, gusUIFullTargetID->sGridNo ) / 10; } // WANNE: If we want to show the tooltip of milita and no merc is present in the sector else @@ -145,7 +145,7 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) // SANDRO - don't use this if detail set to debug! if ( gGameExternalOptions.gfAllowUDTRange && gGameExternalOptions.ubSoldierTooltipDetailLevel != DL_Debug && !(gTacticalStatus.uiFlags & SHOW_ALL_MERCS) ) { - uiMaxTooltipDistance = (UINT32)( gusSelectedSoldier->GetMaxDistanceVisible(MercPtrs[ gusUIFullTargetID ]->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier)); + uiMaxTooltipDistance = (UINT32)( gusSelectedSoldier->GetMaxDistanceVisible(gusUIFullTargetID->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier)); uiMaxTooltipDistance /= 100; } //SCORE: Otherwise if we're using dynamics then do this diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index bdd31b7f..9fb928c1 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -573,7 +573,7 @@ void QueryTBLeftButton( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { // Select guy - if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { *puiNewEvent = M_CHANGE_TO_ADJPOS_MODE; fIgnoreLeftUp = FALSE; @@ -1250,7 +1250,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) if( gfUIFullTargetFound ) { // ATE: Don't do this automatically for enemies...... - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM ) + if ( gusUIFullTargetID->bTeam != ENEMY_TEAM ) { uiMoveTargetSoldierId = gusUIFullTargetID; if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) ) @@ -1280,7 +1280,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) { guiUITargetSoldierId = gusUIFullTargetID; - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum ) + if ( gusUIFullTargetID->bTeam != gbPlayerNum ) { fOnValidGuy = TRUE; //ddd turn off flag that indicates aim/autofire mode adjustment (aimed burst/auto) @@ -3593,7 +3593,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { //Display the range to the target - DisplayRangeToTarget( gusSelectedSoldier, MercPtrs[gusUIFullTargetID]->sGridNo ); + DisplayRangeToTarget( gusSelectedSoldier, gusUIFullTargetID->sGridNo ); } else { @@ -4648,7 +4648,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { // Get soldier... - pSoldier2 = MercPtrs[ gusUIFullTargetID ]; + pSoldier2 = gusUIFullTargetID; // Check if both OK.... if ( pSoldier1->stats.bLife >= OKLIFE && pSoldier2->ubID != gusSelectedSoldier ) @@ -5677,7 +5677,7 @@ INT8 CheckForAndHandleHandleVehicleInteractiveClick( SOLDIERTYPE *pSoldier, UINT if ( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // anv: added condition - make sure we won't put vehicle in another vehicle if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) ) @@ -5824,18 +5824,18 @@ void HandleHandCursorClick( INT32 usMapPos, UINT32 *puiNewEvent ) // Flugente: allow stealing if the other guy is an enemy, OR if we are on the same team if ( (( guiUIFullTargetFlags & ENEMY_MERC ) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC )) || (AllowedToStealFromTeamMate(pSoldier->ubID, (UINT8)gusUIFullTargetID) && guiUIFullTargetFlags & OWNED_MERC) ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo == -1 ) { sActionGridNo = sAdjustedGridNo; } // Steal! - sAPCost = GetAPsToStealItem( pSoldier, MercPtrs[ gusUIFullTargetID ], sActionGridNo ); // SANDRO - added target variable + sAPCost = GetAPsToStealItem( pSoldier, gusUIFullTargetID, sActionGridNo ); // SANDRO - added target variable if ( EnoughPoints( pSoldier, sAPCost, 0, TRUE ) ) { - MercStealFromMerc( pSoldier, MercPtrs[ gusUIFullTargetID ] ); + MercStealFromMerc( pSoldier, gusUIFullTargetID ); *puiNewEvent = A_CHANGE_TO_MOVE; @@ -5962,7 +5962,7 @@ void HandleHandCursorRightClick( INT32 usMapPos, UINT32 *puiNewEvent ) if( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; if( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) ) { // anv: if we are passengers, only show menu when clicking on vehicle we're in @@ -6058,10 +6058,10 @@ INT8 HandleMoveModeInteractiveClick( INT32 usMapPos, UINT32 *puiNewEvent ) if ( ValidQuickExchangePosition( ) ) { // Check if we can... - if ( CanExchangePlaces( pSoldier, MercPtrs[ gusUIFullTargetID ], TRUE ) ) + if ( CanExchangePlaces( pSoldier, gusUIFullTargetID, TRUE ) ) { gpExchangeSoldier1 = pSoldier; - gpExchangeSoldier2 = MercPtrs[ gusUIFullTargetID ]; + gpExchangeSoldier2 = gusUIFullTargetID; // Do message box... //DoMessageBox( MSG_BOX_BASIC_STYLE, TacticalStr[ EXCHANGE_PLACES_REQUESTER ], GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, ExchangeMessageBoxCallBack, NULL ); diff --git a/Tactical/UI Cursors.cpp b/Tactical/UI Cursors.cpp index 6cdd0e3d..bfbc2e96 100644 --- a/Tactical/UI Cursors.cpp +++ b/Tactical/UI Cursors.cpp @@ -134,7 +134,7 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs // FUNCTIONS FOR CURSOR DETERMINATION! -UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) +UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) { SOLDIERTYPE *pSoldier; UINT32 uiCursorFlags; @@ -144,7 +144,7 @@ UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPo UINT8 ubCursorID=0; UINT8 ubItemCursor = 0; - pSoldier = MercPtrs[ ubSoldierID ]; + pSoldier = ubSoldierID; fRecalc = GetMouseRecalcAndShowAPFlags( &uiCursorFlags, &fShowAPs ); @@ -159,7 +159,7 @@ UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPo // Calculate target gridno! if ( gfUIFullTargetFound ) { - sTargetGridNo = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sTargetGridNo = gusUIFullTargetID->sGridNo; } else { @@ -573,7 +573,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA { if ( gusUIFullTargetID != NOBODY ) { - if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ], pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH ) + if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, gusUIFullTargetID, pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH ) { gfCannotGetThrough = TRUE; } @@ -1556,7 +1556,7 @@ void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN // Check if we can find a soldier here if ( gfUIFullTargetFound ) { - pTargetSoldier = MercPtrs[ gusUIFullTargetID ]; + pTargetSoldier = gusUIFullTargetID; if ( FindRelativeSoldierPosition( pTargetSoldier, &usFlags, gusMouseXPos, gusMouseYPos ) ) { @@ -1594,7 +1594,7 @@ void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN { if ( gfUIFullTargetFound ) { - pTargetSoldier = MercPtrs[ gusUIFullTargetID ]; + pTargetSoldier = gusUIFullTargetID; if ( pTargetSoldier->ubBodyType == CROW ) { @@ -2583,7 +2583,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } @@ -2609,7 +2609,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -2727,7 +2727,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3172,7 +3172,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } switch( ubCursor ) @@ -3180,8 +3180,8 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta case TARGETCURS: // warn if bad chance to get through if ( gfUIFullTargetFound && - !HandleCheckForBadChangeToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ], - MercPtrs[ gusUIFullTargetID ]->sGridNo , MercPtrs[ gusUIFullTargetID ]->pathing.bLevel ) ) + !HandleCheckForBadChangeToGetThrough( pSoldier, gusUIFullTargetID, + gusUIFullTargetID->sGridNo , gusUIFullTargetID->pathing.bLevel ) ) { return; } @@ -3370,7 +3370,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } @@ -3442,7 +3442,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3608,7 +3608,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; int aimlevelchange = 1; int maxAimCanAfford = 0; @@ -3681,7 +3681,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3836,7 +3836,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } @@ -3908,7 +3908,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; diff --git a/Tactical/UI Cursors.h b/Tactical/UI Cursors.h index b20e97f3..415246c4 100644 --- a/Tactical/UI Cursors.h +++ b/Tactical/UI Cursors.h @@ -9,7 +9,7 @@ #define REFINE_KNIFE_2 (gGameExternalOptions.fEnhancedCloseCombatSystem ? gSkillTraitValues.ubModifierForAPsAddedOnAimedBladedAttackes*2 : 6) -UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); +UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ); void HandleLeftClickCursor( SOLDIERTYPE *pSoldier ); @@ -30,4 +30,4 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs // based on how trained the shooter is. UINT32 ChanceToHitApproximation( SOLDIERTYPE * pSoldier, UINT32 uiChance ); -#endif \ No newline at end of file +#endif diff --git a/Tactical/merc entering.h b/Tactical/merc entering.h index 30b80744..28d0ec0e 100644 --- a/Tactical/merc entering.h +++ b/Tactical/merc entering.h @@ -4,7 +4,7 @@ extern BOOLEAN gfIngagedInDrop; void ResetHeliSeats( ); -void AddMercToHeli( UINT16 ubID ); +void AddMercToHeli( SoldierID ubID ); // Flugente: we might want to set the helicopter dropoff point without starting it at the same time void SetHelicopterDroppoint( INT32 sGridNo ); @@ -14,7 +14,7 @@ void StartHelicopterRun(); void HandleHeliDrop( BOOLEAN fPlayer = TRUE ); -UINT16 SpawnAirDropElite( INT32 sGridNo ); +SoldierID SpawnAirDropElite( INT32 sGridNo ); void InitiateEnemyAirDropSoldiers( INT32 sGridNo ); void HandleEnemyAirdrop( ); diff --git a/TacticalAI/AIInternals.h b/TacticalAI/AIInternals.h index b732cb5e..b3293287 100644 --- a/TacticalAI/AIInternals.h +++ b/TacticalAI/AIInternals.h @@ -130,20 +130,20 @@ typedef struct class ATTACKTYPE { public: - UINT8 ubPossible; // is this attack form possible - UINT16 ubOpponent; // which soldier is the victim + UINT8 ubPossible; // is this attack form possible + SoldierID ubOpponent; // which soldier is the victim //CHANGED STRUCTURE VALUE BY GOTTHARD 7/14/07 - INT16 ubAimTime; // how many extra APs to spend on aiming - INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover + INT16 ubAimTime; // how many extra APs to spend on aiming + INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover //END STRUCTURE CHANGE BY GOTTHARD 7/14/07 - INT16 ubAPCost; // how many APs the attack will use up - INT32 iAttackValue; // relative worthiness of this type of attack - INT32 sTarget; // target gridno of this attack - INT8 bTargetLevel; // target level of this attack - INT8 bWeaponIn; // the inv slot of the weapon in question - INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding - UINT8 ubStance; // recommended stance for attack - UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813 + INT16 ubAPCost; // how many APs the attack will use up + INT32 iAttackValue; // relative worthiness of this type of attack + INT32 sTarget; // target gridno of this attack + INT8 bTargetLevel; // target level of this attack + INT8 bWeaponIn; // the inv slot of the weapon in question + INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding + UINT8 ubStance; // recommended stance for attack + UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813 ATTACKTYPE(void){ InitAttackType(this); } void InitAttackType(ATTACKTYPE *pAttack); @@ -212,7 +212,7 @@ void CreatureDecideAlertStatus( SOLDIERTYPE *pCreature ); // sevenfm: void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT16 ubOpponentID); +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID ubOpponentID); INT32 FindTossSpotInDirection(INT32 sSpot, INT8 bLevel, INT32 sTargetSpot, BOOLEAN fCheckAdjacentDirections, BOOLEAN fCheckFarther); void CheckTossGrenadeAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubGrenadeType); @@ -254,7 +254,7 @@ INT32 InternalGoAsFarAsPossibleTowards(SOLDIERTYPE *pSoldier, INT32 sDesGrid, IN int LegalNPCDestination(SOLDIERTYPE *pSoldier, INT32 sGridno, UINT8 ubPathMode, UINT8 ubWaterOK, UINT8 fFlags); void LoadWeaponIfNeeded(SOLDIERTYPE *pSoldier); INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN * pfClimbingNecessary, BOOLEAN * pfReachable ); -INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc ); +INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc ); void NPCDoesAct(SOLDIERTYPE *pSoldier); void NPCDoesNothing(SOLDIERTYPE *pSoldier); INT8 OKToAttack(SOLDIERTYPE *ptr, int target); @@ -318,7 +318,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT16 * puID, INT16 sRange); +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange); // are there more allies than friends in adjacent sectors? BOOLEAN MoreFriendsThanEnemiesinNearbysectors(UINT8 ausTeam, INT16 aX, INT16 aY, INT8 aZ); diff --git a/TacticalAI/AIList.cpp b/TacticalAI/AIList.cpp index 618c643d..e91c48e1 100644 --- a/TacticalAI/AIList.cpp +++ b/TacticalAI/AIList.cpp @@ -46,7 +46,7 @@ void DeleteAIListEntry( AILIST * pEntry ) pEntry->pNext = NULL; } -UINT16 FindEmptyAIListEntry( void ) +SoldierID FindEmptyAIListEntry( void ) { UINT16 ubLoop; @@ -61,7 +61,7 @@ UINT16 FindEmptyAIListEntry( void ) return( AI_LIST_SIZE ); } -AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bPriority ) +AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bPriority ) { gAIList[ ubNewEntry ].ubID = ubID; gAIList[ ubNewEntry ].bPriority = bPriority; @@ -69,10 +69,10 @@ AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bPriority ) return( &(gAIList[ ubNewEntry ]) ); } -UINT16 RemoveFirstAIListEntry( void ) +SoldierID RemoveFirstAIListEntry( void ) { AILIST *pOldFirstEntry; - UINT16 ubID; + SoldierID ubID; while ( gpFirstAIListEntry != NULL) { @@ -94,7 +94,7 @@ UINT16 RemoveFirstAIListEntry( void ) return( NOBODY ); } -void RemoveAIListEntryForID( UINT16 ubID ) +void RemoveAIListEntryForID( SoldierID ubID ) { AILIST * pEntry; AILIST * pPrevEntry; @@ -123,9 +123,9 @@ void RemoveAIListEntryForID( UINT16 ubID ) // none found, that's okay } -BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bPriority ) +BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bPriority ) { - UINT16 ubNewEntry; + SoldierID ubNewEntry; AILIST * pEntry, * pNewEntry, * pPrevEntry = NULL; ubNewEntry = FindEmptyAIListEntry(); @@ -276,15 +276,15 @@ BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount return( TRUE ); } -BOOLEAN MoveToFrontOfAIList( UINT16 ubID ) +BOOLEAN MoveToFrontOfAIList( SoldierID ubID ) { // we'll have to fake this guy's alert status (in the list) to be the same as the current // front of the list INT8 bPriority; - UINT16 ubNewEntry; - AILIST * pNewEntry; + SoldierID ubNewEntry; + AILIST *pNewEntry; - if ( !SatisfiesAIListConditions( MercPtrs[ ubID ], NULL, FALSE ) ) + if ( !SatisfiesAIListConditions( ubID, NULL, FALSE ) ) { // can't do dat! return( FALSE ); diff --git a/TacticalAI/AIList.h b/TacticalAI/AIList.h index bb44ac29..49858a90 100644 --- a/TacticalAI/AIList.h +++ b/TacticalAI/AIList.h @@ -1,18 +1,18 @@ -#include "Types.h" +#include "Overhead Types.h" typedef struct AILIST { - UINT16 ubID; - INT8 bPriority; - UINT8 ubUnused; - struct AILIST * pNext; + SoldierID ubID; + INT8 bPriority; + UINT8 ubUnused; + struct AILIST *pNext; } AILIST; #define MAX_AI_PRIORITY 100 extern void ClearAIList( void ); -extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bAlertStatus ); -extern BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bAlertStatus ); -extern UINT16 RemoveFirstAIListEntry( void ); +extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bAlertStatus ); +extern BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bAlertStatus ); +extern SoldierID RemoveFirstAIListEntry( void ); extern BOOLEAN BuildAIListForTeam( INT8 bTeam ); -extern BOOLEAN MoveToFrontOfAIList( UINT16 ubID ); +extern BOOLEAN MoveToFrontOfAIList( SoldierID ubID ); diff --git a/TacticalAI/AIMain.cpp b/TacticalAI/AIMain.cpp index f3970d1d..f6d32bea 100644 --- a/TacticalAI/AIMain.cpp +++ b/TacticalAI/AIMain.cpp @@ -874,7 +874,7 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) { - UINT16 ubID; + SoldierID ubID; if (gfTurnBasedAI) { @@ -885,19 +885,19 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) } // search for any player merc to say close call quote - for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubID++ ) + for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubID ) { - if ( OK_INSECTOR_MERC( MercPtrs[ ubID ] ) ) + if ( OK_INSECTOR_MERC( ubID ) ) { - if ( MercPtrs[ ubID ]->flags.fCloseCall ) + if ( ubID->flags.fCloseCall ) { - if ( !gTacticalStatus.fSomeoneHit && MercPtrs[ ubID ]->bNumHitsThisTurn == 0 && !(MercPtrs[ ubID ]->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) + if ( !gTacticalStatus.fSomeoneHit && ubID->bNumHitsThisTurn == 0 && !(ubID->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) { // say close call quote! - TacticalCharacterDialogue( MercPtrs[ ubID ], QUOTE_CLOSE_CALL ); - MercPtrs[ ubID ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; + TacticalCharacterDialogue( ubID, QUOTE_CLOSE_CALL ); + ubID->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; } - MercPtrs[ ubID ]->flags.fCloseCall = FALSE; + ubID->flags.fCloseCall = FALSE; } } } @@ -942,7 +942,7 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) ubID = RemoveFirstAIListEntry(); if (ubID != NOBODY) { - StartNPCAI( MercPtrs[ ubID ] ); + StartNPCAI( ubID ); return; } @@ -1165,12 +1165,12 @@ INT32 FindAdjacentSpotBeside(SOLDIERTYPE *pSoldier, INT32 sGridNo) return(sCheapestDest); } -UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) +SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) { - UINT32 uiLoop; - INT32 iThreatVal,iMinThreat = 30000; - SOLDIERTYPE *pTargetSoldier; - UINT16 ubTargetSoldier = NOBODY; + UINT32 uiLoop; + INT32 iThreatVal,iMinThreat = 30000; + SOLDIERTYPE *pTargetSoldier; + SoldierID ubTargetSoldier = NOBODY; // Loop through all mercs @@ -1914,7 +1914,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) UINT16 usHandItem = pSoldier->inv[HANDPOS].usItem; INT8 bSlot; - UINT16 usSoldierIndex; // added by SANDRO + SoldierID usSoldierIndex; // added by SANDRO #ifdef TESTAICONTROL if (gfTurnBasedAI || gTacticalStatus.fAutoBandageMode) @@ -2594,7 +2594,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) usSoldierIndex = WhoIsThere2( pSoldier->aiData.usActionData, pSoldier->bTargetLevel); if ( usSoldierIndex != NOBODY ) { - MercStealFromMerc( pSoldier, MercPtrs[usSoldierIndex] ); + MercStealFromMerc( pSoldier, usSoldierIndex ); PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, usSoldierIndex ); } @@ -2628,7 +2628,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) case AI_ACTION_USE_SKILL: { - UINT16 ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); + SoldierID ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); BOOLEAN result = pSoldier->UseSkill(pSoldier->usAISkillUse, pSoldier->aiData.usActionData, ubID); diff --git a/TacticalAI/Attacks.cpp b/TacticalAI/Attacks.cpp index 25ea052a..703cc950 100644 --- a/TacticalAI/Attacks.cpp +++ b/TacticalAI/Attacks.cpp @@ -716,16 +716,16 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) //dnl ch62 180813 ignore firing into breathless targets if there are targets in better condition // sevenfm: check that best opponent exists if (pBestShot->ubOpponent != NOBODY && - (Menptr[pBestShot->ubOpponent].bCollapsed || Menptr[pBestShot->ubOpponent].bBreathCollapsed) && - Menptr[pBestShot->ubOpponent].bBreath < OKBREATH - && Menptr[pBestShot->ubOpponent].bBreath < pOpponent->bBreath) + (pBestShot->ubOpponent->bCollapsed || pBestShot->ubOpponent->bBreathCollapsed) && + pBestShot->ubOpponent->bBreath < OKBREATH + && pBestShot->ubOpponent->bBreath < pOpponent->bBreath) { iPercentBetter = PERCENT_TO_IGNORE_THREAT; } // sevenfm: if best opponent is dying and new opponent is ok, use new opponent if (pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife < OKLIFE && + pBestShot->ubOpponent->stats.bLife < OKLIFE && pOpponent->stats.bLife >= OKLIFE) { iPercentBetter = PERCENT_TO_IGNORE_THREAT; @@ -735,7 +735,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) // guy is conscious at all if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT && pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE) + pBestShot->ubOpponent->stats.bLife >= OKLIFE) { // then stick with the older guy as the better target continue; @@ -753,7 +753,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) // sevenfm: if new opponent is dying and best opponent is ok, ignore new opponent if (pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE && + pBestShot->ubOpponent->stats.bLife >= OKLIFE && pOpponent->stats.bLife < OKLIFE) { //DebugShot(pSoldier, String("new opponent is dying, best opponent is ok - skip")); @@ -845,7 +845,8 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) INT32 sGridNo, sEndGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS]; INT8 bFriendLevel[MAXMERCS], bOpponentLevel[MAXMERCS]; INT32 iEstDamage; - UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0, ubOpponentCnt = 0; + SoldierID ubOpponentID[MAXMERCS]; UINT8 ubMaxPossibleAimTime; INT16 sRawAPCost, sMinAPcost; UINT8 ubChanceToHit, ubChanceToGetThrough, ubChanceToReallyHit, ubFriendlyFireChance; @@ -1479,7 +1480,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) iThreatValue = iOppThreatValue[ubLoop2]; // estimate how much damage this tossed item would do to him - iEstDamage = EstimateThrowDamage(pSoldier,bPayloadPocket,MercPtrs[ubOpponentID[ubLoop2]],sGridNo); + iEstDamage = EstimateThrowDamage(pSoldier, bPayloadPocket, ubOpponentID[ubLoop2], sGridNo); if (usOppDist) { @@ -1492,7 +1493,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) iTotalThreatValue += (iThreatValue * iEstDamage); // only count opponents still standing worth shooting at (in range) - if (Menptr[ ubOpponentID[ubLoop2] ].stats.bLife >= OKLIFE) + if (ubOpponentID[ubLoop2]->stats.bLife >= OKLIFE) { ubOppsInRange++; if (usOppDist < 2) @@ -1599,7 +1600,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // limit RPG use, unless can hit several enemies, shooting at tank or opponent is in a room if (ItemIsRocketLauncher(usInHand) && ubOppsInRange < 2 && - !ARMED_VEHICLE(MercPtrs[ubOpponentID[ubLoop]]) && + !ARMED_VEHICLE(ubOpponentID[ubLoop]) && (!InARoom(sOpponentTile[ubLoop], NULL) || pSoldier->bTeam != ENEMY_TEAM)) { continue; // next gridno @@ -1691,7 +1692,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { ubMinChanceToReallyHit = 30; } - else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(MercPtrs[pBestThrow->ubOpponent]))) + else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(pBestThrow->ubOpponent))) { ubMinChanceToReallyHit = 80; } @@ -1916,7 +1917,7 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt // guy is conscious at all if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT && pBestStab->ubOpponent != NOBODY && - Menptr[pBestStab->ubOpponent].stats.bLife >= OKLIFE) + pBestStab->ubOpponent->stats.bLife >= OKLIFE) { // then stick with the older guy as the better target continue; @@ -1937,12 +1938,12 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt // OOOF! That was a lot of work! But we've got a new best target! pBestStab->ubPossible = TRUE; pBestStab->ubOpponent = pOpponent->ubID; - pBestStab->ubAimTime = ubBestAimTime; - pBestStab->ubChanceToReallyHit = ubChanceToReallyHit; - pBestStab->sTarget = pOpponent->sGridNo; - pBestStab->bTargetLevel = pOpponent->pathing.bLevel; - pBestStab->iAttackValue = iAttackValue; - pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime; + pBestStab->ubAimTime = ubBestAimTime; + pBestStab->ubChanceToReallyHit = ubChanceToReallyHit; + pBestStab->sTarget = pOpponent->sGridNo; + pBestStab->bTargetLevel = pOpponent->pathing.bLevel; + pBestStab->iAttackValue = iAttackValue; + pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime; } } @@ -3480,7 +3481,8 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U { UINT16 ubLoop, ubLoop2; INT32 sGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS], sTabooTile[MAXMERCS]; - UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubTabooCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0, ubOpponentCnt = 0, ubTabooCnt = 0; + SoldierID ubOpponentID[MAXMERCS]; INT32 bMaxLeft,bMaxRight,bMaxUp,bMaxDown, i, j; INT8 bPersOL, bPublOL; SOLDIERTYPE *pFriend; @@ -3670,7 +3672,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return an true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT16 * puID, INT16 sRange) +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange) { INT32 sGridNo; UINT32 uiLoop; @@ -3885,13 +3887,13 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) INT8 bLevel = pSoldier->pathing.bLevel; // check all friends - SOLDIERTYPE * pFriend; - INT32 sClosestFriendSpot = NOWHERE; - INT8 bClosestFriendLevel = 0; - UINT16 ubClosestFriendID = NOBODY; + SOLDIERTYPE *pFriend; + INT32 sClosestFriendSpot = NOWHERE; + INT8 bClosestFriendLevel = 0; + SoldierID ubClosestFriendID = NOBODY; INT32 sFriendSpot; - INT8 bFriendLevel; + INT8 bFriendLevel; INT32 sClosestOpponent; @@ -3999,7 +4001,7 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // check if we can toss grenade at spot, and prepare attack data // grenade should be in hand -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT16 ubOpponentID) +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID ubOpponentID) { UINT16 usInHand, usGrenade; INT32 iTossRange; diff --git a/TacticalAI/CreatureDecideAction.cpp b/TacticalAI/CreatureDecideAction.cpp index e453b321..9e01ff8e 100644 --- a/TacticalAI/CreatureDecideAction.cpp +++ b/TacticalAI/CreatureDecideAction.cpp @@ -1154,8 +1154,8 @@ INT8 CreatureDecideActionBlack( SOLDIERTYPE * pSoldier ) // if the selected opponent is not a threat (unconscious & !serviced) // (usually, this means all the guys we see our unconscious, but, on // rare occasions, we may not be able to shoot a healthy guy, too) - if ((Menptr[BestShot.ubOpponent].stats.bLife < OKLIFE) && - !Menptr[BestShot.ubOpponent].bService) + if ((BestShot.ubOpponent->stats.bLife < OKLIFE) && + !BestShot.ubOpponent->bService) { // if our attitude is NOT aggressive if (pSoldier->aiData.bAttitude != AGGRESSIVE) diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index 9b3a00ac..25f1016e 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -595,10 +595,10 @@ INT8 DecideActionBoxerEnteringRing(SOLDIERTYPE *pSoldier) INT8 DecideActionNamedNPC( SOLDIERTYPE * pSoldier ) { - INT32 sDesiredMercLoc; - UINT8 ubDesiredMercDir; - UINT8 ubDesiredMerc; - INT32 sDesiredMercDist; + INT32 sDesiredMercLoc; + UINT8 ubDesiredMercDir; + SoldierID ubDesiredMerc; + INT32 sDesiredMercDist; #ifdef DEBUGDECISIONS STR16 tempstr; #endif diff --git a/TacticalAI/FindLocations.cpp b/TacticalAI/FindLocations.cpp index 1b726e20..d87a4a08 100644 --- a/TacticalAI/FindLocations.cpp +++ b/TacticalAI/FindLocations.cpp @@ -119,7 +119,7 @@ void AICenterXY( INT32 sGridNo, FLOAT * pdX, FLOAT * pdY ) *pdY = (FLOAT) (sYPos * CELL_Y_SIZE + CELL_Y_SIZE / 2); } -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -158,7 +158,7 @@ INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOp return( bWorstCTGT ); } -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -192,7 +192,7 @@ INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 s } -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // NOTE: CTGT stands for "ChanceToGetThrough..." @@ -592,7 +592,7 @@ INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT32 sMyGridNo, INT32 iMyThreat, INT32 i UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ) { UINT8 ubLoop, ubCount; - UINT16 ubWhoIsThere; + SoldierID ubWhoIsThere; INT32 sTempGridNo; ubCount = 0; @@ -603,7 +603,7 @@ UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ) if ( sTempGridNo != sGridNo ) { ubWhoIsThere = WhoIsThere2( sTempGridNo, pSoldier->pathing.bLevel ); - if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && MercPtrs[ ubWhoIsThere ]->bTeam == pSoldier->bTeam ) + if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && ubWhoIsThere->bTeam == pSoldier->bTeam ) { ubCount++; } diff --git a/TacticalAI/Knowledge.cpp b/TacticalAI/Knowledge.cpp index c6e93a1f..74fafb00 100644 --- a/TacticalAI/Knowledge.cpp +++ b/TacticalAI/Knowledge.cpp @@ -200,7 +200,7 @@ INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN if (*pbPublOL < NOT_HEARD_OR_SEEN) { // calculate how far this noise was, and its relative "importance" - iDistAway = SpacesAway(pSoldier->sGridNo,gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]); + iDistAway = SpacesAway(pSoldier->sGridNo, gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]); iNoiseValue = (*pbPublOL) * iDistAway; // always a negative number! if (iNoiseValue > iBestValue) diff --git a/TacticalAI/Medical.cpp b/TacticalAI/Medical.cpp index 5a46f6ee..35c2a334 100644 --- a/TacticalAI/Medical.cpp +++ b/TacticalAI/Medical.cpp @@ -42,7 +42,7 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) BUILDING * pBuilding; UINT8 ubNumClimbSpots; UINT8 ubLoop; - UINT16 ubWhoIsThere; + SoldierID ubWhoIsThere; pBuilding = FindBuilding( sDesiredGridNo ); if (!pBuilding) @@ -55,12 +55,12 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) for ( ubLoop = 0; ubLoop < ubNumClimbSpots; ubLoop++ ) { ubWhoIsThere = WhoIsThere2( pBuilding->sUpClimbSpots[ ubLoop ], 1 ); - if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) ) + if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) ) { continue; } ubWhoIsThere = WhoIsThere2( pBuilding->sDownClimbSpots[ ubLoop ], 0 ); - if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) ) + if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) ) { continue; } @@ -122,7 +122,7 @@ BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ) UINT16 cnt; UINT16 ubMedics = 0, ubPatients = 0; SOLDIERTYPE * pSoldier; - static UINT16 ubIDForFullCheck = NOBODY; + static SoldierID ubIDForFullCheck = NOBODY; // run though the list of chars on team cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -311,7 +311,7 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) { // only switch to this patient if our distance is closer than // the other medic's - pOtherMedic = MercPtrs[ pPatient->ubAutoBandagingMedic ]; + pOtherMedic = pPatient->ubAutoBandagingMedic; sOtherAdjacentGridNo = FindAdjacentGridEx( pOtherMedic, sPatientGridNo, &ubDirection, &sAdjustedGridNo, FALSE, FALSE ); if (sOtherAdjacentGridNo != -1) { @@ -379,8 +379,8 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) if (pBestPatient->ubAutoBandagingMedic != NOBODY) { // cancel that medic - DebugAI(AI_MSG_INFO, MercPtrs[pBestPatient->ubAutoBandagingMedic], String("CancelAIAction: medic: find patient")); - CancelAIAction( MercPtrs[ pBestPatient->ubAutoBandagingMedic ], TRUE ); + DebugAI(AI_MSG_INFO, pBestPatient->ubAutoBandagingMedic, String("CancelAIAction: medic: find patient")); + CancelAIAction( pBestPatient->ubAutoBandagingMedic, TRUE ); } pBestPatient->ubAutoBandagingMedic = pSoldier->ubID; *pfDoClimb = FALSE; diff --git a/TacticalAI/NPC.cpp b/TacticalAI/NPC.cpp index 8ee54c8a..fcd67cb1 100644 --- a/TacticalAI/NPC.cpp +++ b/TacticalAI/NPC.cpp @@ -2557,12 +2557,13 @@ void Converse( UINT8 ubNPC, UINT8 ubMerc, INT8 bApproach, UINT32 uiApproachData } } -INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc ) +INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc ) { - INT32 sMyGridNo, sDist, sDesiredMercDist = 100; - UINT8 ubNPC; - UINT16 ubMerc, ubDesiredMerc = NOBODY; - UINT8 ubTalkDesire, ubHighestTalkDesire = 0; + INT32 sMyGridNo, sDist, sDesiredMercDist = 100; + UINT8 ubNPC; + UINT16 ubMerc; + SoldierID ubDesiredMerc = NOBODY; + UINT8 ubTalkDesire, ubHighestTalkDesire = 0; SOLDIERTYPE * pMerc; SOLDIERTYPE * pDesiredMerc = NULL; NPCQuoteInfo * pNPCQuoteInfoArray; diff --git a/TacticalAI/ai.h b/TacticalAI/ai.h index 3d990d88..70a211ec 100644 --- a/TacticalAI/ai.h +++ b/TacticalAI/ai.h @@ -228,7 +228,7 @@ void FreeUpNPCFromLoweringGun( SOLDIERTYPE *pSoldier ); void FreeUpNPCFromRoofClimb(SOLDIERTYPE *pSoldier ); UINT8 GetClosestOpponent( SOLDIERTYPE *pSoldier ); -UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); +SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); void HandleSoldierAI( SOLDIERTYPE *pSoldier ); void HandleInitialRedAlert( INT8 bTeam, UINT8 ubCommunicate); @@ -271,9 +271,9 @@ INT32 FindFlankingSpot(SOLDIERTYPE *pSoldier, INT32 sPos, INT8 bAction ); BOOLEAN CanClimbFromHere (SOLDIERTYPE * pSoldier, BOOLEAN fUp ); // HEADROCK HAM 3.6: Adding includes for A* cover calculations -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ); // Flugente: get the id of the closest soldier (coser than x tiles) of a specific team with a specific flag that we can currently see diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index 5569c419..ee31dac1 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -4855,7 +4855,7 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ) } } -void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger ) +void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger ) { // need to turn off gridnos & flags in gTacticalStatus gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ] = NOWHERE; diff --git a/TileEngine/Explosion Control.h b/TileEngine/Explosion Control.h index d4c8e531..466a3ca0 100644 --- a/TileEngine/Explosion Control.h +++ b/TileEngine/Explosion Control.h @@ -109,7 +109,7 @@ void DecayBombTimers( void ); void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ); BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ); void ActivateSwitchInGridNo( SoldierID ubID, INT32 sGridNo ); -void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger ); +void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger ); void UpdateExplosionFrame( INT32 iIndex, INT16 sCurrentFrame ); void RemoveExplosionData( INT32 iIndex ); diff --git a/TileEngine/SmokeEffects.cpp b/TileEngine/SmokeEffects.cpp index 2ea2d122..91119d53 100644 --- a/TileEngine/SmokeEffects.cpp +++ b/TileEngine/SmokeEffects.cpp @@ -348,7 +348,7 @@ INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwne // OJW - 20091027 - Synchronizing smoke effect start for multiplayer if (is_networked && is_client) { - SOLDIERTYPE* pSoldier = MercPtrs[ubOwner]; + SOLDIERTYPE* pSoldier = ubOwner; if (pSoldier != NULL) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) diff --git a/TileEngine/SmokeEffects.h b/TileEngine/SmokeEffects.h index 5b899f3d..ab4affe1 100644 --- a/TileEngine/SmokeEffects.h +++ b/TileEngine/SmokeEffects.h @@ -28,16 +28,16 @@ typedef struct TAG_SMOKE_EFFECT UINT8 ubDuration; // the number of turns gas will remain effective UINT8 ubRadius; // the current radius of the cloud in map tiles - UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow) + UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow) UINT8 bAge; // the number of turns gas has been around - BOOLEAN fAllocated; - INT8 bType; - UINT16 usItem; - UINT16 ubOwner; - UINT8 ubGeneration; - UINT32 uiTimeOfLastUpdate; - INT8 iMPTeamIndex; - INT32 iMPSmokeEffectID; + BOOLEAN fAllocated; + INT8 bType; + UINT16 usItem; + SoldierID ubOwner; + UINT8 ubGeneration; + UINT32 uiTimeOfLastUpdate; + INT8 iMPTeamIndex; + INT32 iMPSmokeEffectID; } SMOKEEFFECT; extern SMOKEEFFECT gSmokeEffectData[ NUM_SMOKE_EFFECT_SLOTS ]; diff --git a/TileEngine/overhead map.cpp b/TileEngine/overhead map.cpp index 9db3faca..14dd2f31 100644 --- a/TileEngine/overhead map.cpp +++ b/TileEngine/overhead map.cpp @@ -768,7 +768,7 @@ void HandleOverheadUI(void) { INT32 sMousePos = 0; InputAtom InputEvent; - UINT16 ubID; + SoldierID ubID; // CHECK FOR MOUSE OVER REGIONS... if(GetOverheadMouseGridNo(&sMousePos)) diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index d4ac3b3f..eb2179a8 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -2734,7 +2734,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) (*pObj)[0]->data.misc.bDelay = 1; // for non-player grenades, add turn so player could disarm grenade or run away - if ( pObject->ubOwner != NOBODY && MercPtrs[pObject->ubOwner]->bTeam != gbPlayerNum ) + if ( pObject->ubOwner != NOBODY && pObject->ubOwner->bTeam != gbPlayerNum ) { (*pObj)[0]->data.misc.bDelay++; } @@ -2762,7 +2762,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) if ( pObject->ubOwner != NOBODY && !fGoodStatus ) { - MercPtrs[ pObject->ubOwner ]->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) ); + pObject->ubOwner->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) ); } } } diff --git a/TileEngine/pits.cpp b/TileEngine/pits.cpp index a789e660..86f0e548 100644 --- a/TileEngine/pits.cpp +++ b/TileEngine/pits.cpp @@ -207,7 +207,7 @@ void RemoveAllPits() void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 sRadius ) { INT32 x, y, sNewGridNo; - UINT16 ubID; + SoldierID ubID; SOLDIERTYPE *pSoldier; @@ -227,7 +227,7 @@ void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 s { // OK, make guy fall... // Set data to look for exit grid.... - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; pSoldier->aiData.uiPendingActionData4 = sNewGridNo; diff --git a/TileEngine/structure.cpp b/TileEngine/structure.cpp index 6bad3e2f..31d49000 100644 --- a/TileEngine/structure.cpp +++ b/TileEngine/structure.cpp @@ -1915,9 +1915,9 @@ INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, IN gpWorldLevelData[ tmpgridno ].uiFlags |= MAPELEMENT_STRUCTURE_DAMAGED; // handle structure revenge - damage to vehicle - to be resolved after movement - if ( ubOwner != NOBODY && MercPtrs[ubOwner] && !ARMED_VEHICLE( MercPtrs[ubOwner] ) ) + if ( ubOwner != NOBODY && !ARMED_VEHICLE( ubOwner ) ) { - MercPtrs[ubOwner]->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, MercPtrs[ ubOwner ]->sGridNo, 0, TRUE); + ubOwner->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, ubOwner->sGridNo, 0, TRUE); } // recompile = TRUE means that we destroyed something