diff --git a/code/ryzom/client/src/interface_v3/action_handler_game.cpp b/code/ryzom/client/src/interface_v3/action_handler_game.cpp index 82fa7cd6c..9699e4a9d 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_game.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_game.cpp @@ -4686,3 +4686,18 @@ class CHandlerOutgameNaviGetKeys : public IActionHandler } }; REGISTER_ACTION_HANDLER( CHandlerOutgameNaviGetKeys, "navigate_outgame" ); + +// *************************************************************************** +class CHandlerTriggerIconBuffs : public IActionHandler +{ +public: + void execute (CCtrlBase * /* pCaller */, const std::string &/* sParams */) + { + CCDBNodeLeaf *node = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:SHOW_ICON_BUFFS", false); + // no node - show, + // node == false - hide + CDBCtrlSheet::setShowIconBuffs(!node || node->getValueBool()); + } +}; +REGISTER_ACTION_HANDLER(CHandlerTriggerIconBuffs, "trigger_show_icon_buffs"); + diff --git a/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index 2d3a6790a..fe7c3b281 100644 --- a/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/code/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -73,6 +73,9 @@ REGISTER_UI_CLASS(CDBCtrlSheet) const uint64 NOTIFY_ANIM_MS_DURATION = 1000; +// state kept and changed by UI:SAVE:SHOW_ICON_BUFFS +bool CDBCtrlSheet::_ShowIconBuffs = true; + // *************************************************************************** void CControlSheetInfoWaiter::sendRequest() @@ -1066,11 +1069,19 @@ void CDBCtrlSheet::updateIconSize() } } +// *************************************************************************** +void CDBCtrlSheet::clearIconBuffs() +{ + _EnchantIcons.clear(); + _BuffIcons.clear(); +} + // *************************************************************************** void CDBCtrlSheet::infoReceived() { if (!_ItemSheet) { + clearIconBuffs(); return; } @@ -1082,9 +1093,10 @@ void CDBCtrlSheet::infoReceived() return; } + clearIconBuffs(); + // crystallized spell { - _EnchantIcons.clear(); CViewRenderer &rVR = *CViewRenderer::getInstance(); CSBrickManager *pBM= CSBrickManager::getInstance(); for(uint i=0; iEnchantment.Bricks.size(); ++i) @@ -1109,7 +1121,6 @@ void CDBCtrlSheet::infoReceived() // buff icons { - _BuffIcons.clear(); CViewRenderer &rVR = *CViewRenderer::getInstance(); if (itemInfo->HpBuff > 0) _BuffIcons.push_back(SBuffIcon(rVR.getTextureIdFromName(_HpBuffIcon))); @@ -2315,7 +2326,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti rVR.draw11RotFlipBitmap (_RenderLayer+1, x, y, 0, false, _DispOver2BmpId, fastMulRGB(curSheetColor, _IconOver2Color)); } - if (!_BuffIcons.empty()) + if (_ShowIconBuffs && !_BuffIcons.empty()) { // there is max 4 icons sint32 hArea = (hSheet / 4); @@ -2350,7 +2361,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti drawNumber(x+1, y-2+hSheet-rVR.getFigurTextureH(), wSheet, hSheet, numberColor, enchant, false); } - if (!_EnchantIcons.empty()) + if (_ShowIconBuffs && !_EnchantIcons.empty()) { // should only only 2 icons at most // draw them in single line, top-right @@ -3268,13 +3279,22 @@ void CDBCtrlSheet::setupItemInfoWaiter() { const CItemSheet *item = asItemSheet(); if(!item) + { + clearIconBuffs(); return; + } if (!useItemInfoForFamily(item->Family)) + { + clearIconBuffs(); return; + } if (getItemSerial() == 0 || getItemCreateTime() == 0) + { + clearIconBuffs(); return; + } string luaMethodName = ((item->Family == ITEMFAMILY::CRYSTALLIZED_SPELL) ? "updateCrystallizedSpellTooltip" : "updateBuffItemTooltip"); CDBCtrlSheet *ctrlSheet = const_cast(this); @@ -4674,7 +4694,3 @@ void CDBCtrlSheet::startNotifyAnim() _NotifyAnimEndTime = T1 + NOTIFY_ANIM_MS_DURATION; } - - - - diff --git a/code/ryzom/client/src/interface_v3/dbctrl_sheet.h b/code/ryzom/client/src/interface_v3/dbctrl_sheet.h index 2b12924a5..28d7a1ddf 100644 --- a/code/ryzom/client/src/interface_v3/dbctrl_sheet.h +++ b/code/ryzom/client/src/interface_v3/dbctrl_sheet.h @@ -602,6 +602,9 @@ public: // callback from info waiter void infoReceived(); + // set enchant/buff marker visiblility + static void setShowIconBuffs(bool b) { _ShowIconBuffs = b; } + protected: inline bool useItemInfoForFamily(ITEMFAMILY::EItemFamily family) const; @@ -799,11 +802,15 @@ private: static CDBCtrlSheet *_CurrSelection; static CDBCtrlSheet *_CurrMenuSheet; + + static bool _ShowIconBuffs; private: void updateActualType() const; void updateIconSize(); void resetAllTexIDs(); void setupInit(); + // remove enchant and buff markers from item icon + void clearIconBuffs(); void setupCharBitmaps(sint32 maxW, sint32 maxLine, sint32 maxWChar= 1000, bool topDown= false); void resetCharBitmaps();