From eab997f4d8cfa80e2286c306576185e2dca5cd93 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Fri, 11 Jul 2014 20:50:59 +0400 Subject: [PATCH] Datatexts and Dashboard --- ElvUI_SLE/modules/dashboard/dashboard.lua | 87 +++ ElvUI_SLE/modules/dashboard/datapanels/bags.lua | 25 + .../modules/dashboard/datapanels/durability.lua | 65 +++ ElvUI_SLE/modules/dashboard/datapanels/fps.lua | 23 + ElvUI_SLE/modules/dashboard/datapanels/ms.lua | 24 + ElvUI_SLE/modules/dashboard/load_dashboard.xml | 7 + ElvUI_SLE/modules/datatexts.lua | 110 ++++ ElvUI_SLE/modules/sledatatexts/agility.lua | 21 + ElvUI_SLE/modules/sledatatexts/currency.lua | 290 ++++++++++ ElvUI_SLE/modules/sledatatexts/energyregen.lua | 21 + ElvUI_SLE/modules/sledatatexts/friends.lua | 564 ++++++++++++++++++++ ElvUI_SLE/modules/sledatatexts/guild.lua | 469 ++++++++++++++++ ElvUI_SLE/modules/sledatatexts/intellect.lua | 21 + ElvUI_SLE/modules/sledatatexts/itemlevel.lua | 263 +++++++++ ElvUI_SLE/modules/sledatatexts/lfr.lua | 407 ++++++++++++++ ElvUI_SLE/modules/sledatatexts/load_datatexts.xml | 21 + ElvUI_SLE/modules/sledatatexts/mail.lua | 86 +++ ElvUI_SLE/modules/sledatatexts/micromenu.lua | 73 +++ ElvUI_SLE/modules/sledatatexts/played.lua | 167 ++++++ ElvUI_SLE/modules/sledatatexts/range.lua | 53 ++ ElvUI_SLE/modules/sledatatexts/regen.lua | 28 + ElvUI_SLE/modules/sledatatexts/spirit.lua | 21 + ElvUI_SLE/modules/sledatatexts/stamina.lua | 21 + ElvUI_SLE/modules/sledatatexts/strength.lua | 21 + ElvUI_SLE/modules/sledatatexts/time.lua | 214 ++++++++ ElvUI_SLE/modules/sledatatexts/version.lua | 46 ++ 26 files changed, 3148 insertions(+) create mode 100644 ElvUI_SLE/modules/dashboard/dashboard.lua create mode 100644 ElvUI_SLE/modules/dashboard/datapanels/bags.lua create mode 100644 ElvUI_SLE/modules/dashboard/datapanels/durability.lua create mode 100644 ElvUI_SLE/modules/dashboard/datapanels/fps.lua create mode 100644 ElvUI_SLE/modules/dashboard/datapanels/ms.lua create mode 100644 ElvUI_SLE/modules/dashboard/load_dashboard.xml create mode 100644 ElvUI_SLE/modules/datatexts.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/agility.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/currency.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/energyregen.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/friends.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/guild.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/intellect.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/itemlevel.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/lfr.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/load_datatexts.xml create mode 100644 ElvUI_SLE/modules/sledatatexts/mail.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/micromenu.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/played.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/range.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/regen.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/spirit.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/stamina.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/strength.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/time.lua create mode 100644 ElvUI_SLE/modules/sledatatexts/version.lua diff --git a/ElvUI_SLE/modules/dashboard/dashboard.lua b/ElvUI_SLE/modules/dashboard/dashboard.lua new file mode 100644 index 0000000..ffe016a --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/dashboard.lua @@ -0,0 +1,87 @@ +--[[ Dashboard for ElvUI +Credits : Sinaris, Elv +made for ElvUI under Sinaris permission. Big thanks :) +]] + +local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB +local DTP = E:GetModule('SLE_DTPanels') +local DT = E:GetModule('DataTexts') +local LSM = LibStub("LibSharedMedia-3.0") +if E.db.sle == nil then E.db.sle = {} end +if E.db.sle.datatext == nil then E.db.sle.datatext = {} end +if E.db.sle.datatext.dashboard == nil then E.db.sle.datatext.dashboard = {} end +if E.db.sle.datatext.dashboard.width == nil then E.db.sle.datatext.dashboard.width = 100 end +local DTPANELS_WIDTH = E.db.sle.datatext.dashboard.width +local DTPANELS_HEIGHT = 20 +local PANEL_SPACING = 1 +local font = LSM:Fetch("font", E.db.datatexts.font) +local fontsize = E.db.datatexts.fontSize +local outline = E.db.datatexts.fontOutline + +local board = {} + +local bholder = CreateFrame("Frame", "BoardsHolder", E.UIParent) +bholder:Point('TOPLEFT', E.UIParent, 'TOPLEFT', 0, -21) +bholder:Size(((DTPANELS_WIDTH*4)+(PANEL_SPACING*3)), DTPANELS_HEIGHT) + +E:CreateMover(BoardsHolder, "Dashboard", L["Dashboard"], nil, nil, nil, "ALL,S&L,S&L MISC") + +local board = CreateFrame('frame', 'board', BoardsHolder) + +for i = 1, 4 do + board[i] = CreateFrame('frame', 'board'..i, bholder) + board[i]:SetFrameLevel(2) + board[i]:Size(DTPANELS_WIDTH, DTPANELS_HEIGHT) + board[i]:SetTemplate('Default', true) + board[i]:CreateShadow('Default') + + if i == 1 then + board[i]:Point('TOPLEFT', bholder, 'TOPLEFT', 0, 0) + else + board[i]:Point('LEFT', board[i-1], 'RIGHT', PANEL_SPACING, 0) + end + + board[i].Status = CreateFrame("StatusBar", "PanelStatus" .. i, board[i]) + board[i].Status:SetFrameLevel(12) + board[i].Status:SetStatusBarTexture(E["media"].normTex) + board[i].Status:SetMinMaxValues(0, 100) + board[i].Status:SetStatusBarColor(.4, .4, .4, 1) + board[i].Status:Point("TOPLEFT", board[i], "TOPLEFT", 2, -2) + board[i].Status:Point("BOTTOMRIGHT", board[i], "BOTTOMRIGHT", -2, 2) + + board[i].Text = board[i].Status:CreateFontString( nil, "OVERLAY" ) + board[i].Text:FontTemplate() + board[i].Text:SetFont(font, fontsize, outline) + board[i].Text:Point("LEFT", board[i], "LEFT", 3, 0) + board[i].Text:SetJustifyV('MIDDLE') + board[i].Text:SetShadowColor(0, 0, 0) + board[i].Text:SetShadowOffset(1.25, -1.25) +end + +function DTP:DashboardShow() + if E.db.sle.datatext.dashboard.enable then + E.FrameLocks['BoardsHolder'] = true + BoardsHolder:Show() + else + E.FrameLocks['BoardsHolder'] = nil + BoardsHolder:Hide() + end +end + +DT.LoadDataTextsSLE = DT.LoadDataTexts +function DT:LoadDataTexts() + DT.LoadDataTextsSLE(self) + font = LSM:Fetch("font", E.db.datatexts.font) + fontsize = E.db.datatexts.fontSize + outline = E.db.datatexts.fontOutline + for i = 1, 4 do + board[i].Text:SetFont(font, fontsize, outline) + end +end + +function DTP:DashWidth() + for i = 1, 4 do + board[i]:Size(E.db.sle.datatext.dashboard.width, DTPANELS_HEIGHT) + end + bholder:Size(((E.db.sle.datatext.dashboard.width*4)+(PANEL_SPACING*3)), DTPANELS_HEIGHT) +end \ No newline at end of file diff --git a/ElvUI_SLE/modules/dashboard/datapanels/bags.lua b/ElvUI_SLE/modules/dashboard/datapanels/bags.lua new file mode 100644 index 0000000..5545571 --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/datapanels/bags.lua @@ -0,0 +1,25 @@ +local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB + +local LastUpdate = 1 + +board[2].Status:SetScript("OnUpdate", function(self) + local free, total, used = 0, 0, 0 + for i = 0, NUM_BAG_SLOTS do + free, total = free + GetContainerNumFreeSlots(i), total + GetContainerNumSlots(i) + end + used = total - free + value = (used * 120 / total) + + self:SetMinMaxValues(0, total) + self:SetValue(used) + board[2].Text:SetText(L["Bags"]..": " .. used .. " /" .. total) + if(used * 100 / total >= 75) then + self:SetStatusBarColor(1, 75 / 255, 75 / 255, 0.5, .8) + elseif used * 100 / total < 75 and used * 100 / total > 40 then + self:SetStatusBarColor(1, 180 / 255, 0, .8) + else + self:SetStatusBarColor(30 / 255, 1, 30 / 255, .8) + end +end) + +board[2].Status:RegisterEvent("BAG_UPDATE") diff --git a/ElvUI_SLE/modules/dashboard/datapanels/durability.lua b/ElvUI_SLE/modules/dashboard/datapanels/durability.lua new file mode 100644 index 0000000..81ac536 --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/datapanels/durability.lua @@ -0,0 +1,65 @@ +local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB + +local displayString = "" +local total, totalDurability, totalPerc = 0, 0, 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'], +} + +board[1].Status:SetScript("OnEvent", function( self, ...) + + lastPanel = self + total = 0 + totalDurability = 0 + totalPerc = 0 + + for index, value in pairs(slots) do + local slot = GetInventorySlotInfo(index) + current, max = GetInventoryItemDurability(slot) + + if current then + totalDurability = totalDurability + current + invDurability[value] = (current/max)*100 + totalPerc = totalPerc + (current/max)*100 + total = total + 1 + end + end + + result = totalPerc/total + + if total > 0 then + board[1].Text:SetFormattedText(displayString, result) + end + + self:SetMinMaxValues(0, 100) + self:SetValue(result) + + if( result >= 75 ) then + self:SetStatusBarColor(30 / 255, 1, 30 / 255, .8) + elseif result < 75 and result > 40 then + self:SetStatusBarColor(1, 180 / 255, 0, .8) + else + self:SetStatusBarColor(1, 75 / 255, 75 / 255, 0.5, .8) + end +end) + +local function ValueColorUpdate(hex, r, g, b) + displayString = string.join("", DURABILITY, ": ", hex, "%d%%|r") +end +E['valueColorUpdateFuncs'][ValueColorUpdate] = true + +board[1].Status:RegisterEvent("UPDATE_INVENTORY_DURABILITY") +board[1].Status:RegisterEvent("MERCHANT_SHOW") +board[1].Status:RegisterEvent("PLAYER_ENTERING_WORLD") \ No newline at end of file diff --git a/ElvUI_SLE/modules/dashboard/datapanels/fps.lua b/ElvUI_SLE/modules/dashboard/datapanels/fps.lua new file mode 100644 index 0000000..73be1b0 --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/datapanels/fps.lua @@ -0,0 +1,23 @@ +local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB + +local LastUpdate = 1 + +board[3].Status:SetScript("OnUpdate", function( self, elapsed) + LastUpdate = LastUpdate - elapsed + + if(LastUpdate < 0) then + self:SetMinMaxValues(0, 200) + local value = floor(GetFramerate()) + local max = 120 + self:SetValue(value) + board[3].Text:SetText("FPS: " .. value) + if(value * 100 / max >= 75) then + self:SetStatusBarColor(30 / 255, 1, 30 / 255, .8) + elseif value * 100 / max < 75 and value * 100 / max > 40 then + self:SetStatusBarColor(1, 180 / 255, 0, .8) + else + self:SetStatusBarColor(1, 75 / 255, 75 / 255, 0.5, .8) + end + LastUpdate = 1 + end +end) diff --git a/ElvUI_SLE/modules/dashboard/datapanels/ms.lua b/ElvUI_SLE/modules/dashboard/datapanels/ms.lua new file mode 100644 index 0000000..11653d5 --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/datapanels/ms.lua @@ -0,0 +1,24 @@ +local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB + +local LastUpdate = 1 + +board[4].Status:SetScript("OnUpdate", function(self, elapsed) + LastUpdate = LastUpdate - elapsed + + if(LastUpdate < 0) then + self:SetMinMaxValues(0, 200) + local value = (select( 3, GetNetStats())) + local max = 200 + self:SetValue(value) + board[4].Text:SetText("MS: " .. value) + + if( value * 100 / max <= 35) then + self:SetStatusBarColor(30 / 255, 1, 30 / 255, .8) + elseif value * 100 / max > 35 and value * 100 / max < 75 then + self:SetStatusBarColor(1, 180 / 255, 0, .8) + else + self:SetStatusBarColor(1, 75 / 255, 75 / 255, 0.5, .8) + end + LastUpdate = 1 + end +end) diff --git a/ElvUI_SLE/modules/dashboard/load_dashboard.xml b/ElvUI_SLE/modules/dashboard/load_dashboard.xml new file mode 100644 index 0000000..c77944e --- /dev/null +++ b/ElvUI_SLE/modules/dashboard/load_dashboard.xml @@ -0,0 +1,7 @@ + +