From b824267154d5d516a908514272cb0fe00ef935ad Mon Sep 17 00:00:00 2001 From: silversurfer Date: Sat, 31 May 2014 19:46:19 +0000 Subject: [PATCH] - fixed behaviour of the 's' key and 'walk' UI toggle. When you press 's now or click on the 'walk' icon the character(s) stand up (if not already standing) and go to walk mode. Before they could be stuck in running mode which had been activated previously. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7247 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Handle UI.cpp | 12 +++++++++- Tactical/Turn Based Input.cpp | 44 ++++++++++++++++++++++++++++++++--- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index c1b7e66df..4a37090bc 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -1722,7 +1722,17 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent ) case MOVEMENT_MENU_WALK: - UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); + if ( pSoldier->usUIMovementMode != WALKING && pSoldier->usUIMovementMode != RUNNING && pSoldier->usUIMovementMode != WALKING_WEAPON_RDY && pSoldier->usUIMovementMode != WALKING_DUAL_RDY && pSoldier->usUIMovementMode != WALKING_ALTERNATIVE_RDY ) + { + UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); + pSoldier->flags.fUIMovementFast = 0; + } + else + { + pSoldier->flags.fUIMovementFast = 0; + pSoldier->usUIMovementMode = WALKING; + gfPlotNewMovement = TRUE; + } break; case MOVEMENT_MENU_SWAT: diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 0f2f7c466..1b366105c 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -5967,7 +5967,7 @@ void ToggleMercsNeverQuit() } #endif - +// silversurfer: This function handles switching between prone, crouching and standing stance. Running is handled in function HandleTBSoldierRun(). void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) { // If we have multiple guys selected, make all change stance! @@ -5986,7 +5986,24 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) { - UIHandleSoldierStanceChange( pSoldier->ubID, ubAnimHeight ); + // 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 ) + { + if ( pSoldier->usUIMovementMode != WALKING && pSoldier->usUIMovementMode != RUNNING && pSoldier->usUIMovementMode != WALKING_WEAPON_RDY && pSoldier->usUIMovementMode != WALKING_DUAL_RDY && pSoldier->usUIMovementMode != WALKING_ALTERNATIVE_RDY ) + { + UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); + pSoldier->flags.fUIMovementFast = 0; + } + else + { + pSoldier->flags.fUIMovementFast = 0; + pSoldier->usUIMovementMode = WALKING; + gfPlotNewMovement = TRUE; + } + } + else + UIHandleSoldierStanceChange( pSoldier->ubID, ubAnimHeight ); } } } @@ -5994,7 +6011,28 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) else { if( gusSelectedSoldier != NOBODY ) - UIHandleSoldierStanceChange( (UINT8)gusSelectedSoldier, ubAnimHeight ); + { + 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 ) + { + if ( pSoldier->usUIMovementMode != WALKING && pSoldier->usUIMovementMode != RUNNING && pSoldier->usUIMovementMode != WALKING_WEAPON_RDY && pSoldier->usUIMovementMode != WALKING_DUAL_RDY && pSoldier->usUIMovementMode != WALKING_ALTERNATIVE_RDY ) + { + UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); + pSoldier->flags.fUIMovementFast = 0; + } + else + { + pSoldier->flags.fUIMovementFast = 0; + pSoldier->usUIMovementMode = WALKING; + gfPlotNewMovement = TRUE; + } + } + else + UIHandleSoldierStanceChange( pSoldier->ubID, ubAnimHeight ); + } } }