When changing stance from UI, first stop cowering.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8930 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-02-10 20:20:09 +00:00
parent a0a6396eaa
commit 02cba3e1e5
2 changed files with 75 additions and 8 deletions
+48 -6
View File
@@ -1819,6 +1819,13 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
} }
else else
{ {
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 1; pSoldier->flags.fUIMovementFast = 1;
pSoldier->usUIMovementMode = RUNNING; pSoldier->usUIMovementMode = RUNNING;
gfPlotNewMovement = TRUE; gfPlotNewMovement = TRUE;
@@ -1834,6 +1841,13 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
} }
else else
{ {
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 0; pSoldier->flags.fUIMovementFast = 0;
pSoldier->usUIMovementMode = WALKING; pSoldier->usUIMovementMode = WALKING;
gfPlotNewMovement = TRUE; gfPlotNewMovement = TRUE;
@@ -1841,13 +1855,31 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
break; break;
case MOVEMENT_MENU_SWAT: case MOVEMENT_MENU_SWAT:
if (pSoldier->IsCowering())
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_CROUCH ); {
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_CROUCH);
if (gAnimControl[pSoldier->usAnimState].ubEndHeight != ANIM_CROUCH)
pSoldier->usPendingAnimation = usNewState;
}
else
{
UIHandleSoldierStanceChange(pSoldier->ubID, ANIM_CROUCH);
}
break; break;
case MOVEMENT_MENU_PRONE: case MOVEMENT_MENU_PRONE:
if (pSoldier->IsCowering())
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_PRONE ); {
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_PRONE);
if (gAnimControl[pSoldier->usAnimState].ubEndHeight != ANIM_PRONE)
pSoldier->usPendingAnimation = usNewState;
}
else
{
UIHandleSoldierStanceChange(pSoldier->ubID, ANIM_PRONE);
}
break; break;
} }
@@ -3128,8 +3160,18 @@ UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
} }
else else
{ {
// Set state to result if (pSoldier->IsCowering())
UIHandleSoldierStanceChange( pSoldier->ubID, ubNewStance ); {
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ubNewStance);
if (gAnimControl[pSoldier->usAnimState].ubEndHeight != ubNewStance)
pSoldier->usPendingAnimation = usNewState;
}
else
{
// Set state to result
UIHandleSoldierStanceChange(pSoldier->ubID, ubNewStance);
}
} }
// Once we have APs, we can safely reset nomove flag! // Once we have APs, we can safely reset nomove flag!
+27 -2
View File
@@ -6132,7 +6132,6 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight )
if( gusSelectedSoldier != NOBODY ) if( gusSelectedSoldier != NOBODY )
{ {
pSoldier = MercPtrs[ (UINT8)gusSelectedSoldier ]; pSoldier = MercPtrs[ (UINT8)gusSelectedSoldier ];
// silversurfer: If we decide to stand up or press "s" again while we are standing we should reset movement to walk mode. // silversurfer: If we decide to stand up or press "s" again while we are standing we should reset movement to walk mode.
// If we want to run we have to press "r" which is handled elsewhere. // If we want to run we have to press "r" which is handled elsewhere.
if ( ubAnimHeight == ANIM_STAND ) if ( ubAnimHeight == ANIM_STAND )
@@ -6144,13 +6143,32 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight )
} }
else else
{ {
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ubAnimHeight);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 0; pSoldier->flags.fUIMovementFast = 0;
pSoldier->usUIMovementMode = WALKING; pSoldier->usUIMovementMode = WALKING;
gfPlotNewMovement = TRUE; gfPlotNewMovement = TRUE;
} }
} }
else else
UIHandleSoldierStanceChange( pSoldier->ubID, ubAnimHeight ); {
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ubAnimHeight);
if (gAnimControl[pSoldier->usAnimState].ubEndHeight != ubAnimHeight)
pSoldier->usPendingAnimation = usNewState;
}
else
{
UIHandleSoldierStanceChange(pSoldier->ubID, ubAnimHeight);
}
}
} }
} }
} }
@@ -8124,6 +8142,13 @@ void HandleTBSoldierRun( void )
} }
else else
{ {
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 1; pSoldier->flags.fUIMovementFast = 1;
pSoldier->usUIMovementMode = RUNNING; pSoldier->usUIMovementMode = RUNNING;
gfPlotNewMovement = TRUE; gfPlotNewMovement = TRUE;