From be5bfd992c212950d5b5cb486a79fcbd794af039 Mon Sep 17 00:00:00 2001 From: Ben Saine Date: Thu, 3 Feb 2022 19:14:52 +0000 Subject: [PATCH 1/2] 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. From ae33eb99bfc7ac99354b1e31a06d51cda4dc3036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20Gon=C3=A7alves=20=28Ulukyn=29?= Date: Fri, 4 Feb 2022 01:14:31 +0000 Subject: [PATCH 2/2] Resolve "Message bubble is very high on FH alarm plants" --- ryzom/client/src/character_cl.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ryzom/client/src/character_cl.cpp b/ryzom/client/src/character_cl.cpp index c157c0f85..26ab974e7 100644 --- a/ryzom/client/src/character_cl.cpp +++ b/ryzom/client/src/character_cl.cpp @@ -6274,6 +6274,11 @@ void CCharacterCL::updateVisiblePostPos(const NLMISC::TTime ¤tTimeInMs, CE pos = (box().getMin() + box().getMax())/2; pos.z = box().getMax().z; } + + CRaceStatsSheet *sheet = const_cast(UserEntity->playerSheet()); + float namePosZ = sheet->GenderInfos[UserEntity->getGender()].NamePosZNormal; + if (pos.z > box().getMin().z + namePosZ) + pos.z = box().getMin().z + namePosZ; nlassert(isValidDouble(pos.x) && isValidDouble(pos.y) && isValidDouble(pos.z)); _CurrentBubble->Position = pos; } @@ -6679,7 +6684,7 @@ ADD_METHOD(void CCharacterCL::updatePos(const TTime ¤tTimeInMs, CEntityCL updatePosCombatFloat(frameTimeRemaining, target); } // Compute the average speed to the destination. - // double spd = + // double spd = computeSpeed(); @@ -8233,14 +8238,14 @@ float CCharacterCL::getSheetScale() const // virtual // getColRadius : // Return the entity collision radius. (return 0.5 if there is any problem). //--------------------------------------------------- -float CCharacterCL::getSheetColRadius() const +float CCharacterCL::getSheetColRadius() const { - if(!_Sheet) + if(!_Sheet) return 0.5f; else return _Sheet->ColRadius; } - + //--------------------------------------------------- // getScale : @@ -8359,7 +8364,7 @@ std::string CCharacterCL::shapeFromItem(const CItemSheet &itemSheet) const sheet = itemSheet.getShape(); return sheet; - + }// shapeFromItem // @@ -9147,7 +9152,7 @@ void CCharacterCL::setAuraFX(uint index, const CAnimationFX *sheet) bi.DelayBeforeStart = 11.5f; _AttachedFXListToStart.push_front(bi); } - else + else { CAttachedFX::TSmartPtr fx = new CAttachedFX; fx->create(*this, bi, CAttachedFX::CTargeterInfo());