From b2ea45b182f97af9e0e10223d4e8b0a68d11093e Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Sat, 2 Apr 2022 15:39:58 +0000 Subject: [PATCH] ESC for multiple selected mercs: first stop mercs, next press unready weapon. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9358 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Handle UI.cpp | 15 +++++++++++---- Tactical/Handle UI.h | 2 +- Tactical/Turn Based Input.cpp | 15 +++++++++------ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index e7d4fd20..999824b6 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -5911,14 +5911,16 @@ void EndMultiSoldierSelection( BOOLEAN fAcknowledge ) } -void StopRubberBandedMercFromMoving( ) +BOOLEAN StopRubberBandedMercFromMoving(void) { if ( !gTacticalStatus.fAtLeastOneGuyOnMultiSelect || ( gTacticalStatus.uiFlags & INCOMBAT ) ) { - return; + return FALSE; } - SOLDIERTYPE * pSoldier; - INT32 cnt; + + SOLDIERTYPE *pSoldier; + INT32 cnt; + BOOLEAN fFound = FALSE; // OK, loop through all guys who are 'multi-selected' and // check if our currently selected guy is among the @@ -5930,6 +5932,10 @@ void StopRubberBandedMercFromMoving( ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) { + if (!(gAnimControl[pSoldier->usAnimState].uiFlags & ANIM_STATIONARY)) + { + fFound = TRUE; + } pSoldier->flags.fDelayedMovement = FALSE; pSoldier->pathing.sFinalDestination = pSoldier->sGridNo; pSoldier->StopSoldier( ); @@ -5937,6 +5943,7 @@ void StopRubberBandedMercFromMoving( ) } } + return fFound; } diff --git a/Tactical/Handle UI.h b/Tactical/Handle UI.h index 8819f486..5937d911 100644 --- a/Tactical/Handle UI.h +++ b/Tactical/Handle UI.h @@ -363,7 +363,7 @@ void ChangeInterfaceLevel( INT16 sLevel ); void EndRubberBanding( ); void ResetMultiSelection( ); void EndMultiSoldierSelection( BOOLEAN fAcknowledge ); -void StopRubberBandedMercFromMoving( ); +BOOLEAN StopRubberBandedMercFromMoving(void); BOOLEAN SelectedGuyInBusyAnimation( ); diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index d76531bc..8e1dc05b 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -2214,16 +2214,19 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect) { // ATE: OK, stop any mercs who are moving by selection method.... - StopRubberBandedMercFromMoving(); + BOOLEAN fFound = StopRubberBandedMercFromMoving(); // sevenfm: unready weapon for all selected - UINT8 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for (SOLDIERTYPE *pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++) + if (!fFound) { - if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier)) + UINT8 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for (SOLDIERTYPE *pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++) { - pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE); - HandleSight(pSoldier, SIGHT_LOOK); + if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier)) + { + pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE); + HandleSight(pSoldier, SIGHT_LOOK); + } } }