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
{
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 1;
pSoldier->usUIMovementMode = RUNNING;
gfPlotNewMovement = TRUE;
@@ -1834,6 +1841,13 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
}
else
{
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 0;
pSoldier->usUIMovementMode = WALKING;
gfPlotNewMovement = TRUE;
@@ -1841,13 +1855,31 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
break;
case MOVEMENT_MENU_SWAT:
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_CROUCH );
if (pSoldier->IsCowering())
{
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;
case MOVEMENT_MENU_PRONE:
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_PRONE );
if (pSoldier->IsCowering())
{
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;
}
@@ -3128,8 +3160,18 @@ UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
}
else
{
// Set state to result
UIHandleSoldierStanceChange( pSoldier->ubID, ubNewStance );
if (pSoldier->IsCowering())
{
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!
+27 -2
View File
@@ -6132,7 +6132,6 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight )
if( gusSelectedSoldier != NOBODY )
{
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.
// If we want to run we have to press "r" which is handled elsewhere.
if ( ubAnimHeight == ANIM_STAND )
@@ -6144,13 +6143,32 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight )
}
else
{
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ubAnimHeight);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 0;
pSoldier->usUIMovementMode = WALKING;
gfPlotNewMovement = TRUE;
}
}
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
{
if (pSoldier->IsCowering())
{
pSoldier->StopCoweringAnimation();
UINT16 usNewState = pSoldier->GetNewSoldierStateFromNewStance(ANIM_STAND);
pSoldier->usPendingAnimation = usNewState;
}
pSoldier->flags.fUIMovementFast = 1;
pSoldier->usUIMovementMode = RUNNING;
gfPlotNewMovement = TRUE;