From 916bf88b9d4d966b17a3872e4c3df2c99ece06de Mon Sep 17 00:00:00 2001 From: Flugente Date: Sat, 22 Feb 2014 19:32:13 +0000 Subject: [PATCH] Merged revision(s) 6965 from branches/ja2_source_official_2014: - [CTRL] + [i] in tactical calls a dialogue for sector inventory manipulations (by Sevenfm) - [CTRL] + [c] in tactical calls a dialogue for cover/trap display modes (by Sevenfm) - changed min value for SCOPE_RANGE_MULTIPLIER from 0.5 to 0.1 (by Sevenfm) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6966 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 2 +- Tactical/DisplayCover.cpp | 28 --- Tactical/DisplayCover.h | 27 +++ Tactical/Turn Based Input.cpp | 439 ++++++++++++++++++++++++---------- Utils/Text.h | 7 + Utils/_ChineseText.cpp | 74 ++++++ Utils/_DutchText.cpp | 74 ++++++ Utils/_EnglishText.cpp | 75 ++++++ Utils/_FrenchText.cpp | 74 ++++++ Utils/_GermanText.cpp | 74 ++++++ Utils/_ItalianText.cpp | 74 ++++++ Utils/_PolishText.cpp | 75 ++++++ Utils/_RussianText.cpp | 75 ++++++ Utils/_TaiwaneseText.cpp | 75 ++++++ 14 files changed, 1015 insertions(+), 158 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 0dad6d03..5d3362e1 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -3166,7 +3166,7 @@ void LoadCTHConstants() gGameCTHConstants.RANGE_COEFFICIENT = iniReader.ReadFloat("General", "RANGE_COEFFICIENT", 2.0, 0.001f, 100.0); gGameCTHConstants.GRAVITY_COEFFICIENT = iniReader.ReadFloat("General", "GRAVITY_COEFFICIENT", 1.0, 0.001f, 100.0); gGameCTHConstants.VERTICAL_BIAS = iniReader.ReadFloat("General", "VERTICAL_BIAS", 1.0f, 0.01f, 2.0f); - gGameCTHConstants.SCOPE_RANGE_MULTIPLIER = iniReader.ReadFloat("General", "SCOPE_RANGE_MULTIPLIER", 0.7f, 0.5f, 1.5f); + gGameCTHConstants.SCOPE_RANGE_MULTIPLIER = iniReader.ReadFloat("General", "SCOPE_RANGE_MULTIPLIER", 0.7f, 0.1f, 1.5f); gGameCTHConstants.SCOPE_EFFECTIVENESS_MULTIPLIER = iniReader.ReadFloat("General", "SCOPE_EFFECTIVENESS_MULTIPLIER", 1.1f, 0.5f, 1.5f); gGameCTHConstants.SCOPE_EFFECTIVENESS_MINIMUM = iniReader.ReadInteger("General", "SCOPE_EFFECTIVENESS_MINIMUM", 50, 0, 100); gGameCTHConstants.SCOPE_EFFECTIVENESS_MINIMUM_RANGER = iniReader.ReadInteger("General", "SCOPE_EFFECTIVENESS_MINIMUM_RANGER", 80, 0, 100); diff --git a/Tactical/DisplayCover.cpp b/Tactical/DisplayCover.cpp index 1f0e4b00..38a049ff 100644 --- a/Tactical/DisplayCover.cpp +++ b/Tactical/DisplayCover.cpp @@ -91,12 +91,6 @@ struct CoverCell }; -enum COVER_DRAW_MODE { - COVER_DRAW_OFF, - COVER_DRAW_MERC_VIEW, - COVER_DRAW_ENEMY_VIEW -}; - const UINT8 animArr[3] = { ANIM_PRONE, ANIM_CROUCH, @@ -108,28 +102,6 @@ const UINT8 animArr[3] = { #define COVER_Y_CELLS WORLD_ROWS_MAX #define COVER_Z_CELLS 2 // roof or no roof - -// Flugente: mines display - stuff needs to be here -enum MINES_DRAW_MODE { - MINES_DRAW_OFF, - MINES_DRAW_DETECT_ENEMY, - MINES_DRAW_PLAYERTEAM_NETWORKS, - MINES_DRAW_NETWORKCOLOURING, - MINES_DRAW_NET_A, - MINES_DRAW_NET_B, - MINES_DRAW_NET_C, - MINES_DRAW_NET_D, - MINES_DRAW_MAX -}; - -// Flugente: trait draw mode -enum TRAIT_DRAW_MODE { - TRAIT_DRAW_OFF, - TRAIT_DRAW_RANGE, - TRAIT_DRAW_MAX -}; - - //****** Local Variables ********************************************* INT16 gsMinCellX, gsMinCellY, gsMaxCellX, gsMaxCellY = -1; diff --git a/Tactical/DisplayCover.h b/Tactical/DisplayCover.h index e1d0527b..43f4b0ff 100644 --- a/Tactical/DisplayCover.h +++ b/Tactical/DisplayCover.h @@ -25,6 +25,33 @@ void DisplayGridNoVisibleToSoldierGrid( ); #define DC__MIN_SIZE 4 #define DC__MAX_SIZE 21 //11 +// Flugente: mines display - stuff needs to be here +// Sevenfm: moved here from DisplayCover.cpp +enum MINES_DRAW_MODE { + MINES_DRAW_OFF, + MINES_DRAW_DETECT_ENEMY, + MINES_DRAW_PLAYERTEAM_NETWORKS, + MINES_DRAW_NETWORKCOLOURING, + MINES_DRAW_NET_A, + MINES_DRAW_NET_B, + MINES_DRAW_NET_C, + MINES_DRAW_NET_D, + MINES_DRAW_MAX +}; + +// Flugente: trait draw mode +enum TRAIT_DRAW_MODE { + TRAIT_DRAW_OFF, + TRAIT_DRAW_RANGE, + TRAIT_DRAW_MAX +}; + +enum COVER_DRAW_MODE { + COVER_DRAW_OFF, + COVER_DRAW_MERC_VIEW, + COVER_DRAW_ENEMY_VIEW +}; + #ifdef JA2TESTVERSION void DisplayLosAndDisplayCoverUsageScreenMsg(); #endif diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 64bf3644..ccbb8949 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -117,6 +117,8 @@ #include "SkillMenu.h" // added by Flugente #include "Map Screen Interface Map Inventory.h"//dnl ch75 021113 +#include "DisplayCover.h" // added by Sevenfm + //forward declarations of common classes to eliminate includes class OBJECTTYPE; class SOLDIERTYPE; @@ -154,6 +156,10 @@ extern BOOLEAN gfNextShotKills; UINT32 guiSoldierFlags; UINT32 guiUITargetSoldierId = NOBODY; +// sevenfm: for cover dialog +extern COVER_DRAW_MODE gubDrawMode; +extern MINES_DRAW_MODE gubDrawModeMine; + void HandleTalkingMenuKeys( InputAtom *pInputEvent, UINT32 *puiNewEvent ); void HandleMenuKeys( InputAtom *pInputEvent, UINT32 *puiNewEvent ); void HandleItemMenuKeys( InputAtom *pInputEvent, UINT32 *puiNewEvent ); @@ -319,6 +325,12 @@ void HandleTBDropBackpacks( void ); void HandleTBPickUpBackpacks( void ); void HandleTBSoldierRun( void ); +void HandleTacticalInventoryMenu( void ); +void TacticalInventoryMessageBoxCallBack( UINT8 ubExitValue ); +void HandleTacticalCoverMenu( void ); +void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue ); +void HandleTacticalAmmoCrates( UINT8 magType ); + void GetTBMouseButtonInput( UINT32 *puiNewEvent ) { QueryTBLeftButton( puiNewEvent ); @@ -2753,138 +2765,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) case 'A': //CHRISL: Ammo Crate //MM: Ammo Box - if(!(gTacticalStatus.fEnemyInSector)) - { - INT32 crateItem; - INT32 worldItem; - UINT8 magType; - bool mergeSuccessful, ammoPresent; - int loopCount = 0; - OBJECTTYPE newCrate; - ammoPresent = true; - if (fCtrl) - magType = AMMO_CRATE; + HandleTacticalAmmoCrates( AMMO_CRATE ); else - magType = AMMO_BOX; - - while (ammoPresent && loopCount <= 10) - { - //look through all sector items for ammo. - for(unsigned int wItem = 0; wItem < guiNumWorldItems; wItem++) - { - crateItem = 0; - mergeSuccessful = false; - if(Item[gWorldItems[wItem].object.usItem].usItemClass == IC_AMMO && gWorldItems[wItem].bVisible == TRUE && gWorldItems[wItem].fExists && (gWorldItems[wItem].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[wItem].usFlags & WORLD_ITEM_ARMED_BOMB)) - { - worldItem = gWorldItems[wItem].object.usItem; - //we don't want to do anything if the world item is already an ammo crate/box - if(Magazine[Item[worldItem].ubClassIndex].ubMagType == magType) - continue; - - //we have a valid, ammo item. Look through Items.xml and see if we have an ammo crate for - // this ammo type - for(int iLoop = 0; iLoop < MAXITEMS; iLoop++) - { - if (Item[iLoop].usItemClass == 0) - break; //no more valid items after this point - - //if ammo crate && calibers match && Ammo Types match - if(Item[iLoop].usItemClass == IC_AMMO && Magazine[Item[iLoop].ubClassIndex].ubMagType == magType && Magazine[Item[iLoop].ubClassIndex].ubCalibre == Magazine[Item[worldItem].ubClassIndex].ubCalibre && Magazine[Item[iLoop].ubClassIndex].ubAmmoType == Magazine[Item[worldItem].ubClassIndex].ubAmmoType) - { - crateItem = iLoop; + HandleTacticalAmmoCrates( AMMO_BOX ); + break; - } - } - - //if we found a crateItem in the list, we first want to see if we already have an item created - if(crateItem != 0) - { - //look through world items first - for(unsigned int loop=0; loop < guiNumWorldItems; loop++) - { - if(gWorldItems[loop].object.usItem == crateItem) - { - DistributeStatus(&gWorldItems[wItem].object, &gWorldItems[loop].object, Magazine[Item[crateItem].ubClassIndex].ubMagSize); - if(gWorldItems[wItem].object.ubNumberOfObjects < 1) - { - mergeSuccessful = true; - RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); - RemoveItemFromWorld(wItem); - break; - } - } - - } - //no crates in sector inventory. search merc inventories - if(!mergeSuccessful) - { - for(int loop=0; loop<(int)OUR_TEAM_SIZE_NO_VEHICLE; ++loop) - { - if(MercPtrs[loop]->bActive && MercPtrs[loop]->bInSector) - { - UINT32 invsize = MercPtrs[loop]->inv.size(); - for(UINT32 pocket=0; pocket < invsize; ++pocket) - { - if(MercPtrs[loop]->inv[pocket].usItem == crateItem) - { - DistributeStatus(&gWorldItems[wItem].object, &MercPtrs[loop]->inv[pocket], Magazine[Item[crateItem].ubClassIndex].ubMagSize); - if(gWorldItems[wItem].object.ubNumberOfObjects < 1) - { - mergeSuccessful = true; - RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); - RemoveItemFromWorld(wItem); - break; - } - } - } - if(mergeSuccessful == true) - break; - } - } - } - //no crates in merc inventory. create a new sector item - if(!mergeSuccessful) - { - CreateAmmo(crateItem, &newCrate, 0); - DistributeStatus(&gWorldItems[wItem].object, &newCrate, Magazine[Item[crateItem].ubClassIndex].ubMagSize); - AddItemToPool(gWorldItems[wItem].sGridNo, &newCrate, 1, gWorldItems[wItem].ubLevel, gWorldItems[wItem].usFlags, gWorldItems[wItem].bRenderZHeightAboveLevel); - if(gWorldItems[wItem].object.ubNumberOfObjects < 1) - { - mergeSuccessful = true; - RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); - RemoveItemFromWorld(wItem); - } - } - } - } - } - - // if we added to / created a box/crate, then we're fine to reset this - if ( mergeSuccessful ) - loopCount = 0; - - //MM: loop through ammo multiple times, as boxes and crates may take a few passes to fill - ammoPresent = false; - for(unsigned int wItem = 0; wItem < guiNumWorldItems; wItem++) - { - if(Item[gWorldItems[wItem].object.usItem].usItemClass == IC_AMMO && gWorldItems[wItem].bVisible == TRUE && gWorldItems[wItem].fExists && (gWorldItems[wItem].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[wItem].usFlags & WORLD_ITEM_ARMED_BOMB)) - { - worldItem = gWorldItems[wItem].object.usItem; - if(Magazine[Item[worldItem].ubClassIndex].ubMagType == magType) - continue; - - loopCount++; - ammoPresent = true; - break; - } - } - - StackAndSort(TRUE); - } - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pImpButtonText[11] ); - } - break; case 'J': case 'j': if ( fShift ) @@ -3110,6 +2996,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { ToggleCliffDebug(); } + else + { + HandleTacticalCoverMenu(); + } } else { @@ -3463,6 +3353,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) else { RESET_CHEAT_LEVEL(); + HandleTacticalInventoryMenu(); } #endif } @@ -7705,3 +7596,293 @@ void HandleTBSoldierRun( void ) } } +void HandleTacticalAmmoCrates( UINT8 magType ) +{ + if(gTacticalStatus.fEnemyInSector) + return; + + INT32 crateItem; + INT32 worldItem; + //UINT8 magType; + bool mergeSuccessful, ammoPresent; + int loopCount = 0; + OBJECTTYPE newCrate; + ammoPresent = true; + + while (ammoPresent && loopCount <= 10) + { + //look through all sector items for ammo. + for(unsigned int wItem = 0; wItem < guiNumWorldItems; wItem++) + { + crateItem = 0; + mergeSuccessful = false; + if(Item[gWorldItems[wItem].object.usItem].usItemClass == IC_AMMO && gWorldItems[wItem].bVisible == TRUE && gWorldItems[wItem].fExists && (gWorldItems[wItem].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[wItem].usFlags & WORLD_ITEM_ARMED_BOMB)) + { + worldItem = gWorldItems[wItem].object.usItem; + //we don't want to do anything if the world item is already an ammo crate/box + if(Magazine[Item[worldItem].ubClassIndex].ubMagType == magType) + continue; + + //we have a valid, ammo item. Look through Items.xml and see if we have an ammo crate for + // this ammo type + for(int iLoop = 0; iLoop < MAXITEMS; iLoop++) + { + if (Item[iLoop].usItemClass == 0) + break; //no more valid items after this point + + //if ammo crate && calibers match && Ammo Types match + if(Item[iLoop].usItemClass == IC_AMMO && Magazine[Item[iLoop].ubClassIndex].ubMagType == magType && Magazine[Item[iLoop].ubClassIndex].ubCalibre == Magazine[Item[worldItem].ubClassIndex].ubCalibre && Magazine[Item[iLoop].ubClassIndex].ubAmmoType == Magazine[Item[worldItem].ubClassIndex].ubAmmoType) + { + crateItem = iLoop; + break; + } + } + + //if we found a crateItem in the list, we first want to see if we already have an item created + if(crateItem != 0) + { + //look through world items first + for(unsigned int loop=0; loop < guiNumWorldItems; loop++) + { + if(gWorldItems[loop].object.usItem == crateItem) + { + DistributeStatus(&gWorldItems[wItem].object, &gWorldItems[loop].object, Magazine[Item[crateItem].ubClassIndex].ubMagSize); + if(gWorldItems[wItem].object.ubNumberOfObjects < 1) + { + mergeSuccessful = true; + RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); + RemoveItemFromWorld(wItem); + break; + } + } + + } + //no crates in sector inventory. search merc inventories + if(!mergeSuccessful) + { + for(int loop=0; loop<(int)OUR_TEAM_SIZE_NO_VEHICLE; ++loop) + { + if(MercPtrs[loop]->bActive && MercPtrs[loop]->bInSector) + { + UINT32 invsize = MercPtrs[loop]->inv.size(); + for(UINT32 pocket=0; pocket < invsize; ++pocket) + { + if(MercPtrs[loop]->inv[pocket].usItem == crateItem) + { + DistributeStatus(&gWorldItems[wItem].object, &MercPtrs[loop]->inv[pocket], Magazine[Item[crateItem].ubClassIndex].ubMagSize); + if(gWorldItems[wItem].object.ubNumberOfObjects < 1) + { + mergeSuccessful = true; + RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); + RemoveItemFromWorld(wItem); + break; + } + } + } + if(mergeSuccessful == true) + break; + } + } + } + //no crates in merc inventory. create a new sector item + if(!mergeSuccessful) + { + CreateAmmo(crateItem, &newCrate, 0); + DistributeStatus(&gWorldItems[wItem].object, &newCrate, Magazine[Item[crateItem].ubClassIndex].ubMagSize); + AddItemToPool(gWorldItems[wItem].sGridNo, &newCrate, 1, gWorldItems[wItem].ubLevel, gWorldItems[wItem].usFlags, gWorldItems[wItem].bRenderZHeightAboveLevel); + if(gWorldItems[wItem].object.ubNumberOfObjects < 1) + { + mergeSuccessful = true; + RemoveItemFromPool(gWorldItems[wItem].sGridNo,(wItem),gWorldItems[wItem].ubLevel); + RemoveItemFromWorld(wItem); + } + } + } + } + } + + // if we added to / created a box/crate, then we're fine to reset this + if ( mergeSuccessful ) + loopCount = 0; + + //MM: loop through ammo multiple times, as boxes and crates may take a few passes to fill + ammoPresent = false; + for(unsigned int wItem = 0; wItem < guiNumWorldItems; wItem++) + { + if(Item[gWorldItems[wItem].object.usItem].usItemClass == IC_AMMO && gWorldItems[wItem].bVisible == TRUE && gWorldItems[wItem].fExists && (gWorldItems[wItem].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[wItem].usFlags & WORLD_ITEM_ARMED_BOMB)) + { + worldItem = gWorldItems[wItem].object.usItem; + if(Magazine[Item[worldItem].ubClassIndex].ubMagType == magType) + continue; + + loopCount++; + ammoPresent = true; + break; + } + } + + StackAndSort(TRUE); + } + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pImpButtonText[11] ); +} + +void HandleTacticalInventoryMenu( void ) +{ + for( INT32 cnt = 0; cnt < TACTICAL_INVENTORY_DIALOG_NUM; cnt++) + { + wcscpy( gzUserDefinedButton[cnt], szTacticalInventoryDialogString[cnt+1] ); + gzUserDefinedButtonColor[cnt] = 0; + } + + gzUserDefinedButtonColor[0] = FONT_MCOLOR_LTGRAY; + gzUserDefinedButtonColor[1] = FONT_MCOLOR_LTGRAY; + gzUserDefinedButtonColor[4] = FONT_ORANGE; + gzUserDefinedButtonColor[5] = FONT_ORANGE; + gzUserDefinedButtonColor[6] = FONT_ORANGE; + gzUserDefinedButtonColor[7] = FONT_ORANGE; + + gzUserDefinedButtonColor[8] = FONT_MCOLOR_LTGREEN; + gzUserDefinedButtonColor[9] = FONT_MCOLOR_LTGREEN; + gzUserDefinedButtonColor[10] = FONT_MCOLOR_LTYELLOW; + gzUserDefinedButtonColor[11] = FONT_MCOLOR_LTYELLOW; + + DoMessageBox( MSG_BOX_BASIC_STYLE, szTacticalInventoryDialogString[0], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, TacticalInventoryMessageBoxCallBack, NULL ); +} + +void TacticalInventoryMessageBoxCallBack( UINT8 ubExitValue ) +{ + switch( ubExitValue ) + { + case 1: // switch NVG + HandleTBSwapGoogles(); + break; + case 2: // reload ALL + HandleTBReloadAll(); + break; + case 3: + break; + case 4: + break; + case 5: // sort items + StackAndSort( TRUE ); + break; + case 6: // merge items + StackAndSort( FALSE ); + break; + case 7: // remove att + SeperateItems(); + break; + case 8: // organize items + SeperateItems(); + StackAndSort( FALSE ); + break; + case 9: // ammo crates + HandleTacticalAmmoCrates( AMMO_CRATE ); + break; + case 10: // ammo boxes + HandleTacticalAmmoCrates( AMMO_BOX ); + break; + case 11: // drop backpacks + HandleTBDropBackpacks(); + break; + case 12: // pickup backpacks + HandleTBPickUpBackpacks(); + break; + case 13: + break; + case 14: + break; + case 15: + break; + case 16: + break; + } +} + +void HandleTacticalCoverMenu( void ) +{ + for( INT32 cnt = 0; cnt < TACTICAL_COVER_DIALOG_NUM; cnt++) + { + wcscpy( gzUserDefinedButton[cnt], szTacticalCoverDialogString[cnt+1] ); + gzUserDefinedButtonColor[cnt] = 0; + } + gzUserDefinedButtonColor[0] = 0; + gzUserDefinedButtonColor[1] = FONT_MCOLOR_LTYELLOW; + gzUserDefinedButtonColor[2] = FONT_MCOLOR_LTYELLOW; + gzUserDefinedButtonColor[8] = FONT_ORANGE; + gzUserDefinedButtonColor[9] = FONT_ORANGE; + gzUserDefinedButtonColor[10] = FONT_ORANGE; + gzUserDefinedButtonColor[12] = FONT_MCOLOR_LTGREEN; + gzUserDefinedButtonColor[13] = FONT_MCOLOR_LTGREEN; + gzUserDefinedButtonColor[14] = FONT_MCOLOR_LTGREEN; + gzUserDefinedButtonColor[15] = FONT_MCOLOR_LTGREEN; + + DoMessageBox( MSG_BOX_BASIC_STYLE, szTacticalCoverDialogString[0], GAME_SCREEN, MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS, TacticalCoverMessageBoxCallBack, NULL ); +} + +void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue ) +{ + gubDrawModeMine = MINES_DRAW_OFF; + gubDrawMode = COVER_DRAW_OFF; + switch( ubExitValue ) + { + case 1: + gubDrawModeMine = MINES_DRAW_OFF; + gubDrawMode = COVER_DRAW_OFF; + DisplayMines(TRUE); + break; + case 2: + gubDrawMode = COVER_DRAW_ENEMY_VIEW; + DisplayCover(TRUE); + break; + case 3: + gubDrawMode = COVER_DRAW_MERC_VIEW; + DisplayCover(TRUE); + break; + case 4: + break; + case 5: + break; + case 6: + break; + case 7: + break; + case 8: + break; + case 9: + gubDrawModeMine = MINES_DRAW_PLAYERTEAM_NETWORKS; + DisplayMines(TRUE); + break; + case 10: + gubDrawModeMine = MINES_DRAW_NETWORKCOLOURING; + DisplayMines(TRUE); + break; + case 11: + gubDrawModeMine = MINES_DRAW_DETECT_ENEMY; + DisplayMines(TRUE); + break; + case 12: + break; + case 13: + gubDrawModeMine = MINES_DRAW_NET_A; + DisplayMines(TRUE); + break; + case 14: + gubDrawModeMine = MINES_DRAW_NET_B; + DisplayMines(TRUE); + break; + case 15: + gubDrawModeMine = MINES_DRAW_NET_C; + DisplayMines(TRUE); + break; + case 16: + gubDrawModeMine = MINES_DRAW_NET_D; + DisplayMines(TRUE); + break; + } + if( ubExitValue <= TACTICAL_COVER_DIALOG_NUM ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTacticalCoverDialogPrintString[ubExitValue-1]); +} + + + diff --git a/Utils/Text.h b/Utils/Text.h index 07854e58..339d5098 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -2670,6 +2670,13 @@ enum extern STR16 szCampaignHistoryWebpageString[]; +extern STR16 szTacticalInventoryDialogString[]; +extern STR16 szTacticalCoverDialogString[]; +extern STR16 szTacticalCoverDialogPrintString[]; + +#define TACTICAL_INVENTORY_DIALOG_NUM 16 +#define TACTICAL_COVER_DIALOG_NUM 16 + // Enumeration support typedef struct Str8EnumLookupType { int value; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 0e2dd97d..f4d455a8 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -8433,6 +8433,80 @@ STR16 szCampaignHistoryWebpageString[]= L"天", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + // WANNE: Some Chinese specific strings that needs to be in unicode! STR16 ChineseSpecString1 = L"%%"; //defined in _ChineseText.cpp as this file is already unicode STR16 ChineseSpecString2 = L"*%3d%%%%"; //defined in _ChineseText.cpp as this file is already unicode diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 3f9d0173..2f9fe97e 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -8447,4 +8447,78 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + #endif //DUTCH diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 712a3718..1db6f6f1 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -8431,4 +8431,79 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + + #endif //ENGLISH diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 6cae4e0d..f6058761 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -8429,4 +8429,78 @@ STR16 szCampaignHistoryWebpageString[]= L"Jour", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + #endif //FRENCH diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 17a3e28d..e5edebfd 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -8257,4 +8257,78 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + #endif //GERMAN diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index c49bd166..4312c0cc 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -8439,4 +8439,78 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + #endif //ITALIAN diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 8e3d379b..9dc27f54 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -8457,4 +8457,79 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + + #endif //POLISH diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 3f17ceda..178813cc 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -8435,4 +8435,79 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + + #endif //RUSSIAN diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index d84af644..e6b082b6 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -8447,4 +8447,79 @@ STR16 szCampaignHistoryWebpageString[]= L"Day", }; +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"", + L"", + L"", + L"", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"", + L"", + L"", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + + #endif //TAIWANESE