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
This commit is contained in:
Sevenfm
2022-04-02 15:39:58 +00:00
parent 0782dec389
commit b2ea45b182
3 changed files with 21 additions and 11 deletions
+11 -4
View File
@@ -5911,14 +5911,16 @@ void EndMultiSoldierSelection( BOOLEAN fAcknowledge )
} }
void StopRubberBandedMercFromMoving( ) BOOLEAN StopRubberBandedMercFromMoving(void)
{ {
if ( !gTacticalStatus.fAtLeastOneGuyOnMultiSelect || ( gTacticalStatus.uiFlags & INCOMBAT ) ) 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 // OK, loop through all guys who are 'multi-selected' and
// check if our currently selected guy is among the // check if our currently selected guy is among the
@@ -5930,6 +5932,10 @@ void StopRubberBandedMercFromMoving( )
{ {
if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED )
{ {
if (!(gAnimControl[pSoldier->usAnimState].uiFlags & ANIM_STATIONARY))
{
fFound = TRUE;
}
pSoldier->flags.fDelayedMovement = FALSE; pSoldier->flags.fDelayedMovement = FALSE;
pSoldier->pathing.sFinalDestination = pSoldier->sGridNo; pSoldier->pathing.sFinalDestination = pSoldier->sGridNo;
pSoldier->StopSoldier( ); pSoldier->StopSoldier( );
@@ -5937,6 +5943,7 @@ void StopRubberBandedMercFromMoving( )
} }
} }
return fFound;
} }
+1 -1
View File
@@ -363,7 +363,7 @@ void ChangeInterfaceLevel( INT16 sLevel );
void EndRubberBanding( ); void EndRubberBanding( );
void ResetMultiSelection( ); void ResetMultiSelection( );
void EndMultiSoldierSelection( BOOLEAN fAcknowledge ); void EndMultiSoldierSelection( BOOLEAN fAcknowledge );
void StopRubberBandedMercFromMoving( ); BOOLEAN StopRubberBandedMercFromMoving(void);
BOOLEAN SelectedGuyInBusyAnimation( ); BOOLEAN SelectedGuyInBusyAnimation( );
+9 -6
View File
@@ -2214,16 +2214,19 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect) if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect)
{ {
// ATE: OK, stop any mercs who are moving by selection method.... // ATE: OK, stop any mercs who are moving by selection method....
StopRubberBandedMercFromMoving(); BOOLEAN fFound = StopRubberBandedMercFromMoving();
// sevenfm: unready weapon for all selected // sevenfm: unready weapon for all selected
UINT8 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; if (!fFound)
for (SOLDIERTYPE *pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++)
{ {
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); if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier))
HandleSight(pSoldier, SIGHT_LOOK); {
pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE);
HandleSight(pSoldier, SIGHT_LOOK);
}
} }
} }