diff --git a/Tactical/Real Time Input.cpp b/Tactical/Real Time Input.cpp index 91a83615..514fd5c7 100644 --- a/Tactical/Real Time Input.cpp +++ b/Tactical/Real Time Input.cpp @@ -59,6 +59,7 @@ #include "worlddat.h" //for gtileset #include "Debug Control.h" //for livelog +#include "SkillMenu.h" // sevenfm: need this for TraitsMenu #endif @@ -1226,58 +1227,74 @@ void QueryRTRightButton( UINT32 *puiNewEvent ) // ATE: if ( gusSelectedSoldier != NOBODY ) { - // Switch on UI mode - switch( gCurrentUIMode ) + // sevenfm: ALT+RMB - TraitsMenu + if(_KeyDown(ALT)) { - case IDLE_MODE: - - break; - - case CONFIRM_MOVE_MODE: - case MOVE_MODE: - case TALKCURSOR_MODE: - + switch( gCurrentUIMode ) + { + case MOVE_MODE: + case TALKCURSOR_MODE: + case ACTION_MODE: + case CONFIRM_ACTION_MODE: + case LOOKCURSOR_MODE: + TraitsMenu(usMapPos); + fClickIntercepted = TRUE; + break; + } + } + else + { + // Switch on UI mode + switch( gCurrentUIMode ) { + case IDLE_MODE: + + break; + + case CONFIRM_MOVE_MODE: + case MOVE_MODE: + case TALKCURSOR_MODE: + // We have here a change to action mode *puiNewEvent = M_CHANGE_TO_ACTION; + fClickIntercepted = TRUE; + break; + + case ACTION_MODE: + + // We have here a change to move mode + *puiNewEvent = A_END_ACTION; + fClickIntercepted = TRUE; + break; + + case CONFIRM_ACTION_MODE: + + if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) + { + HandleRightClickAdjustCursor( pSoldier, usMapPos ); + } + fClickIntercepted = TRUE; + break; + + case MENU_MODE: + + // If we get a hit here and we're in menu mode, quit the menu mode + EndMenuEvent( guiCurrentEvent ); + fClickIntercepted = TRUE; + break; + + case HANDCURSOR_MODE: + // If we cannot actually do anything, return to movement mode + *puiNewEvent = A_CHANGE_TO_MOVE; + break; + + case LOOKCURSOR_MODE: + + // If we cannot actually do anything, return to movement mode + *puiNewEvent = A_CHANGE_TO_MOVE; + break; + } - fClickIntercepted = TRUE; - break; - - case ACTION_MODE: - - // We have here a change to move mode - *puiNewEvent = A_END_ACTION; - fClickIntercepted = TRUE; - break; - - case CONFIRM_ACTION_MODE: - - if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) - { - HandleRightClickAdjustCursor( pSoldier, usMapPos ); - } - fClickIntercepted = TRUE; - break; - - case MENU_MODE: - - // If we get a hit here and we're in menu mode, quit the menu mode - EndMenuEvent( guiCurrentEvent ); - fClickIntercepted = TRUE; - break; - - case HANDCURSOR_MODE: - // If we cannot actually do anything, return to movement mode - *puiNewEvent = A_CHANGE_TO_MOVE; - break; - - case LOOKCURSOR_MODE: - - // If we cannot actually do anything, return to movement mode - *puiNewEvent = A_CHANGE_TO_MOVE; - break; - } } } diff --git a/Tactical/SkillMenu.cpp b/Tactical/SkillMenu.cpp index 8411ebfe..ca1bcd7e 100644 --- a/Tactical/SkillMenu.cpp +++ b/Tactical/SkillMenu.cpp @@ -11,6 +11,9 @@ #include "DisplayCover.h" #include "worldman.h" +// sevenfm: need this for correct calculation of traits menu position +extern INT16 gsInterfaceLevel; + UINT16 usTraitMenuPosX = 0; UINT16 usTraitMenuPosY = 0; @@ -143,7 +146,9 @@ TraitSelection::Setup( UINT32 aVal ) // grab soldier's x,y screen position INT16 sX, sY; - GetSoldierScreenPos( pSoldier, &sX, &sY ); + // sevenfm: changed TraitsMenu position from soldier to mouse + //GetSoldierScreenPos( pSoldier, &sX, &sY ); + GetGridNoScreenPos( sTraitsMenuTargetGridNo, gsInterfaceLevel, &sX, &sY ); if( sX < 0 ) sX = 0; if( sY < 0 ) sY = 0; diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index ccb16bf5..be85849d 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -970,6 +970,23 @@ void QueryTBRightButton( UINT32 *puiNewEvent ) { // ATE: if ( gusSelectedSoldier != NOBODY ) + { + // sevenfm: ALT+RMB - TraitsMenu + if(_KeyDown(ALT)) + { + switch( gCurrentUIMode ) + { + case MOVE_MODE: + case TALKCURSOR_MODE: + case ACTION_MODE: + case CONFIRM_ACTION_MODE: + case LOOKCURSOR_MODE: + TraitsMenu(usMapPos); + fClickIntercepted = TRUE; + break; + } + } + else { // Switch on UI mode switch( gCurrentUIMode ) @@ -1028,6 +1045,7 @@ void QueryTBRightButton( UINT32 *puiNewEvent ) } } + } } else {