Merge with feature-item-icon-buffs

--HG--
branch : yubo
hg/yubo
Nimetu 5 years ago
commit b423c0f057

@ -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");

@ -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; i<itemInfo->Enchantment.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<CDBCtrlSheet*>(this);
@ -4674,7 +4694,3 @@ void CDBCtrlSheet::startNotifyAnim()
_NotifyAnimEndTime = T1 + NOTIFY_ANIM_MS_DURATION;
}

@ -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();

Loading…
Cancel
Save