From be5bfd992c212950d5b5cb486a79fcbd794af039 Mon Sep 17 00:00:00 2001 From: Ben Saine Date: Thu, 3 Feb 2022 19:14:52 +0000 Subject: [PATCH] Hide 1x quantity for equipable items, dynamic buff icon placement --- .../client/src/interface_v3/dbctrl_sheet.cpp | 58 ++++++++++--------- ryzom/client/src/interface_v3/dbctrl_sheet.h | 1 - 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index 0b8cda2ee..dd70c7ece 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -309,7 +309,6 @@ CCtrlSheetInfo::CCtrlSheetInfo() _InterfaceColor= true; _SheetSelectionGroup = -1; _UseQuality = true; - _DisplayItemQuality = true; _UseQuantity = true; _DuplicateOnDrag = false; _ItemSlot= SLOTTYPE::UNDEFINED; @@ -1277,6 +1276,9 @@ void CDBCtrlSheet::setupItem () sint32 sheet = _SheetId.getSInt32(); + _DispQuality = -1; + _DispQuantity = -1; + // If this is the same sheet, need to resetup if (_LastSheetId != sheet || _NeedSetup) { @@ -1290,13 +1292,6 @@ void CDBCtrlSheet::setupItem () { _ItemSheet = (CItemSheet*)pES; - // Display the item quality? - _DisplayItemQuality= _UseQuality && - _ItemSheet->Family != ITEMFAMILY::COSMETIC && - _ItemSheet->Family != ITEMFAMILY::TELEPORT && - _ItemSheet->Family != ITEMFAMILY::SERVICE - ; - _DispSheetBmpId = rVR.getTextureIdFromName (_ItemSheet->getIconMain()); // if file not found or empty, replace by default icon if( _DispSheetBmpId == -1) @@ -1350,21 +1345,11 @@ void CDBCtrlSheet::setupItem () _DispQuantity = _Quantity.getSInt32(); } } - else - // do not display any number - _DispQuantity = -1; } - else _DispQuantity = -1; // Setup quality - if(_DisplayItemQuality) - { + if(_UseQuality) _DispQuality= _Quality.getSInt32(); - } - else - { - _DispQuality= -1; - } // special icon text if( _NeedSetup || _ItemSheet->getIconText() != _OptString ) @@ -1403,7 +1388,7 @@ void CDBCtrlSheet::setupItem () } // update quality. NB: if quality change, the must updateItemCharacRequirement - if(_DisplayItemQuality) + if(_UseQuality) { sint32 newQuality= _Quality.getSInt32(); if(newQuality!=_DispQuality) @@ -1412,10 +1397,6 @@ void CDBCtrlSheet::setupItem () updateItemCharacRequirement(_LastSheetId); } } - else - { - _DispQuality= -1; - } // update armour color (if USER_COLOR db change comes after SHEET change) if(_ArmourColorFromDB && _UserColor) @@ -1428,6 +1409,31 @@ void CDBCtrlSheet::setupItem () } } + if (_ItemSheet != NULL) + { + switch(_ItemSheet->Family) + { + case ITEMFAMILY::ARMOR: + case ITEMFAMILY::MELEE_WEAPON: + case ITEMFAMILY::RANGE_WEAPON: + case ITEMFAMILY::SHIELD: + case ITEMFAMILY::JEWELRY: + case ITEMFAMILY::CRAFTING_TOOL: + case ITEMFAMILY::HARVEST_TOOL: + case ITEMFAMILY::TAMING_TOOL: + case ITEMFAMILY::TRAINING_TOOL: + // hide 'x0' and 'x1' stack count for equipable items + if (_DispQuantity < 2) + _DispQuantity = -1; + break; + default: + // hide 'q0'and 'q1' quality for every other item + if (_DispQuality < 2) + _DispQuality = -1; + break; + } + } + // at each frame, must test for grayed. if(_AutoGrayed) { @@ -1893,8 +1899,6 @@ void CDBCtrlSheet::setupOutpostBuilding() { COutpostBuildingSheet *pOBSheet = (COutpostBuildingSheet*)pES; - _DisplayItemQuality = false; - _DispSheetBmpId = rVR.getTextureIdFromName (pOBSheet->getIconMain()); // if file not found or empty, replace by default icon if( _DispSheetBmpId == -1) @@ -2535,7 +2539,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti sint32 hArea = (hSheet / 4); sint32 xIcon = x; // move buff icons up a row, quantity text is displayed on bottom-left corner - sint32 yIcon = y + hArea; + sint32 yIcon = y + (_DispQuantity > 0 ? hArea : 0); for (uint i = 0; i < _BuffIcons.size(); ++i) { sint32 wIcon = _BuffIcons[i].IconW; diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.h b/ryzom/client/src/interface_v3/dbctrl_sheet.h index 2ccbdf00a..40e943307 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.h +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.h @@ -164,7 +164,6 @@ public: bool _UseQuantity : 1; // is the quantity read and displayed ? bool _ReadQuantityFromSheet : 1; // Read quantity from sheet rather than from database bool _UseQuality : 1; // is the quality read and displayed ? - bool _DisplayItemQuality : 1; // Do we have to display the quality for the item (false for Cosmetics and Teleport and if _UseQuality==fasle)? bool _DuplicateOnDrag : 1; // when dragged, the item is shown twice : one version at the mouse position. // and another in the source slot. Useful for items to buy that are in infinite quantity. bool _AutoGrayed : 1; // if true then gray the ctrlSheeet if: 1/ Items: Is the Item Locked. 2/ Bricks: is the brick Latent.