diff --git a/Laptop/CharProfile.cpp b/Laptop/CharProfile.cpp index f5085398..481e11dc 100644 --- a/Laptop/CharProfile.cpp +++ b/Laptop/CharProfile.cpp @@ -703,7 +703,7 @@ void LoadImpGraphics( void ) // Added by SANDRO LoadAttribStartingLevelFrame( ); LoadColorChoiceFrame( ); - + LoadImpGearSelection(); return; } @@ -757,6 +757,7 @@ void RemoveImpGraphics( void ) // Added by SANDRO DeleteAttribStartingLevelFrame( ); DeleteColorChoiceFrame( ); + DeleteImpGearSelection(); return; } diff --git a/Laptop/IMP Gear.cpp b/Laptop/IMP Gear.cpp index 0a6b3d53..59bb6df0 100644 --- a/Laptop/IMP Gear.cpp +++ b/Laptop/IMP Gear.cpp @@ -36,6 +36,28 @@ #include "IMP Gear Entrance.h" #endif +extern BOOLEAN gfGlowTimerExpired; +BOOLEAN fShowIMPItemHighLight = FALSE; +struct rgbcolorImpGear +{ + UINT8 ubRed; + UINT8 ubGreen; + UINT8 ubBlue; +}; +rgbcolorImpGear GlowColorsA[] = { + {0,0,0}, + {25,0,0}, + {50,0,0}, + {75,0,0}, + {100,0,0}, + {125,0,0}, + {150,0,0}, + {175,0,0}, + {200,0,0}, + {225,0,0}, + {250,0,0}, +}; +extern BOOLEAN bBigBody; //******************************************************************* // @@ -58,55 +80,33 @@ // Local Variables // //******************************************************************* +INV_REGIONS gIMPGearInvData[NUM_INV_SLOTS]; +MOUSE_REGION gIMPGearInvRegion[NUM_INV_SLOTS]; +MOUSE_REGION gIMPGearInvPoolRegion[25]; +UINT32 gIMPInvDoneButtonImage; +UINT32 gIMPInvDoneButton; +UINT32 gIMPInvArrowButtonImage[2]; +UINT32 gIMPInvArrowButton[2]; +INT32 gIMPCurrentInventoryPoolPage = 0; +INT32 gIMPLastInventoryPoolPage = 0; +INT32 gCurrentImpGearChoices = 0; +std::map< UINT16, std::vector > > gIMPPossibleItems; +std::map< UINT16, std::pair > gIMPPocketSelectedItems; //Stores what item and amount is currently selected in merc inventory +UINT32 gIMPGlowX = 0; +UINT32 gIMPGlowY = 0; -BOOLEAN gfIMPGear_Redraw = FALSE; // this is the Done button INT32 giIMPGearFinishButton; INT32 giIMPGearFinishButtonImage; -// We access the dropdowns via pointers, which we identify with these enums -// They corrspond with the enums in Dropdown.h -// NOTE: make sure that there are as many of these enums as there are DropDowns for this site. Otherwise odd things migt happen - consider yourself warned. -enum impgeardropdownenums -{ - IMPGEAR_DROPDOWN_LBE1 = 0, - IMPGEAR_DROPDOWN_LBE2, - IMPGEAR_DROPDOWN_LBE3, - IMPGEAR_DROPDOWN_LBE4, - IMPGEAR_DROPDOWN_LBE5, - IMPGEAR_DROPDOWN_GUN_1, - IMPGEAR_DROPDOWN_AMMO_1, - IMPGEAR_DROPDOWN_GUN_2, - IMPGEAR_DROPDOWN_AMMO_2, - IMPGEAR_DROPDOWN_MELEE, - - IMPGEAR_DROPDOWN_HELMET, - IMPGEAR_DROPDOWN_VEST, - IMPGEAR_DROPDOWN_LEGS, - IMPGEAR_DROPDOWN_FACE1, - IMPGEAR_DROPDOWN_FACE2, - - IMPGEAR_DROPDOWN_MISC_1, - IMPGEAR_DROPDOWN_MISC_2, - IMPGEAR_DROPDOWN_MISC_3, - IMPGEAR_DROPDOWN_MISC_4, - IMPGEAR_DROPDOWN_MISC_5, - IMPGEAR_DROPDOWN_MISC_6, - IMPGEAR_DROPDOWN_MISC_7, - - IMPGEAR_DROPDOWN_MAX, -}; - -// as accessing DropDowns via parameter is tedious, we use pointers, which allows looping -DropDownBase* pIMPGEARDropDown[IMPGEAR_DROPDOWN_MAX] = {NULL}; INT16 gIMPGearGun1 = -1; INT16 gIMPGearGun2 = -1; +INT16 gIMPGearGun3 = -1; // a set of all items that we can choose from std::set gIMPGearPossibleItems; - // a map with all items we have selected, and how many we want std::map gIMPGearSelectedItems; @@ -115,184 +115,99 @@ extern BOOLEAN gfSkillTraitQuestions2[20]; extern BOOLEAN gfMinorTraitQuestions[IMP_SKILL_TRAITS_NEW_NUMBER_MINOR_SKILLS]; -// +/- buttons to alter the number of items -INT32 gIMPGearAddButtonImage[2]; -INT32 gIMPGearAddButton[2 * IMPGEAR_DROPDOWN_MAX] = {-1}; -BOOLEAN gIMPGearButtonCreated[2 * IMPGEAR_DROPDOWN_MAX] = {FALSE}; - -UINT8 gIMPGearCount[IMPGEAR_DROPDOWN_MAX] = {0}; -UINT8 gIMPGearMaximum[IMPGEAR_DROPDOWN_MAX] = {0}; - // cost of IMP gear INT32 gIMPGearCost = 0; extern BOOLEAN fNewIMPGearMethodUsed; + //******************************************************************* // // Function Prototypes // //******************************************************************* - - void IMPGearDisplay( ); void BtnIMPGearFinishCallback( GUI_BUTTON *btn, INT32 reason ); - // determine all items that are selectable according to xml and choices void CalculatePossibleItems(); - // store the selected gear void StoreSelectedIMPGear(); +void InitImpGearCoords(void); +void RenderImpGearSelectionChoices(UINT32 userData); +void DisplayPagesForImpInventoryPool(void); +void DistributePossibleItemsToVectors(void); +void DrawImpGearInventoryPool(void); +void SetChoiceForPocket(INT32 pocket, INT32 index, UINT8 amount); +void IMPInvMoveCallback(MOUSE_REGION* pRegion, INT32 iReason); +void IMPInventoryPoolSelectCallback(MOUSE_REGION* pRegion, INT32 iReason); +extern void HandleCommonGlowTimer(); +extern BOOLEAN RestoreExternBackgroundRect(INT16 sLeft, INT16 sTop, INT16 sWidth, INT16 sHeight); +extern void SetClippingRegionAndImageWidth( + int iImageWidth, + int iClipStartX, + int iClipStartY, + int iClipWidth, + int iClipHeight +); +extern void RectangleDraw(BOOL fClip, int XStart, int YStart, int XEnd, int YEnd, short Color, UINT8* ScreenPtr); +void GlowImpInvPoolItem(void); +void IMPGearHandleMousePageScroll(void); +void RenderIMPGearBodytype(void); +void IMPInventoryPoolDoneBtn(GUI_BUTTON* btn, INT32 reason); +void ImpInventoryPoolNextBtn(GUI_BUTTON* btn, INT32 reason); +void ImpInventoryPoolPrevBtn(GUI_BUTTON* btn, INT32 reason); -// fill dropdowns with items -void DistributePossibleItemsOnDropDowns(); - -void GearAddButtonCallback( GUI_BUTTON *btn, INT32 reason ); - - -//******************************************************************* -// -// DropDown instances -// -//******************************************************************* - -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } -template<> void DropDownTemplate::SetRefresh( ) { gfIMPGear_Redraw = TRUE; } void EnterIMPGear( void ) { RenderProfileBackGround( ); giIMPGearFinishButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti", -1, 0, -1, 1, -1 ); - giIMPGearFinishButton = CreateIconAndTextButton( giIMPGearFinishButtonImage, pImpButtonText[11], FONT12ARIAL, - FONT_WHITE, DEFAULT_SHADOW, - FONT_WHITE, DEFAULT_SHADOW, - TEXT_CJUSTIFIED, - LAPTOP_SCREEN_UL_X + (350), LAPTOP_SCREEN_WEB_UL_Y + (340), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, - BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPGearFinishCallback ); - + giIMPGearFinishButton = CreateIconAndTextButton( + giIMPGearFinishButtonImage, pImpButtonText[11], FONT12ARIAL, + FONT_WHITE, DEFAULT_SHADOW, + FONT_WHITE, DEFAULT_SHADOW, + TEXT_CJUSTIFIED, + LAPTOP_SCREEN_UL_X + (350), LAPTOP_SCREEN_WEB_UL_Y + (340), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPGearFinishCallback + ); SetButtonCursor( giIMPGearFinishButton, CURSOR_WWW ); - // we access the dropdowns via pointers, which allows us to loop over them - // for each category, we set a maximum of items that can be stacked at once, as multiple magazines are reasonably, but multiple guns are a no-no - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE1] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LBE1] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE2] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LBE2] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE3] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LBE3] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE4] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LBE4] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE5] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LBE5] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_1] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_GUN_1] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_AMMO_1] = 6; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_2] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_GUN_2] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_AMMO_2] = 6; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MELEE] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MELEE] = 1; + // create done and next/previous page buttons for inventory pool + gIMPInvDoneButtonImage = LoadButtonImage("INTERFACE\\done_button.sti", -1, 0, -1, 1, -1); + gIMPInvDoneButton = QuickCreateButton(gIMPInvDoneButtonImage, gIMPInvPoolLayout.x + 247, gIMPInvPoolLayout.y + 187, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST, + (GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)IMPInventoryPoolDoneBtn); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_HELMET] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_HELMET] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_VEST] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_VEST] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LEGS] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_LEGS] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_FACE1] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_FACE1] = 1; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_FACE2] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_FACE2] = 1; + gIMPInvArrowButtonImage[0] = LoadButtonImage("INTERFACE\\map_screen_bottom_arrows.sti", 10, 1, -1, 3, -1); + gIMPInvArrowButton[0] = QuickCreateButton(gIMPInvArrowButtonImage[0], gIMPInvPoolLayout.x + 223, gIMPInvPoolLayout.y + 189, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST, + (GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)ImpInventoryPoolNextBtn); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_1] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_1] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_2] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_2] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_3] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_3] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_4] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_4] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_5] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_5] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_6] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_6] = 4; - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_7] = &DropDownTemplate::getInstance( ); - gIMPGearMaximum[IMPGEAR_DROPDOWN_MISC_7] = 4; - + + gIMPInvArrowButtonImage[1] = LoadButtonImage("INTERFACE\\map_screen_bottom_arrows.sti", 9, 0, -1, 2, -1); + gIMPInvArrowButton[1] = QuickCreateButton(gIMPInvArrowButtonImage[1], gIMPInvPoolLayout.x + 150, gIMPInvPoolLayout.y + 189, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST, + (GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)ImpInventoryPoolPrevBtn); + + SetButtonCursor(gIMPInvDoneButton, CURSOR_WWW); + SetButtonCursor(gIMPInvArrowButton[0], CURSOR_WWW); + SetButtonCursor(gIMPInvArrowButton[1], CURSOR_WWW); + + // Hide and disable them for now + DisableButton(gIMPInvDoneButton); + DisableButton(gIMPInvArrowButton[0]); + DisableButton(gIMPInvArrowButton[1]); + HideButton(gIMPInvDoneButton); + HideButton(gIMPInvArrowButton[0]); + HideButton(gIMPInvArrowButton[1]); + + + InitImpGearCoords(); // determine all possible items CalculatePossibleItems(); - - DistributePossibleItemsOnDropDowns(); - - UINT16 usX = LAPTOP_SCREEN_UL_X + 20 + IMP_GEAR_ITEMDISPLAY_WIDTH; - UINT16 usY = LAPTOP_SCREEN_WEB_UL_Y + 30; - - int placement = 0; - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - gIMPGearCount[i] = min( 1, gIMPGearMaximum[i]); - - if ( i == IMPGEAR_DROPDOWN_LBE1 ) - { - usX = LAPTOP_SCREEN_UL_X + 20 + IMP_GEAR_ITEMDISPLAY_WIDTH + 230; - placement = 5; - } - else if ( i == IMPGEAR_DROPDOWN_HELMET ) - { - usX = LAPTOP_SCREEN_UL_X + 20 + IMP_GEAR_ITEMDISPLAY_WIDTH + 230; - placement = 0; - } - else if ( i == IMPGEAR_DROPDOWN_MISC_1 ) - { - usX = LAPTOP_SCREEN_UL_X + 20 + IMP_GEAR_ITEMDISPLAY_WIDTH; - placement = 5; - } - else if ( i == IMPGEAR_DROPDOWN_GUN_1 ) - { - usX = LAPTOP_SCREEN_UL_X + 20 + IMP_GEAR_ITEMDISPLAY_WIDTH; - placement = 0; - } - - // if not using LBE gear, don't show any - if ( !UsingNewInventorySystem() ) - { - if ( i >= IMPGEAR_DROPDOWN_LBE1 && i < IMPGEAR_DROPDOWN_LBE5 ) - continue; - } - - pIMPGEARDropDown[i]->SetHelpText( szIMPGearDropDownText[i] ); - pIMPGEARDropDown[i]->Create( usX, usY + placement * (IMP_GEAR_ITEMDISPLAY_HEIGHT + IMP_GEAR_SPACE_BETWEEN_BOXES) ); - - ++placement; - } - - // load the images for the +/- buttons - gIMPGearAddButtonImage[0] = LoadButtonImage( "INTERFACE\\plusminusbuttons.sti", -1, 2, -1, 2, -1 ); - gIMPGearAddButtonImage[1] = LoadButtonImage( "INTERFACE\\plusminusbuttons.sti", -1, 3, -1, 3, -1 ); + DistributePossibleItemsToVectors(); } @@ -300,200 +215,299 @@ void RenderIMPGear( void ) { //render the metal background graphic RenderProfileBackGround( ); - + RenderImpGearSelection( ); + RenderIMPGearBodytype( ); IMPGearDisplay( ); - - // reversed order - lower boxes first. It is otherwise possible that open boxes are overlayed by closed boxes - for ( int i = IMPGEAR_DROPDOWN_MAX - 1; i >= 0; --i ) - { - if ( pIMPGEARDropDown[i] ) - pIMPGEARDropDown[i]->Display( ); - } - - // we have to destroy and recreate the +/- buttons on every refresh, as they would otherwise get overdrawn or work when they shouldn't be there - for ( int i = 0; i < 2 * IMPGEAR_DROPDOWN_MAX; ++i ) - { - if ( gIMPGearButtonCreated[i] ) - { - // delete militia panel bottom - RemoveButton( gIMPGearAddButton[i] ); - - gIMPGearButtonCreated[i] = FALSE; - } - } - - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - // if dropdown is displayed, has real items in it and can be bought in bulk, add '+'/'-'-buttons - if ( pIMPGEARDropDown[i] && pIMPGEARDropDown[i]->IsDisplayed( ) && pIMPGEARDropDown[i]->HasEntries( ) && pIMPGEARDropDown[i]->GetSelectedEntryKey( ) > 0 && gIMPGearMaximum[i] > 1 ) - { - // '+' button - gIMPGearAddButton[i] = QuickCreateButton( gIMPGearAddButtonImage[0], pIMPGEARDropDown[i]->GetX( ) - 6, pIMPGEARDropDown[i]->GetY(), BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)GearAddButtonCallback ); - ButtonList[gIMPGearAddButton[i]]->UserData[0] = i; - gIMPGearButtonCreated[i] = TRUE; - - // '-' button - gIMPGearAddButton[IMPGEAR_DROPDOWN_MAX + i] = QuickCreateButton( gIMPGearAddButtonImage[1], pIMPGEARDropDown[i]->GetX( ) - 6, pIMPGEARDropDown[i]->GetY( ) + IMP_GEAR_ITEMDISPLAY_HEIGHT - 6, BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)GearAddButtonCallback ); - ButtonList[gIMPGearAddButton[IMPGEAR_DROPDOWN_MAX + i]]->UserData[0] = IMPGEAR_DROPDOWN_MAX + i; - gIMPGearButtonCreated[IMPGEAR_DROPDOWN_MAX + i] = TRUE; - } - } } void ExitIMPGear( void ) { - // before we leave, we store all the gear that was selected (the dropdowns will be destroyed, so we cannot get the values from them later on) + // before we leave, we store all the gear that was selected StoreSelectedIMPGear(); - for ( int i = 0; i < 2 * IMPGEAR_DROPDOWN_MAX; ++i ) - { - if ( gIMPGearButtonCreated[i] ) - { - RemoveButton( gIMPGearAddButton[i] ); - gIMPGearButtonCreated[i] = FALSE; - } - } - - UnloadButtonImage( gIMPGearAddButtonImage[0] ); - UnloadButtonImage( gIMPGearAddButtonImage[1] ); - - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - if ( pIMPGEARDropDown[i] ) - { - pIMPGEARDropDown[i]->Destroy( ); - pIMPGEARDropDown[i] = NULL; - } - } - gIMPGearGun1 = -1; gIMPGearGun2 = -1; + gIMPGearGun3 = -1; RemoveButton( giIMPGearFinishButton ); UnloadButtonImage( giIMPGearFinishButtonImage ); + RemoveButton(gIMPInvDoneButton); + UnloadButtonImage(gIMPInvDoneButtonImage); + RemoveButton(gIMPInvArrowButton[0]); + UnloadButtonImage(gIMPInvArrowButtonImage[0]); + RemoveButton(gIMPInvArrowButton[1]); + UnloadButtonImage(gIMPInvArrowButtonImage[1]); + + for (UINT8 cnt = 0; cnt < NUM_INV_SLOTS; cnt++) + { + MSYS_RemoveRegion(&gIMPGearInvRegion[cnt]); + } + for (size_t i = 0; i < 25; i++) + { + MSYS_RemoveRegion(&gIMPGearInvPoolRegion[i]); + } } void HandleIMPGear( void ) { - if ( gfIMPGear_Redraw ) - { - RenderIMPGear( ); - gfIMPGear_Redraw = FALSE; - } - InvalidateRegion( LAPTOP_SCREEN_UL_X, LAPTOP_SCREEN_WEB_UL_Y, LAPTOP_SCREEN_LR_X, LAPTOP_SCREEN_WEB_LR_Y ); + IMPGearHandleMousePageScroll(); + HandleCommonGlowTimer(); + GlowImpInvPoolItem(); } + void IMPGearDisplay( ) { //Display the title DrawTextToScreen( szIMPGearWebSiteText[5], IMP_GEAR__TITLE_X, LAPTOP_TITLE_Y, LAPTOP_TEXT_WIDTH, FONT14ARIAL, IMP_GEAR__COLOR, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); - // depending on guns selected, we need to alter the ammochoices + // Add default ammo for guns & sidearm in case the gun was changed + if (gIMPPossibleItems[HANDPOS].size() > 1) { - if ( pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_1]->HasEntries() ) + INT16 currentWeapon = gIMPPocketSelectedItems[HANDPOS].first; + if (gIMPPossibleItems[SMALLPOCK1POS].size() <= 1 || gIMPGearGun1 != currentWeapon) { - if ( !pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->HasEntries( ) || gIMPGearGun1 != pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_1]->GetSelectedEntryKey( ) ) + gIMPGearGun1 = currentWeapon; + + std::vector > entries; + entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + + if (Item[gIMPGearGun1].usItemClass & IC_GUN) { - gIMPGearGun1 = pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_1]->GetSelectedEntryKey( ); - - std::vector > entries; - entries.push_back( std::make_pair( 0, szIMPGearDropDownNoneText[IMPGEAR_DROPDOWN_AMMO_1] ) ); - - if ( Item[gIMPGearGun1].usItemClass & IC_GUN ) + WEAPONTYPE* pWeapon = &(Weapon[gIMPGearGun1]); + UINT16 usLoop = 0; + while (Magazine[usLoop].ubCalibre != NOAMMO) { - WEAPONTYPE* pWeapon = &(Weapon[gIMPGearGun1]); - UINT16 usLoop = 0; - while ( Magazine[usLoop].ubCalibre != NOAMMO ) + if (Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && Magazine[usLoop].ubMagSize == pWeapon->ubMagSize) { - if ( Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && Magazine[usLoop].ubMagSize == pWeapon->ubMagSize )//&& AmmoTypes[Magazine[usLoop].ubAmmoType].standardIssue ) - { - UINT16 mag = MagazineClassIndexToItemType( usLoop ); + UINT16 mag = MagazineClassIndexToItemType(usLoop); - entries.push_back( std::make_pair( mag, Item[mag].szItemName ) ); - } - - ++usLoop; + entries.push_back(std::make_pair(mag, Item[mag].szItemName)); } + ++usLoop; } - - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->SetEntries( entries ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->Create( pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->GetX(), pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->GetY() ); + } + + for (size_t i = SMALLPOCK1POS; i < SMALLPOCK6POS; i++) + { + gIMPPossibleItems[i] = entries; + } + + // Add default magazine for pockets, set to empty if no gun + for (size_t i = SMALLPOCK1POS; i < SMALLPOCK6POS; i++) + { + if (currentWeapon != 0) + { + SetChoiceForPocket(i, 1, 1); + } + else + { + SetChoiceForPocket(i, 0, 1); + } + } + + if (!UsingNewInventorySystem()) //Only 4 magazine slots for old inventory + { + SetChoiceForPocket(SMALLPOCK5POS, 0, 0); } } } + if (gIMPPossibleItems[SECONDHANDPOS].size() > 1) { - if ( pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_2]->HasEntries() ) + INT16 currentWeapon = gIMPPocketSelectedItems[SECONDHANDPOS].first; + if (gIMPPossibleItems[SMALLPOCK11POS].size() <= 1 || gIMPGearGun2 != currentWeapon) { - if ( !pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->HasEntries( ) || gIMPGearGun2 != pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_2]->GetSelectedEntryKey( ) ) + gIMPGearGun2 = currentWeapon; + + + std::vector > entries; + entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + + + if (Item[gIMPGearGun2].usItemClass & IC_GUN) { - gIMPGearGun2 = pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_2]->GetSelectedEntryKey(); - - std::vector > entries; - entries.push_back( std::make_pair( 0, szIMPGearDropDownNoneText[IMPGEAR_DROPDOWN_AMMO_2] ) ); - - if ( Item[gIMPGearGun2].usItemClass & IC_GUN ) + WEAPONTYPE* pWeapon = &(Weapon[gIMPGearGun2]); + UINT16 usLoop = 0; + while (Magazine[usLoop].ubCalibre != NOAMMO) { - WEAPONTYPE* pWeapon = &(Weapon[gIMPGearGun2]); - UINT16 usLoop = 0; - while ( Magazine[usLoop].ubCalibre != NOAMMO ) + if (Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && Magazine[usLoop].ubMagSize == pWeapon->ubMagSize) { - if ( Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && Magazine[usLoop].ubMagSize == pWeapon->ubMagSize )//&& AmmoTypes[Magazine[usLoop].ubAmmoType].standardIssue ) - { - UINT16 mag = MagazineClassIndexToItemType( usLoop ); + UINT16 mag = MagazineClassIndexToItemType(usLoop); - entries.push_back( std::make_pair( mag, Item[mag].szItemName ) ); - } - - ++usLoop; + entries.push_back(std::make_pair(mag, Item[mag].szItemName)); } + ++usLoop; } - else if ( Item[gIMPGearGun2].usItemClass & IC_LAUNCHER ) + } + + for (size_t i = SMALLPOCK11POS; i < SMALLPOCK19POS; i++) + { + gIMPPossibleItems[i] = entries; + } + + + // Add default magazine for first 4 pockets + if (currentWeapon != 0) + { + for (size_t i = SMALLPOCK11POS; i < SMALLPOCK15POS; i++) { - std::set::iterator itend = gIMPGearPossibleItems.end( ); - for ( std::set::iterator it = gIMPGearPossibleItems.begin( ); it != itend; ++it ) - { - UINT16 usItem = (*it); - - if ( ValidLaunchable( usItem, gIMPGearGun2 ) ) - entries.push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } + SetChoiceForPocket(i, 1, 1); + } + } + else + { + for (size_t i = SMALLPOCK11POS; i < SMALLPOCK19POS; i++) + { + SetChoiceForPocket(i, 0, 1); } - - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->SetEntries( entries ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->Create( pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->GetX( ), pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_2]->GetY( ) ); } } } + if (gIMPPossibleItems[GUNSLINGPOCKPOS].size() > 1) + { + INT16 currentWeapon = gIMPPocketSelectedItems[GUNSLINGPOCKPOS].first; + if (gIMPPossibleItems[SMALLPOCK6POS].size() <= 1 || gIMPGearGun3 != currentWeapon) + { + gIMPGearGun3 = currentWeapon; + + std::vector > entries; + entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + + if (Item[gIMPGearGun3].usItemClass & IC_GUN) + { + WEAPONTYPE* pWeapon = &(Weapon[gIMPGearGun3]); + UINT16 usLoop = 0; + while (Magazine[usLoop].ubCalibre != NOAMMO) + { + if (Magazine[usLoop].ubCalibre == pWeapon->ubCalibre && Magazine[usLoop].ubMagSize == pWeapon->ubMagSize) + { + UINT16 mag = MagazineClassIndexToItemType(usLoop); + + entries.push_back(std::make_pair(mag, Item[mag].szItemName)); + } + ++usLoop; + } + } + else if ( Item[gIMPGearGun3].usItemClass & IC_LAUNCHER ) + { + std::set::iterator itend = gIMPGearPossibleItems.end( ); + for ( std::set::iterator it = gIMPGearPossibleItems.begin( ); it != itend; ++it ) + { + UINT16 usItem = (*it); + + if ( ValidLaunchable( usItem, gIMPGearGun3 ) ) + entries.push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); + } + } + + + for (size_t i = SMALLPOCK6POS; i < SMALLPOCK11POS; i++) + { + gIMPPossibleItems[i] = entries; + } + + // Add default magazine for pockets + for (size_t i = SMALLPOCK6POS; i < SMALLPOCK11POS; i++) + { + if (currentWeapon != 0) + { + SetChoiceForPocket(i, 1, 1); + } + else + { + SetChoiceForPocket(i, 0, 1); + } + } + + if (!UsingNewInventorySystem()) //Only 4 magazine slots for old inventory + { + SetChoiceForPocket(SMALLPOCK10POS, 0, 0); + } + } + } + + + gIMPGearCost = 0; - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - if ( pIMPGEARDropDown[i] && pIMPGEARDropDown[i]->IsDisplayed( ) && pIMPGEARDropDown[i]->HasEntries( ) ) + // Draw selected gear and silhouettes for empty pockets + for (const auto& kv : gIMPPocketSelectedItems) { + UINT16 x = 0; + UINT16 y = 0; + + auto pocket = kv.first; + INT16 sItem = kv.second.first; + UINT8 amount = kv.second.second; + + // Offset so item graphics are more in the center of the slots. Going by the item region coordinates misplaces small pocket items for some reason + UINT16 xOffset = -7; + if (pocket == HEAD1POS || pocket == HEAD2POS || pocket == KNIFEPOCKPOS || ( MEDPOCK4POS < pocket && pocket < NUM_INV_SLOTS)) { - // if something is shown, it has to appear at least once... - gIMPGearCount[i] = max( 1, gIMPGearCount[i] ); + xOffset = -14; + } - INT16 sItem = (UINT16)pIMPGEARDropDown[i]->GetSelectedEntryKey( ); + + x = gIMPGearInvData[pocket].sX + xOffset; + y = gIMPGearInvData[pocket].sY; - DisplayGear( (UINT16)sItem, pIMPGEARDropDown[i]->GetX( ) - IMP_GEAR_ITEMDISPLAY_WIDTH, pIMPGEARDropDown[i]->GetY( ), TRUE, gIMPGearCount[i], TRUE ); - - if ( sItem > 0 ) + if (sItem > 0) + { + DisplayGear((UINT16)sItem, x, y, FALSE, amount, FALSE); + gIMPGearCost += amount * Item[sItem].usPrice; + } + else // Render silhouette if no item + { + INT16 silhouetteIndex = 12; + switch (pocket) { - gIMPGearCost += gIMPGearCount[i] * Item[sItem].usPrice; + case HANDPOS: silhouetteIndex = 5; break; + case SECONDHANDPOS: silhouetteIndex = 13; break; // Sidearm + case VESTPOCKPOS: silhouetteIndex = 0; break; + case LTHIGHPOCKPOS: silhouetteIndex = 1; break; + case RTHIGHPOCKPOS: silhouetteIndex = 2; break; + case CPACKPOCKPOS: silhouetteIndex = 3; break; + case BPACKPOCKPOS: silhouetteIndex = 4; break; + case GUNSLINGPOCKPOS: silhouetteIndex = 6; break; // Launcher / 2-handed weapon + case KNIFEPOCKPOS: silhouetteIndex = 11; break; + case MEDPOCK1POS: + case MEDPOCK2POS: + case MEDPOCK3POS: + case MEDPOCK4POS: silhouetteIndex = 24; break; // Medkit/Toolkit + case SMALLPOCK1POS: + case SMALLPOCK2POS: + case SMALLPOCK3POS: + case SMALLPOCK4POS: + case SMALLPOCK5POS: + case SMALLPOCK6POS: + case SMALLPOCK7POS: + case SMALLPOCK8POS: + case SMALLPOCK9POS: + case SMALLPOCK10POS: silhouetteIndex = 18; break; // Main gun ammo + case SMALLPOCK11POS: + case SMALLPOCK12POS: + case SMALLPOCK13POS: + case SMALLPOCK14POS: + case SMALLPOCK15POS: + case SMALLPOCK16POS: + case SMALLPOCK17POS: + case SMALLPOCK18POS: silhouetteIndex = 16; break; // Sidearm ammo + + default: + break; + } + + if (pocket > HEAD2POS) + { + INVRenderSilhouette(FRAME_BUFFER, ITEM_NOT_FOUND, silhouetteIndex, x - xOffset, y, gIMPGearInvData[pocket].sWidth, gIMPGearInvData[pocket].sHeight); } } - else - { - gIMPGearCount[i] = 0; - } } - + + // Display extra cost if ( gIMPGearCost > gGameExternalOptions.iIMPProfileCost ) { CHAR16 wTemp[50]; @@ -502,6 +516,7 @@ void IMPGearDisplay( ) } } + void DisplayGear( UINT16 usItem, UINT16 usPosX, UINT16 usPosY, BOOLEAN fWithBackGround, UINT8 aNumber, BOOLEAN fDisplayNumber ) { if ( usItem ) @@ -553,6 +568,7 @@ void DisplayGear( UINT16 usItem, UINT16 usPosX, UINT16 usPosY, BOOLEAN fWithBack } } + void BtnIMPGearFinishCallback( GUI_BUTTON *btn, INT32 reason ) { // btn callback for IMP personality quiz answer button @@ -568,6 +584,7 @@ void BtnIMPGearFinishCallback( GUI_BUTTON *btn, INT32 reason ) } } + INT32 GetIMPGearCost( ) { if ( IsIMPGearUsed( ) ) @@ -576,6 +593,7 @@ INT32 GetIMPGearCost( ) return 0; } + void AddItemCategoryToPossibleGear(UINT8 aCategory) { for ( int j = 0; j < 50; ++j ) @@ -588,6 +606,7 @@ void AddItemCategoryToPossibleGear(UINT8 aCategory) } } + void CalculatePossibleItems() { gIMPGearPossibleItems.clear( ); @@ -732,156 +751,19 @@ void StoreSelectedIMPGear() { gIMPGearSelectedItems.clear(); - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) + for (const auto& kv : gIMPPocketSelectedItems) { - if ( pIMPGEARDropDown[i] && pIMPGEARDropDown[i]->IsDisplayed( ) && pIMPGEARDropDown[i]->HasEntries( ) ) + auto pocket = kv.first; + INT16 sItem = kv.second.first; + UINT8 amount = kv.second.second; + if (sItem) { - UINT16 usItem = (UINT16)pIMPGEARDropDown[i]->GetSelectedEntryKey( ); - - if ( usItem ) - { - // add item (make sure it is at least 1) - gIMPGearSelectedItems[usItem] = max( 1, gIMPGearSelectedItems[usItem] + gIMPGearCount[i] ); - } + // add item (make sure it is at least 1) + gIMPGearSelectedItems[sItem] = max( 1, gIMPGearSelectedItems[sItem] + amount ); } } } -void DistributePossibleItemsOnDropDowns() -{ - // these vectors contain the items to be shown in the dropdowns - std::map< UINT16, std::vector > > entryvec; - - // it is always possible to not select something - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - entryvec[i].push_back( std::make_pair( 0, szIMPGearDropDownNoneText[i] ) ); - } - - std::set::iterator itend = gIMPGearPossibleItems.end( ); - for ( std::set::iterator it = gIMPGearPossibleItems.begin(); it != itend; ++it ) - { - UINT16 usItem = (*it); - - if ( Item[usItem].usItemClass & IC_GUN ) - { - entryvec[IMPGEAR_DROPDOWN_GUN_1].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - - if ( !Item[usItem].twohanded ) - entryvec[IMPGEAR_DROPDOWN_GUN_2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - else if ( Item[usItem].usItemClass & IC_LAUNCHER ) - { - entryvec[IMPGEAR_DROPDOWN_GUN_2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - else if ( Item[usItem].usItemClass & (IC_BLADE | IC_THROWING_KNIFE | IC_PUNCH) ) - { - entryvec[IMPGEAR_DROPDOWN_MELEE].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - else if ( Item[usItem].usItemClass & IC_ARMOUR ) - { - if ( Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_HELMET ) - entryvec[IMPGEAR_DROPDOWN_HELMET].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - else if ( Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_VEST ) - entryvec[IMPGEAR_DROPDOWN_VEST].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - else if ( Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_LEGGINGS ) - entryvec[IMPGEAR_DROPDOWN_LEGS].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - else if ( Item[usItem].usItemClass & IC_LBEGEAR ) - { - switch ( LoadBearingEquipment[Item[usItem].ubClassIndex].lbeClass ) - { - case THIGH_PACK: - entryvec[IMPGEAR_DROPDOWN_LBE4].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_LBE5].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - break; - case VEST_PACK: - entryvec[IMPGEAR_DROPDOWN_LBE1].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - break; - case COMBAT_PACK: - entryvec[IMPGEAR_DROPDOWN_LBE2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - break; - case BACKPACK: - entryvec[IMPGEAR_DROPDOWN_LBE3].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - break; - default: - entryvec[IMPGEAR_DROPDOWN_LBE4].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_LBE5].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - break; - } - } - else if ( Item[usItem].usItemClass & IC_FACE ) - { - entryvec[IMPGEAR_DROPDOWN_FACE1].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_FACE2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - else if ( Item[usItem].usItemClass & ( IC_GRENADE | IC_BOMB ) ) - { - // ignore item if it is a launchable - we already list it under ammo if a launcher is selected - BOOLEAN found = FALSE; - UINT16 iLoop = 0; - while ( Launchable[iLoop][0] != 0 ) - { - if ( Launchable[iLoop][0] == usItem ) - { - found = TRUE; - break; - } - - ++iLoop; - } - - if ( !found ) - { - entryvec[IMPGEAR_DROPDOWN_MISC_1].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_3].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_4].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_5].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_6].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_7].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - } - else - { - entryvec[IMPGEAR_DROPDOWN_MISC_1].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_2].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_3].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_4].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_5].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_6].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - entryvec[IMPGEAR_DROPDOWN_MISC_7].push_back( std::make_pair( usItem, Item[usItem].szItemName ) ); - } - } - - // check for oddities... - SGP_THROW_IFFALSE( pIMPGEARDropDown[0] != NULL, L"Bad pointer in DistributePossibleItemsOnDropDowns. How did you do that?" ); - - for ( int i = 0; i < IMPGEAR_DROPDOWN_MAX; ++i ) - { - pIMPGEARDropDown[i]->SetEntries( entryvec[i] ); - } - - // per default, each dropdown selects 'no item'. Here we set some defaults - pIMPGEARDropDown[IMPGEAR_DROPDOWN_GUN_1]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_AMMO_1]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MELEE]->SetNthEntry( 1 ); - - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE1]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE2]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LBE3]->SetNthEntry( 1 ); - - pIMPGEARDropDown[IMPGEAR_DROPDOWN_HELMET]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_VEST]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_LEGS]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_FACE1]->SetNthEntry( 1 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_FACE2]->SetNthEntry( 2 ); - - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_1]->SetNthEntry( 4 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_2]->SetNthEntry( 3 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_3]->SetNthEntry( 2 ); - pIMPGEARDropDown[IMPGEAR_DROPDOWN_MISC_4]->SetNthEntry( 1 ); -} void GiveIMPSelectedGear( MERCPROFILESTRUCT *pProfile ) { @@ -892,35 +774,711 @@ void GiveIMPSelectedGear( MERCPROFILESTRUCT *pProfile ) } } -void GearAddButtonCallback( GUI_BUTTON *btn, INT32 reason ) + + +void ImpInvNextPage(void) { - if ( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + // if can go to next page, go there + if (gIMPCurrentInventoryPoolPage < gIMPLastInventoryPoolPage) + { + gIMPCurrentInventoryPoolPage++; + fShowIMPItemHighLight = FALSE; + DrawImpGearInventoryPool(); + } +} + +void ImpInvPreviousPage(void) +{ + // if can go to next page, go there + if (gIMPCurrentInventoryPoolPage > 0) + { + gIMPCurrentInventoryPoolPage--; + fShowIMPItemHighLight = FALSE; + DrawImpGearInventoryPool(); + } +} + +void ImpInventoryPoolNextBtn(GUI_BUTTON* btn, INT32 reason) +{ + if (reason & MSYS_CALLBACK_REASON_LBUTTON_DWN) { btn->uiFlags |= (BUTTON_CLICKED_ON); } - else if ( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + else if (reason & MSYS_CALLBACK_REASON_LBUTTON_UP) { - if ( btn->uiFlags & BUTTON_CLICKED_ON ) + if (btn->uiFlags & BUTTON_CLICKED_ON) { btn->uiFlags &= ~(BUTTON_CLICKED_ON); - - INT32 id = btn->UserData[0]; - - if ( id >= 0 ) - { - if ( id < IMPGEAR_DROPDOWN_MAX ) - { - // increase - gIMPGearCount[id] = min( gIMPGearCount[id] + 1, gIMPGearMaximum[id] ); - } - else if ( id < 2 * IMPGEAR_DROPDOWN_MAX ) - { - // decrease - gIMPGearCount[id - IMPGEAR_DROPDOWN_MAX] = max( gIMPGearCount[id - IMPGEAR_DROPDOWN_MAX] - 1, 1 ); - } - } - - RenderIMPGear( ); + ImpInvNextPage(); } } } + +void ImpInventoryPoolPrevBtn(GUI_BUTTON* btn, INT32 reason) +{ + if (reason & MSYS_CALLBACK_REASON_LBUTTON_DWN) + { + btn->uiFlags |= (BUTTON_CLICKED_ON); + } + else if (reason & MSYS_CALLBACK_REASON_LBUTTON_UP) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags &= ~(BUTTON_CLICKED_ON); + ImpInvPreviousPage(); + } + } +} + + +void IMPGearHandleMousePageScroll(void) +{ + SGPPoint MousePos; + GetMousePos(&MousePos); + const auto x = MousePos.iX; + const auto y = MousePos.iY; + const auto xmin = gIMPInvPoolLayout.x; const auto ymin = gIMPInvPoolLayout.y; + const auto xmax = gIMPInvPoolLayout.x + gIMPInvPoolLayout.width; const auto ymax = gIMPInvPoolLayout.y + gIMPInvPoolLayout.height; + + if ((xmin < x && x < xmax) && (ymin < y && y < ymax)) + { + const auto Wheelstate = _WheelValue * (gGameSettings.fOptions[TOPTION_INVERT_WHEEL] ? -1 : 1); + if (Wheelstate < 0) + { + ImpInvNextPage(); + } + else if (Wheelstate > 0) + { + ImpInvPreviousPage(); + } + _WheelValue = 0; + } +} + + +void IMPCloseInventoryPool(void) +{ + fShowIMPItemHighLight = FALSE; + + for (UINT8 cnt = 0; cnt < NUM_INV_SLOTS; cnt++) + { + MSYS_EnableRegion(&gIMPGearInvRegion[cnt]); + } + for (size_t i = 0; i < 25; i++) + { + MSYS_DisableRegion(&gIMPGearInvPoolRegion[i]); + } + + DisableButton(gIMPInvDoneButton); + DisableButton(gIMPInvArrowButton[0]); + DisableButton(gIMPInvArrowButton[1]); + HideButton(gIMPInvDoneButton); + HideButton(gIMPInvArrowButton[0]); + HideButton(gIMPInvArrowButton[1]); + + RenderIMPGear(); +} + + +void IMPInventoryPoolDoneBtn(GUI_BUTTON* btn, INT32 reason) +{ + if (reason & MSYS_CALLBACK_REASON_LBUTTON_DWN) + { + btn->uiFlags |= (BUTTON_CLICKED_ON); + } + else if (reason & MSYS_CALLBACK_REASON_LBUTTON_UP) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags &= ~(BUTTON_CLICKED_ON); + } + IMPCloseInventoryPool(); + } +} + + +void IMPInventoryPoolSelectCallback(MOUSE_REGION* pRegion, INT32 iReason) +{ + if (iReason & MSYS_CALLBACK_REASON_LBUTTON_DWN || iReason & MSYS_CALLBACK_REASON_RBUTTON_DWN) + { + PlayButtonSound(giIMPGearFinishButton, BUTTON_SOUND_CLICKED_ON); + } + if (iReason & MSYS_CALLBACK_REASON_LBUTTON_UP) + { + PlayButtonSound(giIMPGearFinishButton, BUTTON_SOUND_CLICKED_OFF); + INT32 slot = MSYS_GetRegionUserData(pRegion, 0); + + INT32 itemIndex = slot + gIMPCurrentInventoryPoolPage * 25; + if (itemIndex < gIMPPossibleItems[gCurrentImpGearChoices].size()) + { + SetChoiceForPocket(gCurrentImpGearChoices, itemIndex, 1); + + // Redraw and enable glow + DrawImpGearInventoryPool(); + } + } + if (iReason & MSYS_CALLBACK_REASON_RBUTTON_UP) + { + IMPCloseInventoryPool(); + } +} + + +void IMPInvMoveCallback(MOUSE_REGION* pRegion, INT32 iReason) +{ + // Empty on purpose +} + + +void IMPInvClickCallback(MOUSE_REGION* pRegion, INT32 iReason) +{ + if (iReason & MSYS_CALLBACK_REASON_LBUTTON_DWN) + { + PlayButtonSound(giIMPGearFinishButton, BUTTON_SOUND_CLICKED_ON); + } + if (iReason & MSYS_CALLBACK_REASON_LBUTTON_UP) + { + PlayButtonSound(giIMPGearFinishButton, BUTTON_SOUND_CLICKED_OFF); + + // Set current gear and pages + gCurrentImpGearChoices = MSYS_GetRegionUserData(pRegion, 0); + gIMPCurrentInventoryPoolPage = 0; + gIMPLastInventoryPoolPage = gIMPPossibleItems[gCurrentImpGearChoices].size() / 25; + + // Disable inv pocket mouse regions so we don't accidentally click them + for (UINT8 cnt = 0; cnt < NUM_INV_SLOTS; cnt++) + { + MSYS_DisableRegion(&gIMPGearInvRegion[cnt]); + } + + for (size_t i = 0; i < 25; i++) + { + MSYS_EnableRegion(&gIMPGearInvPoolRegion[i]); + } + + EnableButton(gIMPInvDoneButton); + EnableButton(gIMPInvArrowButton[0]); + EnableButton(gIMPInvArrowButton[1]); + + DrawImpGearInventoryPool(); + fShowIMPItemHighLight = TRUE; + } +} + +void InitImpGearCoords(void) +{ + const auto x = gIMPGearLayout.x; + const auto y = gIMPGearLayout.y; + + if (UsingNewInventorySystem()) + { + const auto vestRow1y = 40; + const auto vestRow2y = 64; + + gIMPGearInvData[HELMETPOS].sX = x + 125; gIMPGearInvData[HELMETPOS].sY = y + 8; gIMPGearInvData[HELMETPOS].sWidth = HEAD_INV_SLOT_WIDTH; gIMPGearInvData[HELMETPOS].sHeight = HEAD_INV_SLOT_HEIGHT; // HELMETPOS + gIMPGearInvData[VESTPOS].sX = x + 125; gIMPGearInvData[VESTPOS].sY = y + 36; gIMPGearInvData[VESTPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[VESTPOS].sHeight = VEST_INV_SLOT_HEIGHT; // VESTPOS + gIMPGearInvData[LEGPOS].sX = x + 125; gIMPGearInvData[LEGPOS].sY = y + 96; gIMPGearInvData[LEGPOS].sWidth = LEGS_INV_SLOT_WIDTH; gIMPGearInvData[LEGPOS].sHeight = LEGS_INV_SLOT_HEIGHT; // LEGPOS + gIMPGearInvData[HEAD1POS].sX = x + 12; gIMPGearInvData[HEAD1POS].sY = y + 8; gIMPGearInvData[HEAD1POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[HEAD1POS].sHeight = SM_INV_SLOT_HEIGHT; // HEAD1POS + gIMPGearInvData[HEAD2POS].sX = x + 12; gIMPGearInvData[HEAD2POS].sY = y + 31; gIMPGearInvData[HEAD2POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[HEAD2POS].sHeight = SM_INV_SLOT_HEIGHT; // HEAD2POS + gIMPGearInvData[HANDPOS].sX = x + 14; gIMPGearInvData[HANDPOS].sY = y + 86; gIMPGearInvData[HANDPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[HANDPOS].sHeight = BIG_INV_SLOT_HEIGHT; // HANDPOS + gIMPGearInvData[SECONDHANDPOS].sX = x + 14; gIMPGearInvData[SECONDHANDPOS].sY = y + 110; gIMPGearInvData[SECONDHANDPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[SECONDHANDPOS].sHeight = BIG_INV_SLOT_HEIGHT; // SECONDHANDPOS + gIMPGearInvData[VESTPOCKPOS].sX = x + 207; gIMPGearInvData[VESTPOCKPOS].sY = y + 8; gIMPGearInvData[VESTPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[VESTPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // VESTPOCK + gIMPGearInvData[LTHIGHPOCKPOS].sX = x + 32; gIMPGearInvData[LTHIGHPOCKPOS].sY = y + 144; gIMPGearInvData[LTHIGHPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[LTHIGHPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // LTHIGHPOCK + gIMPGearInvData[RTHIGHPOCKPOS].sX = x + 115; gIMPGearInvData[RTHIGHPOCKPOS].sY = y + 144; gIMPGearInvData[RTHIGHPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[RTHIGHPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // RTHIGHPOCK + gIMPGearInvData[CPACKPOCKPOS].sX = x + 206; gIMPGearInvData[CPACKPOCKPOS].sY = y + 96; gIMPGearInvData[CPACKPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[CPACKPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // CPACKPOCK + gIMPGearInvData[BPACKPOCKPOS].sX = x + 277; gIMPGearInvData[BPACKPOCKPOS].sY = y + 96; gIMPGearInvData[BPACKPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[BPACKPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // BPACKPOCK + gIMPGearInvData[GUNSLINGPOCKPOS].sX = x + 281; gIMPGearInvData[GUNSLINGPOCKPOS].sY = y + 8; gIMPGearInvData[GUNSLINGPOCKPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[GUNSLINGPOCKPOS].sHeight = BIG_INV_SLOT_HEIGHT; // GUNSLINGPOCKPOS + gIMPGearInvData[KNIFEPOCKPOS].sX = x + 371; gIMPGearInvData[KNIFEPOCKPOS].sY = y + 8; gIMPGearInvData[KNIFEPOCKPOS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[KNIFEPOCKPOS].sHeight = SM_INV_SLOT_HEIGHT; // KNIFEPOCKPOS + gIMPGearInvData[BIGPOCK1POS].sX = x + 198; gIMPGearInvData[BIGPOCK1POS].sY = y + 176; gIMPGearInvData[BIGPOCK1POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK1POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK1 + gIMPGearInvData[BIGPOCK2POS].sX = x + 198; gIMPGearInvData[BIGPOCK2POS].sY = y + 200; gIMPGearInvData[BIGPOCK2POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK2POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK2 + gIMPGearInvData[BIGPOCK3POS].sX = x + 198; gIMPGearInvData[BIGPOCK3POS].sY = y + 224; gIMPGearInvData[BIGPOCK3POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK3POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK3 + gIMPGearInvData[BIGPOCK4POS].sX = x + 344; gIMPGearInvData[BIGPOCK4POS].sY = y + 128; gIMPGearInvData[BIGPOCK4POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK4POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK4 + gIMPGearInvData[BIGPOCK5POS].sX = x + 344; gIMPGearInvData[BIGPOCK5POS].sY = y + 152; gIMPGearInvData[BIGPOCK5POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK5POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK5 + gIMPGearInvData[BIGPOCK6POS].sX = x + 344; gIMPGearInvData[BIGPOCK6POS].sY = y + 176; gIMPGearInvData[BIGPOCK6POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK6POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK6 + gIMPGearInvData[BIGPOCK7POS].sX = x + 344; gIMPGearInvData[BIGPOCK7POS].sY = y + 200; gIMPGearInvData[BIGPOCK7POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK7POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK7 + gIMPGearInvData[MEDPOCK1POS].sX = x + 190; gIMPGearInvData[MEDPOCK1POS].sY = y + vestRow1y; gIMPGearInvData[MEDPOCK1POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK1POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK1 + gIMPGearInvData[MEDPOCK2POS].sX = x + 190; gIMPGearInvData[MEDPOCK2POS].sY = y + vestRow2y; gIMPGearInvData[MEDPOCK2POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK2POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK2 + gIMPGearInvData[MEDPOCK3POS].sX = x + 32; gIMPGearInvData[MEDPOCK3POS].sY = y + 224; gIMPGearInvData[MEDPOCK3POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK3POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK3 + gIMPGearInvData[MEDPOCK4POS].sX = x + 115; gIMPGearInvData[MEDPOCK4POS].sY = y + 224; gIMPGearInvData[MEDPOCK4POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK4POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK4 + gIMPGearInvData[SMALLPOCK1POS].sX = x + 241; gIMPGearInvData[SMALLPOCK1POS].sY = y + vestRow1y; gIMPGearInvData[SMALLPOCK1POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK1POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK1 + gIMPGearInvData[SMALLPOCK2POS].sX = x + 277; gIMPGearInvData[SMALLPOCK2POS].sY = y + vestRow1y; gIMPGearInvData[SMALLPOCK2POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK2POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK2 + gIMPGearInvData[SMALLPOCK3POS].sX = x + 313; gIMPGearInvData[SMALLPOCK3POS].sY = y + vestRow1y; gIMPGearInvData[SMALLPOCK3POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK3POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK3 + gIMPGearInvData[SMALLPOCK4POS].sX = x + 349; gIMPGearInvData[SMALLPOCK4POS].sY = y + vestRow1y; gIMPGearInvData[SMALLPOCK4POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK4POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK4 + gIMPGearInvData[SMALLPOCK5POS].sX = x + 385; gIMPGearInvData[SMALLPOCK5POS].sY = y + vestRow1y; gIMPGearInvData[SMALLPOCK5POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK5POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK5 + gIMPGearInvData[SMALLPOCK6POS].sX = x + 241; gIMPGearInvData[SMALLPOCK6POS].sY = y + vestRow2y; gIMPGearInvData[SMALLPOCK6POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK6POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK6 + gIMPGearInvData[SMALLPOCK7POS].sX = x + 277; gIMPGearInvData[SMALLPOCK7POS].sY = y + vestRow2y; gIMPGearInvData[SMALLPOCK7POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK7POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK7 + gIMPGearInvData[SMALLPOCK8POS].sX = x + 313; gIMPGearInvData[SMALLPOCK8POS].sY = y + vestRow2y; gIMPGearInvData[SMALLPOCK8POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK8POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK8 + gIMPGearInvData[SMALLPOCK9POS].sX = x + 349; gIMPGearInvData[SMALLPOCK9POS].sY = y + vestRow2y; gIMPGearInvData[SMALLPOCK9POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK9POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK9 + gIMPGearInvData[SMALLPOCK10POS].sX = x + 385; gIMPGearInvData[SMALLPOCK10POS].sY = y + vestRow2y; gIMPGearInvData[SMALLPOCK10POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK10POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK10 + gIMPGearInvData[SMALLPOCK11POS].sX = x + 21; gIMPGearInvData[SMALLPOCK11POS].sY = y + 176; gIMPGearInvData[SMALLPOCK11POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK11POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK11 + gIMPGearInvData[SMALLPOCK12POS].sX = x + 57; gIMPGearInvData[SMALLPOCK12POS].sY = y + 176; gIMPGearInvData[SMALLPOCK12POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK12POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK12 + gIMPGearInvData[SMALLPOCK13POS].sX = x + 21; gIMPGearInvData[SMALLPOCK13POS].sY = y + 200; gIMPGearInvData[SMALLPOCK13POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK13POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK13 + gIMPGearInvData[SMALLPOCK14POS].sX = x + 57; gIMPGearInvData[SMALLPOCK14POS].sY = y + 200; gIMPGearInvData[SMALLPOCK14POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK14POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK14 + gIMPGearInvData[SMALLPOCK15POS].sX = x + 103; gIMPGearInvData[SMALLPOCK15POS].sY = y + 176; gIMPGearInvData[SMALLPOCK15POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK15POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK15 + gIMPGearInvData[SMALLPOCK16POS].sX = x + 139; gIMPGearInvData[SMALLPOCK16POS].sY = y + 176; gIMPGearInvData[SMALLPOCK16POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK16POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK16 + gIMPGearInvData[SMALLPOCK17POS].sX = x + 103; gIMPGearInvData[SMALLPOCK17POS].sY = y + 200; gIMPGearInvData[SMALLPOCK17POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK17POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK17 + gIMPGearInvData[SMALLPOCK18POS].sX = x + 139; gIMPGearInvData[SMALLPOCK18POS].sY = y + 200; gIMPGearInvData[SMALLPOCK18POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK18POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK18 + gIMPGearInvData[SMALLPOCK19POS].sX = x + 195; gIMPGearInvData[SMALLPOCK19POS].sY = y + 128; gIMPGearInvData[SMALLPOCK19POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK19POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK19 + gIMPGearInvData[SMALLPOCK20POS].sX = x + 231; gIMPGearInvData[SMALLPOCK20POS].sY = y + 128; gIMPGearInvData[SMALLPOCK20POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK20POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK20 + gIMPGearInvData[SMALLPOCK21POS].sX = x + 195; gIMPGearInvData[SMALLPOCK21POS].sY = y + 152; gIMPGearInvData[SMALLPOCK21POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK21POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK21 + gIMPGearInvData[SMALLPOCK22POS].sX = x + 231; gIMPGearInvData[SMALLPOCK22POS].sY = y + 152; gIMPGearInvData[SMALLPOCK22POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK22POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK22 + gIMPGearInvData[SMALLPOCK23POS].sX = x + 272; gIMPGearInvData[SMALLPOCK23POS].sY = y + 128; gIMPGearInvData[SMALLPOCK23POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK23POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK23 + gIMPGearInvData[SMALLPOCK24POS].sX = x + 272; gIMPGearInvData[SMALLPOCK24POS].sY = y + 152; gIMPGearInvData[SMALLPOCK24POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK24POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK24 + gIMPGearInvData[SMALLPOCK25POS].sX = x + 272; gIMPGearInvData[SMALLPOCK25POS].sY = y + 176; gIMPGearInvData[SMALLPOCK25POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK25POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK25 + gIMPGearInvData[SMALLPOCK26POS].sX = x + 272; gIMPGearInvData[SMALLPOCK26POS].sY = y + 200; gIMPGearInvData[SMALLPOCK26POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK26POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK26 + gIMPGearInvData[SMALLPOCK27POS].sX = x + 308; gIMPGearInvData[SMALLPOCK27POS].sY = y + 128; gIMPGearInvData[SMALLPOCK27POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK27POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK27 + gIMPGearInvData[SMALLPOCK28POS].sX = x + 308; gIMPGearInvData[SMALLPOCK28POS].sY = y + 152; gIMPGearInvData[SMALLPOCK28POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK28POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK28 + gIMPGearInvData[SMALLPOCK29POS].sX = x + 308; gIMPGearInvData[SMALLPOCK29POS].sY = y + 176; gIMPGearInvData[SMALLPOCK29POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK29POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK29 + gIMPGearInvData[SMALLPOCK30POS].sX = x + 308; gIMPGearInvData[SMALLPOCK30POS].sY = y + 200; gIMPGearInvData[SMALLPOCK30POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK30POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK30 + } + else + { + gIMPGearInvData[HELMETPOS].sX = x + 205; gIMPGearInvData[HELMETPOS].sY = y + 10; gIMPGearInvData[HELMETPOS].sWidth = HEAD_INV_SLOT_WIDTH; gIMPGearInvData[HELMETPOS].sHeight = HEAD_INV_SLOT_HEIGHT; // HELMETPOS + gIMPGearInvData[VESTPOS].sX = x + 205; gIMPGearInvData[VESTPOS].sY = y + 38; gIMPGearInvData[VESTPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[VESTPOS].sHeight = VEST_INV_SLOT_HEIGHT; // VESTPOS + gIMPGearInvData[LEGPOS].sX = x + 205; gIMPGearInvData[LEGPOS].sY = y + 98; gIMPGearInvData[LEGPOS].sWidth = LEGS_INV_SLOT_WIDTH; gIMPGearInvData[LEGPOS].sHeight = LEGS_INV_SLOT_HEIGHT; // LEGPOS + gIMPGearInvData[HEAD1POS].sX = x + 21; gIMPGearInvData[HEAD1POS].sY = y + 9; gIMPGearInvData[HEAD1POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[HEAD1POS].sHeight = SM_INV_SLOT_HEIGHT; // HEAD1POS + gIMPGearInvData[HEAD2POS].sX = x + 21; gIMPGearInvData[HEAD2POS].sY = y + 33; gIMPGearInvData[HEAD2POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[HEAD2POS].sHeight = SM_INV_SLOT_HEIGHT; // HEAD2POS + gIMPGearInvData[HANDPOS].sX = x + 22; gIMPGearInvData[HANDPOS].sY = y + 87; gIMPGearInvData[HANDPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[HANDPOS].sHeight = BIG_INV_SLOT_HEIGHT; // HANDPOS + gIMPGearInvData[SECONDHANDPOS].sX = x + 22; gIMPGearInvData[SECONDHANDPOS].sY = y + 111; gIMPGearInvData[SECONDHANDPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[SECONDHANDPOS].sHeight = BIG_INV_SLOT_HEIGHT; // SECONDHANDPOS + gIMPGearInvData[GUNSLINGPOCKPOS].sX = x + 98; gIMPGearInvData[GUNSLINGPOCKPOS].sY = y + 144; gIMPGearInvData[GUNSLINGPOCKPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[GUNSLINGPOCKPOS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK1 + gIMPGearInvData[KNIFEPOCKPOS].sX = x + 98; gIMPGearInvData[KNIFEPOCKPOS].sY = y + 169; gIMPGearInvData[KNIFEPOCKPOS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[KNIFEPOCKPOS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK2 + gIMPGearInvData[MEDPOCK1POS].sX = x + 98; gIMPGearInvData[MEDPOCK1POS].sY = y + 192; gIMPGearInvData[MEDPOCK1POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK1POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK3 + gIMPGearInvData[MEDPOCK2POS].sX = x + 98; gIMPGearInvData[MEDPOCK2POS].sY = y + 217; gIMPGearInvData[MEDPOCK2POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK2POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK4 + gIMPGearInvData[SMALLPOCK1POS].sX = x + 23; gIMPGearInvData[SMALLPOCK1POS].sY = y + 144; gIMPGearInvData[SMALLPOCK1POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK1POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK1 + gIMPGearInvData[SMALLPOCK2POS].sX = x + 23; gIMPGearInvData[SMALLPOCK2POS].sY = y + 168; gIMPGearInvData[SMALLPOCK2POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK2POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK2 + gIMPGearInvData[SMALLPOCK3POS].sX = x + 23; gIMPGearInvData[SMALLPOCK3POS].sY = y + 192; gIMPGearInvData[SMALLPOCK3POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK3POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK3 + gIMPGearInvData[SMALLPOCK4POS].sX = x + 23; gIMPGearInvData[SMALLPOCK4POS].sY = y + 216; gIMPGearInvData[SMALLPOCK4POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK4POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK4 + gIMPGearInvData[SMALLPOCK11POS].sX = x + 61; gIMPGearInvData[SMALLPOCK11POS].sY = y + 144; gIMPGearInvData[SMALLPOCK11POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK11POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK5 + gIMPGearInvData[SMALLPOCK12POS].sX = x + 61; gIMPGearInvData[SMALLPOCK12POS].sY = y + 168; gIMPGearInvData[SMALLPOCK12POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK12POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK6 + gIMPGearInvData[SMALLPOCK13POS].sX = x + 61; gIMPGearInvData[SMALLPOCK13POS].sY = y + 192; gIMPGearInvData[SMALLPOCK13POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK13POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK7 + gIMPGearInvData[SMALLPOCK14POS].sX = x + 61; gIMPGearInvData[SMALLPOCK14POS].sY = y + 216; gIMPGearInvData[SMALLPOCK14POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK14POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK8 + gIMPGearInvData[SMALLPOCK6POS].sX = x + 180; gIMPGearInvData[SMALLPOCK6POS].sY = y + 144; gIMPGearInvData[SMALLPOCK6POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK6POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK9 + gIMPGearInvData[SMALLPOCK7POS].sX = x + 180; gIMPGearInvData[SMALLPOCK7POS].sY = y + 168; gIMPGearInvData[SMALLPOCK7POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK7POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK10 + gIMPGearInvData[SMALLPOCK8POS].sX = x + 180; gIMPGearInvData[SMALLPOCK8POS].sY = y + 192; gIMPGearInvData[SMALLPOCK8POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK8POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK11 + gIMPGearInvData[SMALLPOCK9POS].sX = x + 180; gIMPGearInvData[SMALLPOCK9POS].sY = y + 216; gIMPGearInvData[SMALLPOCK9POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK9POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK12 + gIMPGearInvData[SMALLPOCK19POS].sX = x + 219; gIMPGearInvData[SMALLPOCK19POS].sY = y + 144; gIMPGearInvData[SMALLPOCK19POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK19POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK13 + gIMPGearInvData[SMALLPOCK20POS].sX = x + 219; gIMPGearInvData[SMALLPOCK20POS].sY = y + 168; gIMPGearInvData[SMALLPOCK20POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK20POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK14 + gIMPGearInvData[SMALLPOCK21POS].sX = x + 219; gIMPGearInvData[SMALLPOCK21POS].sY = y + 192; gIMPGearInvData[SMALLPOCK21POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK21POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK15 + gIMPGearInvData[SMALLPOCK22POS].sX = x + 219; gIMPGearInvData[SMALLPOCK22POS].sY = y + 216; gIMPGearInvData[SMALLPOCK22POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK22POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK16 + + // Move unused slots to lower right corner so they are unreachable + gIMPGearInvData[VESTPOCKPOS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[VESTPOCKPOS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[VESTPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[VESTPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // VESTPOCK + gIMPGearInvData[LTHIGHPOCKPOS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[LTHIGHPOCKPOS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[LTHIGHPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[LTHIGHPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // LTHIGHPOCK + gIMPGearInvData[RTHIGHPOCKPOS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[RTHIGHPOCKPOS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[RTHIGHPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[RTHIGHPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // RTHIGHPOCK + gIMPGearInvData[CPACKPOCKPOS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[CPACKPOCKPOS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[CPACKPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[CPACKPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // CPACKPOCK + gIMPGearInvData[BPACKPOCKPOS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BPACKPOCKPOS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BPACKPOCKPOS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[BPACKPOCKPOS].sHeight = VEST_INV_SLOT_HEIGHT; // BPACKPOCK + gIMPGearInvData[BIGPOCK1POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK1POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK1POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK1POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK1 + gIMPGearInvData[BIGPOCK2POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK2POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK2POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK2POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK2 + gIMPGearInvData[BIGPOCK3POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK3POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK3POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK3POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK3 + gIMPGearInvData[BIGPOCK4POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK4POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK4POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK4POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK4 + gIMPGearInvData[BIGPOCK5POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK5POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK5POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK5POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK5 + gIMPGearInvData[BIGPOCK6POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK6POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK6POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK6POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK6 + gIMPGearInvData[BIGPOCK7POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[BIGPOCK7POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[BIGPOCK7POS].sWidth = BIG_INV_SLOT_WIDTH; gIMPGearInvData[BIGPOCK7POS].sHeight = BIG_INV_SLOT_HEIGHT; // BIGPOCK7 + gIMPGearInvData[MEDPOCK3POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[MEDPOCK3POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[MEDPOCK3POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK3POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK3 + gIMPGearInvData[MEDPOCK4POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[MEDPOCK4POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[MEDPOCK4POS].sWidth = VEST_INV_SLOT_WIDTH; gIMPGearInvData[MEDPOCK4POS].sHeight = VEST_INV_SLOT_HEIGHT; // MEDPOCK4 + gIMPGearInvData[SMALLPOCK5POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK5POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK5POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK5POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK5 + gIMPGearInvData[SMALLPOCK10POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK10POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK10POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK10POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK10 + gIMPGearInvData[SMALLPOCK15POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK15POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK15POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK15POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK15 + gIMPGearInvData[SMALLPOCK16POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK16POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK16POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK16POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK16 + gIMPGearInvData[SMALLPOCK17POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK17POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK17POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK17POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK17 + gIMPGearInvData[SMALLPOCK18POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK18POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK18POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK18POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK18 + gIMPGearInvData[SMALLPOCK23POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK23POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK23POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK23POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK23 + gIMPGearInvData[SMALLPOCK24POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK24POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK24POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK24POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK24 + gIMPGearInvData[SMALLPOCK25POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK25POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK25POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK25POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK25 + gIMPGearInvData[SMALLPOCK26POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK26POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK26POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK26POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK26 + gIMPGearInvData[SMALLPOCK27POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK27POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK27POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK27POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK27 + gIMPGearInvData[SMALLPOCK28POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK28POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK28POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK28POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK28 + gIMPGearInvData[SMALLPOCK29POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK29POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK29POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK29POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK29 + gIMPGearInvData[SMALLPOCK30POS].sX = SCREEN_WIDTH + 1; gIMPGearInvData[SMALLPOCK30POS].sY = SCREEN_HEIGHT + 1; gIMPGearInvData[SMALLPOCK30POS].sWidth = SM_INV_SLOT_WIDTH; gIMPGearInvData[SMALLPOCK30POS].sHeight = SM_INV_SLOT_HEIGHT; // SMALLPOCK30 + } + + // Add regions for inventory pocket slots + for (UINT8 cnt = 0; cnt < NUM_INV_SLOTS; ++cnt) + { + MSYS_DefineRegion(&gIMPGearInvRegion[cnt], + gIMPGearInvData[cnt].sX, gIMPGearInvData[cnt].sY, + (INT16)(gIMPGearInvData[cnt].sX + gIMPGearInvData[cnt].sWidth), (INT16)(gIMPGearInvData[cnt].sY + gIMPGearInvData[cnt].sHeight), + MSYS_PRIORITY_HIGH, CURSOR_WWW, IMPInvMoveCallback, IMPInvClickCallback + ); + + // Add region + MSYS_AddRegion(&gIMPGearInvRegion[cnt]); + MSYS_SetRegionUserData(&gIMPGearInvRegion[cnt], 0, cnt); + + SetRegionFastHelpText(&gIMPGearInvRegion[cnt], szIMPGearPocketText[cnt]); + } + + // Inventory pool slots + for (size_t i = 0; i < 25; i++) + { + const UINT32 xOffset = gIMPInvPoolLayout.x + 24; // top left coords of the first item slot in selection grid sti + const UINT32 yOffset = gIMPInvPoolLayout.y + 8; + const UINT32 xStep = 72; // steps to the next slot column and row + const UINT32 yStep = 32; + const auto x = xOffset + (UINT8)((i) % 5) * xStep; + const auto y = yOffset + (UINT8)((i) / 5) * yStep; + + MSYS_DefineRegion(&gIMPGearInvPoolRegion[i], + x, y, + x + 60, y + 22, + MSYS_PRIORITY_HIGH, CURSOR_WWW, IMPInvMoveCallback, IMPInventoryPoolSelectCallback + ); + + // Add region + MSYS_AddRegion(&gIMPGearInvPoolRegion[i]); + MSYS_SetRegionUserData(&gIMPGearInvPoolRegion[i], 0, i); + SetRegionFastHelpText(&gIMPGearInvPoolRegion[i], szIMPGearPocketText[55]); + MSYS_DisableRegion(&gIMPGearInvPoolRegion[i]); + } +} + + +void DisplayPagesForImpInventoryPool(void) +{ + // get the current and last pages and display them + CHAR16 sString[32]; + INT16 sX, sY; + + SetFont(COMPFONT); + SetFontForeground(183); + SetFontBackground(FONT_BLACK); + + // set the buffer + SetFontDestBuffer(FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE); + + // grab current and last pages + swprintf(sString, L"%d / %d", gIMPCurrentInventoryPoolPage + 1, gIMPLastInventoryPoolPage + 1); + + // grab centered coords + FindFontCenterCoordinates( + gIMPInvPoolLayout.x + 170, + gIMPInvPoolLayout.y + 190, + 46, 13, sString, BLOCKFONT2, &sX, &sY + ); + + mprintf(sX, sY, sString); + + SetFontDestBuffer(FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE); +} + + +void DrawItemTextToInvPool(STR16 itemName, UINT32 x, UINT32 y) +{ + // the name + CHAR16 sString[64]; + wcscpy(sString, itemName); + + if (StringPixLength(sString, SMALLCOMPFONT) >= (65)) + { + ReduceStringLength(sString, (INT16)(65 - StringPixLength(L" ...", SMALLCOMPFONT)), SMALLCOMPFONT); + } + + INT16 sX, sY; + FindFontCenterCoordinates( + x, + y, + 65, 6, sString, SMALLCOMPFONT, &sX, &sY + ); + + SetFontDestBuffer(FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE); + + SetFont(SMALLCOMPFONT); + SetFontForeground(FONT_GRAY2); + SetFontBackground(FONT_BLACK); + + mprintf(sX, sY, sString); +} + + +void RenderImpGearSelectionChoices(UINT32 pocket) +{ + const UINT32 xOffset = gIMPInvPoolLayout.x + 24; // top left coords of the first item slot in selection grid sti + const UINT32 yOffset = gIMPInvPoolLayout.y + 8; + const UINT32 xStep = 72; // steps to the next slot column and row + const UINT32 yStep = 32; + + const UINT32 pageShift = gIMPCurrentInventoryPoolPage * 25; + UINT32 end = gIMPPossibleItems[pocket].size(); + if (gIMPCurrentInventoryPoolPage < gIMPLastInventoryPoolPage) + { + end = pageShift + 25; + } + + for (UINT32 i = 0 + pageShift; i < end; i++) + { + const auto item = gIMPPossibleItems[pocket][i].first; + const auto x = xOffset + (UINT8)((i - pageShift)%5) * xStep; + const auto y = yOffset + (UINT8)((i - pageShift)/5)* yStep; + + DisplayGear(item, x, y, FALSE, 1, FALSE); + + // Coordinates for item text + const auto xText = x; + const auto yText = y + 24; + DrawItemTextToInvPool(gIMPPossibleItems[pocket][i].second, xText, yText); + + + // Check if currently selected item is shown in pool and adjust glow coordinates + if (item == gIMPPocketSelectedItems[pocket].first) + { + gIMPGlowX = x; + gIMPGlowY = y; + fShowIMPItemHighLight = TRUE; + } + } +} + + +void DrawImpGearInventoryPool(void) +{ + RenderImpGearSelectionGrid(); + ShowButton(gIMPInvDoneButton); + ShowButton(gIMPInvArrowButton[0]); + ShowButton(gIMPInvArrowButton[1]); + DisplayPagesForImpInventoryPool(); + RenderImpGearSelectionChoices(gCurrentImpGearChoices); +} + + + +void SetChoiceForPocket(INT32 pocket, INT32 index, UINT8 amount) +{ + if (gIMPPossibleItems[pocket].size() > index) + { + gIMPPocketSelectedItems[pocket] = std::make_pair(gIMPPossibleItems[pocket][index].first, amount); + } +} + + +void DistributePossibleItemsToVectors(void) +{ + // these vectors contain the possible items in selection screen pockets + gIMPPossibleItems.clear(); + + // it is always possible to not select something + for (int i = 0; i < NUM_INV_SLOTS; ++i) + { + gIMPPossibleItems[i].push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + SetChoiceForPocket(i, 0, 1); // Initialize all selections to empty at first + } + + std::set::iterator itend = gIMPGearPossibleItems.end(); + for (std::set::iterator it = gIMPGearPossibleItems.begin(); it != itend; ++it) + { + UINT16 usItem = (*it); + + if (Item[usItem].usItemClass & IC_GUN) + { + gIMPPossibleItems[HANDPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + + if (Item[usItem].twohanded) { + gIMPPossibleItems[GUNSLINGPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + else { + gIMPPossibleItems[SECONDHANDPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + } + else if (Item[usItem].usItemClass & IC_LAUNCHER) + { + gIMPPossibleItems[GUNSLINGPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + else if (Item[usItem].usItemClass & (IC_BLADE | IC_THROWING_KNIFE | IC_PUNCH)) + { + gIMPPossibleItems[KNIFEPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + else if (Item[usItem].usItemClass & IC_ARMOUR) + { + if (Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_HELMET) + gIMPPossibleItems[HELMETPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + else if (Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_VEST) + gIMPPossibleItems[VESTPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + else if (Armour[Item[usItem].ubClassIndex].ubArmourClass == ARMOURCLASS_LEGGINGS) + gIMPPossibleItems[LEGPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + else if (Item[usItem].usItemClass & IC_LBEGEAR) + { + switch (LoadBearingEquipment[Item[usItem].ubClassIndex].lbeClass) + { + case THIGH_PACK: + gIMPPossibleItems[LTHIGHPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + gIMPPossibleItems[RTHIGHPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + break; + case VEST_PACK: + gIMPPossibleItems[VESTPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + break; + case COMBAT_PACK: + gIMPPossibleItems[CPACKPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + break; + case BACKPACK: + gIMPPossibleItems[BPACKPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + break; + default: + gIMPPossibleItems[LTHIGHPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + gIMPPossibleItems[RTHIGHPOCKPOS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + break; + } + } + else if (Item[usItem].usItemClass & IC_FACE) + { + gIMPPossibleItems[HEAD1POS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + gIMPPossibleItems[HEAD2POS].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + else if (Item[usItem].usItemClass & (IC_GRENADE | IC_BOMB)) + { + // ignore item if it is a launchable - we already list it under ammo if a launcher is selected + BOOLEAN found = FALSE; + UINT16 iLoop = 0; + while (Launchable[iLoop][0] != 0) + { + if (Launchable[iLoop][0] == usItem) + { + found = TRUE; + break; + } + + ++iLoop; + } + + if (!found) + { + for (size_t i = BIGPOCK1POS; i < MEDPOCK1POS; i++) + { + gIMPPossibleItems[i].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + for (size_t i = SMALLPOCK19POS; i < NUM_INV_SLOTS; i++) + { + gIMPPossibleItems[i].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + } + } + else if (Item[usItem].usItemClass & (IC_MEDKIT | IC_KIT)) + { + for (size_t i = MEDPOCK1POS; i < SMALLPOCK1POS; i++) + { + gIMPPossibleItems[i].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + } + else + { + for (size_t i = BIGPOCK1POS; i < MEDPOCK1POS; i++) + { + gIMPPossibleItems[i].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + for (size_t i = SMALLPOCK19POS; i < NUM_INV_SLOTS; i++) + { + gIMPPossibleItems[i].push_back(std::make_pair(usItem, Item[usItem].szItemName)); + } + } + } + + + //Assign default choices to select pockets + SetChoiceForPocket(HELMETPOS, 1, 1); + SetChoiceForPocket(VESTPOS, 1, 1); + SetChoiceForPocket(LEGPOS, 1, 1); + SetChoiceForPocket(HEAD1POS, 1, 1); + SetChoiceForPocket(HEAD2POS, 2, 1); + + SetChoiceForPocket(HANDPOS, 1, 1); + SetChoiceForPocket(KNIFEPOCKPOS, 1, 1); + SetChoiceForPocket(MEDPOCK1POS, 1, 1); + + if (UsingNewInventorySystem()) + { + SetChoiceForPocket(VESTPOCKPOS, 1, 1); + SetChoiceForPocket(CPACKPOCKPOS, 1, 1); + SetChoiceForPocket(BPACKPOCKPOS, 1, 1); + SetChoiceForPocket(LTHIGHPOCKPOS, 1, 1); + SetChoiceForPocket(RTHIGHPOCKPOS, 1, 1); + + SetChoiceForPocket(SMALLPOCK19POS, 4, 1); + SetChoiceForPocket(SMALLPOCK20POS, 3, 1); + SetChoiceForPocket(SMALLPOCK21POS, 2, 1); + SetChoiceForPocket(SMALLPOCK22POS, 1, 1); + SetChoiceForPocket(SMALLPOCK23POS, 1, 1); + } + else + { + SetChoiceForPocket(SMALLPOCK19POS, 4, 1); + SetChoiceForPocket(SMALLPOCK20POS, 3, 1); + SetChoiceForPocket(SMALLPOCK21POS, 2, 1); + SetChoiceForPocket(SMALLPOCK22POS, 1, 1); + } + +} + +void GlowImpInvPoolItem(void) +{ + static INT32 iColorNum = 10; + static BOOLEAN fDelta = FALSE; + static BOOLEAN fOldItemGlow = FALSE; + UINT32 uiDestPitchBYTES; + UINT8* pDestBuf; + + // not glowing right now, leave + if (fShowIMPItemHighLight == FALSE) + { + iColorNum = 0; + fDelta = TRUE; + fOldItemGlow = FALSE; + return; + } + + // if not ready to change glow phase yet, leave + if (!gfGlowTimerExpired) + return; + + + fOldItemGlow = TRUE; + + // change direction of glow? + if ((iColorNum == 0) || (iColorNum == 10)) + { + fDelta = !fDelta; + } + + // increment color + if (!fDelta) + iColorNum++; + else + iColorNum--; + + // restore background + auto x = gIMPGlowX; + auto y = gIMPGlowY; + const auto width = 60; + const auto height = 24; + + UINT16 usColor = Get16BPPColor(FROMRGB(GlowColorsA[iColorNum].ubRed, GlowColorsA[iColorNum].ubGreen, GlowColorsA[iColorNum].ubBlue)); + pDestBuf = LockVideoSurface(FRAME_BUFFER, &uiDestPitchBYTES); + SetClippingRegionAndImageWidth(uiDestPitchBYTES, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + + const auto xEnd = x + width; + const auto yEnd = y + height; + RectangleDraw(TRUE, x, y, xEnd, yEnd, usColor, pDestBuf); + InvalidateRegion(x, y, xEnd + 1, yEnd + 1); + UnLockVideoSurface(FRAME_BUFFER); +} + +void RenderIMPGearBodytype(void) +{ + UINT32 index =2; // Regular male + if (bBigBody) + { + index = 3; // Big male + } + if (!fCharacterIsMale) + { + index = 4; // Female + } + + INT32 x = gIMPGearLayout.x + 31; + INT32 y = gIMPGearLayout.y + 8; + if (!UsingNewInventorySystem()) + { + x = gIMPGearLayout.x + 71; + y = gIMPGearLayout.y + 9; + } + + BltVideoObjectFromIndex(FRAME_BUFFER, gIMPINVENTORY, index, x, y, VO_BLT_SRCTRANSPARENCY, NULL); +} \ No newline at end of file diff --git a/Laptop/IMPVideoObjects.cpp b/Laptop/IMPVideoObjects.cpp index 1d7084ac..9328119d 100644 --- a/Laptop/IMPVideoObjects.cpp +++ b/Laptop/IMPVideoObjects.cpp @@ -40,7 +40,6 @@ UINT32 guiATTRIBUTEBAR; UINT32 guiBUTTON2IMAGE; UINT32 guiBUTTON1IMAGE; UINT32 guiBUTTON4IMAGE; -//UINT32 guiPORTRAITFRAME; // duplicate definition, look up a few lines (jonathanl) UINT32 guiMAININDENT; UINT32 guiLONGINDENT; UINT32 guiSHORTINDENT; @@ -56,6 +55,10 @@ UINT32 guiSHORT2HINDENT; // These 2 added - SANDRO UINT32 guiASTARTLEVEL; UINT32 guiCOLORCHOICEFRAME; +UINT32 gIMPINVENTORY; +SGPRectangle gIMPGearLayout; +SGPRectangle gIMPInvPoolLayout; + // position defines #define CHAR_PROFILE_BACKGROUND_TILE_WIDTH 125 @@ -1495,3 +1498,63 @@ void RenderColorChoiceFrame(INT16 sX, INT16 sY) +BOOLEAN LoadImpGearSelection(void) +{ + VOBJECT_DESC VObjectDesc; + VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; + //if (UsingNewInventorySystem()) + { + FilenameForBPP("INTERFACE\\ImpGearSelection.sti", VObjectDesc.ImageFile); + } + CHECKF(AddVideoObject(&VObjectDesc, &gIMPINVENTORY)); + + gIMPGearLayout = { LAPTOP_SCREEN_UL_X + 37, LAPTOP_SCREEN_WEB_UL_Y + 48, 429, 257 }; + if (!UsingNewInventorySystem()) + { + gIMPGearLayout = { LAPTOP_SCREEN_UL_X + 118, LAPTOP_SCREEN_WEB_UL_Y + 48, 261, 249 }; + } + + gIMPInvPoolLayout = { LAPTOP_SCREEN_UL_X + 57, LAPTOP_SCREEN_WEB_UL_Y + 68, 389, 217}; + + return (TRUE); +} + +void DeleteImpGearSelection(void) +{ + DeleteVideoObjectFromIndex(gIMPINVENTORY); + return; +} + +extern BOOLEAN Blt8BPPDataTo16BPPBufferTransparent(UINT16* pBuffer, UINT32 uiDestPitchBYTES, HVOBJECT hSrcVObject, INT32 iX, INT32 iY, UINT16 usIndex); + +void RenderImpGearSelection(void) +{ + UINT32 uiDestPitchBYTES; + UINT16* pDestBuf; + HVOBJECT hCharListHandle; + + UINT8 stiIndex = 0; + if (!UsingNewInventorySystem()) + { + stiIndex = 5; + } + + pDestBuf = (UINT16*)LockVideoSurface(FRAME_BUFFER, &uiDestPitchBYTES); + GetVideoObject(&hCharListHandle, gIMPINVENTORY); + Blt8BPPDataTo16BPPBufferTransparent(pDestBuf, uiDestPitchBYTES, hCharListHandle, gIMPGearLayout.x, gIMPGearLayout.y, stiIndex); + UnLockVideoSurface(FRAME_BUFFER); +} + +void RenderImpGearSelectionGrid(void) +{ + UINT32 uiDestPitchBYTES; + UINT16* pDestBuf; + HVOBJECT hCharListHandle; + + UINT8 stiIndex = 1; + + pDestBuf = (UINT16*)LockVideoSurface(FRAME_BUFFER, &uiDestPitchBYTES); + GetVideoObject(&hCharListHandle, gIMPINVENTORY); + Blt8BPPDataTo16BPPBufferTransparent(pDestBuf, uiDestPitchBYTES, hCharListHandle, gIMPInvPoolLayout.x, gIMPInvPoolLayout.y, stiIndex); + UnLockVideoSurface(FRAME_BUFFER); +} diff --git a/Laptop/IMPVideoObjects.h b/Laptop/IMPVideoObjects.h index 4a7fd3cd..c17be49c 100644 --- a/Laptop/IMPVideoObjects.h +++ b/Laptop/IMPVideoObjects.h @@ -154,6 +154,11 @@ BOOLEAN LoadColorChoiceFrame( void ); void DeleteColorChoiceFrame( void ); void RenderColorChoiceFrame(INT16 sX, INT16 sY); +BOOLEAN LoadImpGearSelection(void); +void DeleteImpGearSelection(void); +void RenderImpGearSelection(void); +void RenderImpGearSelectionGrid(void); + // graphical handles extern UINT32 guiBACKGROUND; @@ -174,6 +179,10 @@ extern UINT32 guiATTRIBUTEFRAME; extern UINT32 guiATTRIBUTESCREENINDENT1; extern UINT32 guiATTRIBUTESCREENINDENT2; extern UINT32 guiSLIDERBAR; +extern UINT32 gIMPINVENTORY; +extern UINT32 gIMPFIGURES[3]; +extern SGPRectangle gIMPGearLayout; +extern SGPRectangle gIMPInvPoolLayout; #endif diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index 5ccaec8b..62cded8b 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -217,10 +217,18 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) // Give it fReturn = AutoPlaceObject( MercPtrs[iNewIndex], &gTempObject, FALSE ); // CHRISL: This condition should resolve the issue of the letter not being issued to the first merc - if(!fReturn && (UsingNewInventorySystem() == true)) + if(!fReturn) { - (MercPtrs[iNewIndex]->inv[NUM_INV_SLOTS-1]) = gTempObject; - fReturn=TRUE; + if (UsingNewInventorySystem()) + { + (MercPtrs[iNewIndex]->inv[NUM_INV_SLOTS-1]) = gTempObject; + fReturn=TRUE; + } + else + { + (MercPtrs[iNewIndex]->inv[SMALLPOCK8POS]) = gTempObject; + fReturn = TRUE; + } } Assert( fReturn ); } diff --git a/Utils/Text.h b/Utils/Text.h index a628cf55..b5fcd1e9 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -3028,8 +3028,7 @@ extern STR16 szSpyText[]; extern STR16 szFoodText[]; extern STR16 szIMPGearWebSiteText[]; -extern STR16 szIMPGearDropDownText[]; -extern STR16 szIMPGearDropDownNoneText[]; +extern STR16 szIMPGearPocketText[]; // Flugente: militia movement extern STR16 szMilitiaStrategicMovementText[]; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index ef02ff44..1176aada 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -11363,62 +11363,68 @@ STR16 szIMPGearWebSiteText[] = L"额外花费: %d$ (%d$ 预付款)", //L"Additional Cost: %d$ (%d$ prepaid)", }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"选择LBE背心", //L"Select LBE vest", - L"选择LBE战斗包", //L"Select LBE combat pack", - L"选择LBE背包", //L"Select LBE backpack", - L"选择LBE皮套", //L"Select LBE holster", - L"选择LBE皮套", //L"Select LBE holster", - - L"选择主枪", // L"Select main gun", - L"选择弹药", //L"Select ammo", - L"选择手枪", //L"Select sidearm", - L"选择额外弹药", //L"Select additional ammo", - L"选择武器", //L"Select melee weapon", - L"选择头盔", //L"Select helmet", L"选择背心", // L"Select vest", L"选择裤子", //L"Select pants", L"选择头部装备", //L"Select face gear", L"选择头部装备", // L"Select face gear", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", -}; + L"选择主枪", // L"Select main gun", + L"选择手枪", //L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"没有LBE背心", //L"No LBE vest", - L"没有LBE战斗包", // L"No LBE combat pack", - L"没有LBE背包", //L"No LBE backpack", - L"没有LBE皮套", //L"No LBE holster", - L"没有LBE皮套", //L"No LBE holster", + L"选择LBE背心", //L"Select LBE vest", + L"选择LBE皮套", //L"Select left LBE holster", + L"选择LBE皮套", //L"Select right LBE holster", + L"选择LBE战斗包", //L"Select LBE combat pack", + L"选择LBE背包", //L"Select LBE backpack", - L"没有枪", //L"No gun", - L"没有弹药", //L"No ammo", - L"没有枪", // L"No gun", - L"没有弹药", //L"No ammo", - L"没有武器", //L"No weapon", + L"Select launcher / rifle", + L"选择武器", //L"Select melee weapon", - L"没有头盔", //L"No helmet", - L"没有背心", //L"No vest", - L"没有裤子", //L"No pants", - L"没有头部装备", //L"No face gear", - L"没有头部装备", // L"No face gear", - - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", - L"选择附加物品", //L"No additional items", + L"选择附加物品", //L"Select additional items", //BIGPOCK1POS + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"选择附加物品", //L"Select additional items", //SMALLPOCK19POS + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 2c305d2f..f842d661 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -11373,62 +11373,68 @@ STR16 szIMPGearWebSiteText[] = // TODO.Translate L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", L"Select pants", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 88a123d7..9f37ce44 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -11363,62 +11363,68 @@ STR16 szIMPGearWebSiteText[] = L"Additional Cost: %d$ (%d$ prepaid)", }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", - L"Select pants", + L"Select leg armor", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select kit item", //MEDPOCK1POS + L"Select kit item", + L"Select kit item", + L"Select kit item", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index b10b3041..b645769e 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -11355,62 +11355,68 @@ STR16 szIMPGearWebSiteText[] = // TODO.Translate L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", L"Select pants", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 5a3d3580..fe934da1 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -11256,63 +11256,68 @@ STR16 szIMPGearWebSiteText[] = }; // TODO.Translate -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", L"Select pants", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -// TODO.Translate -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; // TODO.Translate diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index ba42d4f2..8dd97fc0 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -11364,62 +11364,68 @@ STR16 szIMPGearWebSiteText[] = // TODO.Translate L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", L"Select pants", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 327a341b..b66a93eb 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -11377,62 +11377,68 @@ STR16 szIMPGearWebSiteText[] = // TODO.Translate L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Select LBE vest", - L"Select LBE combat pack", - L"Select LBE backpack", - L"Select LBE holster", - L"Select LBE holster", - - L"Select main gun", - L"Select ammo", - L"Select sidearm", - L"Select additional ammo", - L"Select melee weapon", - L"Select helmet", L"Select vest", L"Select pants", L"Select face gear", L"Select face gear", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", -}; + L"Select main gun", + L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"No LBE vest", - L"No LBE combat pack", - L"No LBE backpack", - L"No LBE holster", - L"No LBE holster", + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", - L"No gun", - L"No ammo", - L"No gun", - L"No ammo", - L"No weapon", + L"Select launcher / rifle", + L"Select melee weapon", - L"No helmet", - L"No vest", - L"No pants", - L"No face gear", - L"No face gear", - - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", - L"No additional items", + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] = diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index a0a7277a..92a8e8ab 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -11358,62 +11358,68 @@ STR16 szIMPGearWebSiteText[] = L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate }; -STR16 szIMPGearDropDownText[] = +STR16 szIMPGearPocketText[] = { - L"Выбрать разгр. жилета", - L"Выбрать разгр. ранец", - L"Выбрать разгр. рюкзак", - L"Выбрать разгр. кобуру", - L"Выбрать разгр. кобуру", - - L"Выбрать осн. оружие", - L"Выбрать патроны", - L"Выбрать доп. оружие", - L"Выбрать доп. патроны", - L"Выбрать оружие ближ. боя", - - L"Выбрать шлем", - L"Выбрать жилет", - L"Выбрать поножи", - L"Выбрать для лица", - L"Выбрать для лица", + L"Выбрать шлем", //L"Select helmet", + L"Выбрать жилет", //L"Select vest", + L"Выбрать поножи", //L"Select pants", + L"Выбрать для лица", //L"Select face gear", + L"Выбрать для лица", //L"Select face gear", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", - L"Выбрать доп. предметы", -}; + L"Выбрать осн. оружие", //L"Select main gun", + L"Выбрать доп. оружие", //L"Select sidearm", -STR16 szIMPGearDropDownNoneText[] = -{ - L"Нет разгр. жилета", - L"Нет разгр. ранца", - L"Нет разгр. рюкзака", - L"Нет разгр. кобуры", - L"Нет разгр. кобуры", - - L"Нет оружий", - L"Нет патронов", - L"Нет оружия", - L"Нет патровно", - L"Нет оружия", - - L"Нет шлема", - L"Нет жилета", - L"Нет поножей", - L"Нет ничего для лица", - L"Нет ничего для лица", + L"Выбрать разгр. жилета", //L"Select LBE vest", + L"Выбрать разгр. кобуру", //L"Select left LBE holster", + L"Выбрать разгр. кобуру", //L"Select right LBE holster", + L"Выбрать разгр. ранец", //L"Select LBE combat pack", + L"Выбрать разгр. рюкзак", //L"Select LBE backpack", - L"Нет доп. предметов", - L"Нет доп. предметов", - L"Нет доп. предметов", - L"Нет доп. предметов", - L"Нет доп. предметов", - L"Нет доп. предметов", - L"Нет доп. предметов", + L"Select launcher / rifle", + L"Выбрать оружие ближ. боя", //L"Select melee weapon", + + L"Выбрать доп. предметы", //L"Select additional items", //BIGPOCK1POS + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK19POS + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", }; STR16 szMilitiaStrategicMovementText[] =