From cfdb17db6804f7c8706b2124f60b0f1c73962723 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Wed, 22 Apr 2015 16:36:47 +0400 Subject: [PATCH] Stolen idea from BuG and code from Blaze :D --- ElvUI_SLE/modules/sledatatexts/durability.lua | 73 +++++++++++++++++++++ ElvUI_SLE/modules/sledatatexts/load_datatexts.xml | 1 + 2 files changed, 74 insertions(+) create mode 100644 ElvUI_SLE/modules/sledatatexts/durability.lua diff --git a/ElvUI_SLE/modules/sledatatexts/durability.lua b/ElvUI_SLE/modules/sledatatexts/durability.lua new file mode 100644 index 0000000..4c89484 --- /dev/null +++ b/ElvUI_SLE/modules/sledatatexts/durability.lua @@ -0,0 +1,73 @@ +local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB +local DT = E:GetModule('DataTexts') + +local join = string.join + +local displayString = "" +local tooltipString = "%d%%" +local totalDurability = 0 +local current, max, lastPanel +local invDurability = {} +local slots = { + ["SecondaryHandSlot"] = L["Offhand"], + ["MainHandSlot"] = L["Main Hand"], + ["FeetSlot"] = L["Feet"], + ["LegsSlot"] = L["Legs"], + ["HandsSlot"] = L["Hands"], + ["WristSlot"] = L["Wrist"], + ["WaistSlot"] = L["Waist"], + ["ChestSlot"] = L["Chest"], + ["ShoulderSlot"] = L["Shoulder"], + ["HeadSlot"] = L["Head"], +} + +local function OnEvent(self, event, ...) + lastPanel = self + totalDurability = 100 + for index, value in pairs(slots) do + local slot = GetInventorySlotInfo(index) + current, max = GetInventoryItemDurability(slot) + if current then + invDurability[value] = (current/max)*100 + if ((current/max) * 100) < totalDurability then + totalDurability = (current/max) * 100 + end + end + end + if totalDurability <= 89 then + E:Flash(self, 0.53, true) + else + E:StopFlash(self) + end + local r,g,b = E:ColorGradient(totalDurability/100, .9,.2,.2, .9,.9,.2, .2,.9,.2) + local hex = E:RGBToHex(r,g,b) + self.text:SetFormattedText("%s: %s%d%%|r", DURABILITY, hex, totalDurability) +end + +local function Click() + ToggleCharacter("PaperDollFrame") +end + +local function OnEnter(self) + DT:SetupTooltip(self) + + for slot, durability in pairs(invDurability) do + DT.tooltip:AddDoubleLine(slot, format(tooltipString, durability), 1, 1, 1, E:ColorGradient(durability * 0.01, 1, 0, 0, 1, 1, 0, 0, 1, 0)) + end + + DT.tooltip:Show() +end + +--[[ + DT:RegisterDatatext(name, events, eventFunc, updateFunc, clickFunc, onEnterFunc, onLeaveFunc) + + name - name of the datatext (required) + events - must be a table with string values of event names to register + eventFunc - function that gets fired when an event gets triggered + updateFunc - onUpdate script target function + click - function to fire when clicking the datatext + onEnterFunc - function to fire OnEnter + onLeaveFunc - function to fire OnLeave, if not provided one will be set for you that hides the tooltip. +]] +DT:RegisterDatatext('Durability', {'PLAYER_ENTERING_WORLD', "UPDATE_INVENTORY_DURABILITY", "MERCHANT_SHOW"}, OnEvent, nil, Click, OnEnter) + diff --git a/ElvUI_SLE/modules/sledatatexts/load_datatexts.xml b/ElvUI_SLE/modules/sledatatexts/load_datatexts.xml index da5babc..ad43dd1 100644 --- a/ElvUI_SLE/modules/sledatatexts/load_datatexts.xml +++ b/ElvUI_SLE/modules/sledatatexts/load_datatexts.xml @@ -17,4 +17,5 @@