From 9acaa41e95b1deb63cbf11e37d627e1592ffdacd Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Fri, 25 Mar 2022 10:50:18 +0000 Subject: [PATCH] Added Autobandage option to Skill Menu. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9344 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/SkillMenu.cpp | 22 ++++++++++++++++++++-- Tactical/Soldier Control.cpp | 9 +++++++++ Tactical/Turn Based Input.cpp | 15 ++++++++++++++- Tactical/soldier profile type.h | 2 ++ Utils/_ChineseText.cpp | 3 ++- Utils/_DutchText.cpp | 1 + Utils/_EnglishText.cpp | 1 + Utils/_FrenchText.cpp | 3 ++- Utils/_GermanText.cpp | 1 + Utils/_ItalianText.cpp | 1 + Utils/_PolishText.cpp | 1 + Utils/_RussianText.cpp | 3 ++- 12 files changed, 56 insertions(+), 6 deletions(-) diff --git a/Tactical/SkillMenu.cpp b/Tactical/SkillMenu.cpp index 229f4f95..614d84f8 100644 --- a/Tactical/SkillMenu.cpp +++ b/Tactical/SkillMenu.cpp @@ -27,6 +27,7 @@ extern INT8 bSelectedInfoChar; // sevenfm: need this for correct calculation of traits menu position extern INT16 gsInterfaceLevel; +extern void BeginAutoBandage(); UINT16 usTraitMenuPosX = 0; UINT16 usTraitMenuPosY = 0; @@ -70,6 +71,14 @@ SkillSelection gSkillSelection; void Wrapper_Function_SkillSelection( UINT32 aVal) { gSkillSelection.Functions(aVal); } void Wrapper_Setup_SkillSelection( UINT32 aVal) { gSkillSelection.Setup(aVal); } void Wrapper_Cancel_SkillSelection( UINT32 aVal ) { gSkillSelection.Cancel(); } + +void Wrapper_Setup_AutobandageSelection(UINT32 aVal) +{ + gSkillSelection.Cancel(); + gTraitSelection.Cancel(); + + BeginAutoBandage(); +} /////////////////////////////// Skill Selection //////////////////////////////////////////// /////////////////////////////// Artillery Sector Selection //////////////////////////////////////////// @@ -141,16 +150,25 @@ TraitSelection::Setup( UINT32 aVal ) CHAR16 pStr[300]; // create entries for the sub-menus for each trait - const UINT8 num = 3; + const UINT8 num = 4; UINT8 traitarray[num]; traitarray[0] = RADIO_OPERATOR_NT; traitarray[1] = INTEL; traitarray[2] = VARIOUSSKILLS; + traitarray[3] = AUTOBANDAGESKILLS; + for ( int i = 0; i < num; ++i) { swprintf( pStr, gzMercSkillTextNew[traitarray[i]] ); - pOption = new POPUP_OPTION(&std::wstring( pStr ), new popupCallbackFunction( &Wrapper_Setup_SkillSelection, traitarray[i] ) ); + if (traitarray[i] == AUTOBANDAGESKILLS) + { + pOption = new POPUP_OPTION(&std::wstring(pStr), new popupCallbackFunction(&Wrapper_Setup_AutobandageSelection, traitarray[i])); + } + else + { + pOption = new POPUP_OPTION(&std::wstring(pStr), new popupCallbackFunction(&Wrapper_Setup_SkillSelection, traitarray[i])); + } // if we cannot perform this skill, grey it out if ( !HAS_SKILL_TRAIT(pSoldier, traitarray[i]) ) diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index b15fc7dd..aa6be175 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -162,6 +162,9 @@ extern BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, U // Flugente: external sector data extern SECTOR_EXT_DATA SectorExternalData[256][4]; +// sevenfm: check availability of actions +extern BOOLEAN CheckAutoBandage(void); + // Enumerate extended directions enum { @@ -24361,6 +24364,12 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) if ( uiSkillTraitNumber == INTEL || uiSkillTraitNumber == VARIOUSSKILLS ) return TRUE; + // sevenfm: add Autobandage option to skills menu + if (uiSkillTraitNumber == AUTOBANDAGESKILLS) + { + return CheckAutoBandage(); + } + INT8 bNumMajorTraitsCounted = 0; INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits; INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed; diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 40013a14..dbe11133 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -313,6 +313,9 @@ void HandleMouseTBMButton( UINT32 *puiNewEvent ); void HandleMouseTBX1Button( UINT32 *puiNewEvent ); void HandleMouseTBX2Button( UINT32 *puiNewEvent ); +// sevenfm: check availability for actions +BOOLEAN CheckAutoBandage(void); + // sevenfm: common functionality void HandleTBSelectAllMercs( void ); void HandleTBToggleStealthAll( void ); @@ -3290,7 +3293,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) #else //shadooow: trying to use autobandage during conversation will mess up game // sevenfm: don't try to activate autobandage in hostile sector - if (!(gTacticalStatus.uiFlags & INCOMBAT) && NumEnemyInSector() == 0 && DialogueQueueIsEmpty()) + if (CheckAutoBandage()) { BeginAutoBandage(); } @@ -9621,3 +9624,13 @@ void HandleTBSkillsMenu(void) TraitsMenu(MercPtrs[gusSelectedSoldier]->sGridNo); } } + +BOOLEAN CheckAutoBandage(void) +{ + if (!(gTacticalStatus.uiFlags & INCOMBAT) && NumEnemyInSector() == 0 && DialogueQueueIsEmpty()) + { + return TRUE; + } + + return FALSE; +} diff --git a/Tactical/soldier profile type.h b/Tactical/soldier profile type.h index 221b8259..9b05c90a 100644 --- a/Tactical/soldier profile type.h +++ b/Tactical/soldier profile type.h @@ -182,6 +182,8 @@ typedef enum // Flugente: these aren't really traits, but it is convenient to pretend so #define INTEL (2 * NEWTRAIT_MERCSKILL_EXPERTOFFSET + 2) #define VARIOUSSKILLS (INTEL + 1) +// sevenfm: add autobandage to skills menu +#define AUTOBANDAGESKILLS (VARIOUSSKILLS + 1) // SANDRO - new set of character traits typedef enum diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 38bbebb7..f9c250ed 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -3241,7 +3241,8 @@ STR16 gzMercSkillTextNew[] = L"生还者", // for survival (minor trait) L"更多...", // 47 L"情报", //L"Intel", for INTEL - L"多种技能", // for VARIOUSSKILLS + L"多种技能", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; ////////////////////////////////////////////////////////// diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index ebe387a2..dc693221 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -3228,6 +3228,7 @@ STR16 gzMercSkillTextNew[] = L"More...", // 47 L"Intel", // for INTEL // TODO.Translate L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; ////////////////////////////////////////////////////////// diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index dede95f0..63e646a2 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -3242,6 +3242,7 @@ STR16 gzMercSkillTextNew[] = L"More...", // 47 L"Intel", // for INTEL L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS }; ////////////////////////////////////////////////////////// diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 33ffe5bb..686a1a04 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -3234,9 +3234,10 @@ STR16 gzMercSkillTextNew[] = L"Placeholder", // for radio operator (minor trait) L"Placeholder", // for snitch (minor trait) L"Placeholder", // for survival (minor trait) - L"Plus...", // 47 + L"Plus...", // 47 L"Intel", // for INTEL // TODO.Translate L"Divers", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; ////////////////////////////////////////////////////////// diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index b712334b..d992d961 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -3271,6 +3271,7 @@ STR16 gzMercSkillTextNew[] = L"Mehr...", // 47 L"Intel", // for INTEL // TODO.Translate L"diverse", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; // This is pop up help text for the options that are available to the merc diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index ef24d1ff..2d8d9cab 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -3224,6 +3224,7 @@ STR16 gzMercSkillTextNew[] = L"More...", // 47 L"Intel", // for INTEL // TODO.Translate L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; ////////////////////////////////////////////////////////// diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index f34b4490..2826c175 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -3234,6 +3234,7 @@ STR16 gzMercSkillTextNew[] = L"Więcej...", // 47 L"Intel", // for INTEL // TODO.Translate L"różne", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate }; ////////////////////////////////////////////////////////// diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index ff75bcb2..d7d83a57 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -3241,7 +3241,8 @@ STR16 gzMercSkillTextNew[] = L"Placeholder", // for survival (minor trait) L"Ещё...", // 47 L"Intel", // for INTEL // TODO.Translate - L"различные", // for VARIOUSSKILLS + L"Различные", // for VARIOUSSKILLS + L"Автоперевязка", // for AUTOBANDAGESKILLS }; //////////////////////////////////////////////////////////