From 2f98e2ea74b4da2d3525af121d0774b03bcdca5e Mon Sep 17 00:00:00 2001 From: Darth Predator Date: Sun, 17 Sep 2017 14:49:56 +0300 Subject: [PATCH] I heard you like options... --- ElvUI_SLE/defaults/profile.lua | 14 +++++- ElvUI_SLE/modules/nameplates.lua | 62 ++++++++++++++++++++--- ElvUI_SLE/options/nameplates_c.lua | 96 +++++++++++++++++++++++++++++++++--- 3 files changed, 155 insertions(+), 17 deletions(-) diff --git a/ElvUI_SLE/defaults/profile.lua b/ElvUI_SLE/defaults/profile.lua index e10a104..f83c4aa 100644 --- a/ElvUI_SLE/defaults/profile.lua +++ b/ElvUI_SLE/defaults/profile.lua @@ -557,8 +557,18 @@ P["sle"] = { }, --Nameplate Options ["nameplates"] = { - ["showthreat"] = false, - ["targetcount"] = false, + ["threat"] = { + ["enable"] = false, + ["font"] = "PT Sans Narrow", + ["fontOutline"] = "OUTLINE", + ["size"] = 12, + }, + ["targetcount"] = { + ["enable"] = false, + ["font"] = "PT Sans Narrow", + ["fontOutline"] = "OUTLINE", + ["size"] = 12, + }, ["visibleRange"] = 60, }, --Order Halls diff --git a/ElvUI_SLE/modules/nameplates.lua b/ElvUI_SLE/modules/nameplates.lua index efbdbd4..49281be 100644 --- a/ElvUI_SLE/modules/nameplates.lua +++ b/ElvUI_SLE/modules/nameplates.lua @@ -12,7 +12,25 @@ end N.GroupMembers = {} -hooksecurefunc(NP, 'NAME_PLATE_CREATED', function(self, event, frame) +function N:UpdateFonts(plate) + if not plate then return end + + if plate.targetcount then + plate.targetcount:FontTemplate(E.LSM:Fetch("font", N.db.targetcount.font), N.db.targetcount.size, N.db.targetcount.fontOutline) + end + if plate.threatInfo then + plate.threatInfo:FontTemplate(E.LSM:Fetch("font", N.db.threat.font), N.db.threat.size, N.db.threat.fontOutline) + end +end + +function N:UpdatePlateFonts() + self:ForEachPlate("UpdateFonts") + if self.PlayerFrame__ then + self:UpdateFonts(self.PlayerFrame__.unitFrame) + end +end + +function N:CreateNameplate(event, frame) local myPlate = frame.unitFrame if not myPlate then return end @@ -27,10 +45,10 @@ hooksecurefunc(NP, 'NAME_PLATE_CREATED', function(self, event, frame) myPlate.targetcount:SetJustifyH("RIGHT") myPlate.targetCount = 0 end - myPlate.threatInfo:FontTemplate(E.LSM:Fetch("font", NP.db.font), NP.db.fontSize, NP.db.fontOutline) - myPlate.targetcount:FontTemplate(E.LSM:Fetch("font", NP.db.font), NP.db.fontSize, NP.db.fontOutline) + myPlate.threatInfo:FontTemplate(E.LSM:Fetch("font", N.db.threat.font), N.db.threat.size, N.db.threat.fontOutline) + myPlate.targetcount:FontTemplate(E.LSM:Fetch("font", N.db.targetcount.font), N.db.targetcount.size, N.db.targetcount.fontOutline) myPlate.targetcount:SetText() -end) +end hooksecurefunc(NP, 'Update_ThreatList', function(self, myPlate) if not myPlate then return end @@ -38,7 +56,7 @@ hooksecurefunc(NP, 'Update_ThreatList', function(self, myPlate) if myPlate.threatInfo then myPlate.threatInfo:SetText() - if E.db.sle.nameplates.showthreat and myPlate.UnitType == "ENEMY_NPC" then + if E.db.sle.nameplates.threat.enable and myPlate.UnitType == "ENEMY_NPC" then local unit = myPlate.unit if not unit then for i=1, 4 do @@ -67,7 +85,7 @@ function N:UpdateCount(event,unit,force) local plate = frame.unitFrame plate.targetcount:SetText("") plate.targetCount = 0 - if N.db.targetcount and plate.targetcount then + if N.db.targetcount.enable and plate.targetcount then if T.IsInRaid() or T.IsInGroup() then for name, unitid in T.pairs(N.GroupMembers) do if not T.UnitIsUnit(unitid,"player") and plate.unit then @@ -76,6 +94,7 @@ function N:UpdateCount(event,unit,force) if plate.guid and T.UnitExists(target) then if T.UnitGUID(target) == plate.guid then plate.targetCount = plate.targetCount + 1 end end + if not (plate.targetCount == 0) then plate.targetcount:SetText(T.format('[%d]', plate.targetCount)) end @@ -117,22 +136,49 @@ end function N:NAME_PLATE_UNIT_ADDED(event, unit, frame) local frame = frame or NP:GetNamePlateForUnit(unit); + N:UpdateCount(nil,"player", true) end function N:NAME_PLATE_UNIT_REMOVED(event, unit, frame, ...) local frame = frame or NP:GetNamePlateForUnit(unit); if not frame.unitFrame then return end - frame.unitFrame.unit = nil frame.unitFrame.threatInfo:SetText("") frame.unitFrame.targetcount:SetText("") frame.unitFrame.targetCount = 0 end +function N:UpdateAllFrame(frame) + if(frame == self.PlayerFrame__) then return end + + local unit = frame.unit + N:NAME_PLATE_UNIT_REMOVED("NAME_PLATE_UNIT_REMOVED", unit) + N:NAME_PLATE_UNIT_ADDED("NAME_PLATE_UNIT_ADDED", unit) +end + function N:Initialize() if not SLE.initialized or not E.private.nameplates.enable then return end - if E.db.sle.nameplate then E.db.sle.nameplates = E.db.sle.nameplate; E.db.sle.nameplate = nil end --DB converts + --DB converts + if E.db.sle.nameplates.targetcount and T.type(E.db.sle.nameplates.targetcount) == "boolean" then + local oldEnable = E.db.sle.nameplates.targetcount + E.db.sle.nameplates.targetcount = { + ["enable"] = oldEnable, + ["font"] = "PT Sans Narrow", + ["size"] = 12, + ["fontOutline"] = "OUTLINE", + } + end + if E.db.sle.nameplates.showthreat then + E.db.sle.nameplates.threat.enable = E.db.sle.nameplates.showthreat + E.db.sle.nameplates.showthreat = nil + end + N.db = E.db.sle.nameplates + + hooksecurefunc(NP, 'NAME_PLATE_CREATED', N.CreateNameplate) + hooksecurefunc(NP, "UpdateFonts", N.UpdateFonts) + hooksecurefunc(NP, "UpdateAllFrame", N.UpdateAllFrame) + self:RegisterEvent("GROUP_ROSTER_UPDATE", "StartRosterUpdate") self:RegisterEvent("UNIT_TARGET", "UpdateCount") self:RegisterEvent("NAME_PLATE_UNIT_REMOVED") diff --git a/ElvUI_SLE/options/nameplates_c.lua b/ElvUI_SLE/options/nameplates_c.lua index e67ee6e..ba22802 100644 --- a/ElvUI_SLE/options/nameplates_c.lua +++ b/ElvUI_SLE/options/nameplates_c.lua @@ -1,4 +1,5 @@ local SLE, T, E, L, V, P, G = unpack(select(2, ...)) +local NP = E:GetModule('NamePlates') local function configTable() if not SLE.initialized then return end @@ -7,8 +8,8 @@ local function configTable() name = L["NamePlates"], order = 14, disabled = function() return not E.private.nameplates.enable end, - get = function(info) return E.db.sle.nameplates[ info[#info] ] end, - set = function(info, value) E.db.sle.nameplates[ info[#info] ] = value; E:GetModule('NamePlates'):ConfigureAll() end, + -- get = function(info) return E.db.sle.nameplates[ info[#info] ] end, + -- set = function(info, value) E.db.sle.nameplates[ info[#info] ] = value; E:GetModule('NamePlates'):ConfigureAll() end, args = { header = { order = 1, @@ -16,16 +17,97 @@ local function configTable() name = L["NamePlates"], }, targetcount = { - type = "toggle", + type = "group", order = 2, name = L["Target Count"], - desc = L["Display the number of party / raid members targetting the nameplate unit."], + guiInline = true, + args = { + enable = { + type = "toggle", + order = 1, + name = L["Enable"], + desc = L["Display the number of party / raid members targetting the nameplate unit."], + get = function(info) return E.db.sle.nameplates.targetcount[ info[#info] ] end, + -- set = function(info, value) E.db.sle.nameplates.targetcount[ info[#info] ] = value; NP:ConfigureAll() end, + set = function(info, value) E.db.sle.nameplates.targetcount[ info[#info] ] = value; NP:ConfigureAll() end, + }, + font = { + type = "select", dialogControl = 'LSM30_Font', + order = 4, + name = L["Font"], + values = AceGUIWidgetLSMlists.font, + get = function(info) return E.db.sle.nameplates.targetcount[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.targetcount[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + size = { + order = 5, + name = FONT_SIZE, + type = "range", + min = 4, max = 25, step = 1, + get = function(info) return E.db.sle.nameplates.targetcount[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.targetcount[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + fontOutline = { + order = 6, + name = L["Font Outline"], + desc = L["Set the font outline."], + type = "select", + values = { + ['NONE'] = NONE, + ['OUTLINE'] = 'OUTLINE', + ['MONOCHROMEOUTLINE'] = 'MONOCROMEOUTLINE', + ['THICKOUTLINE'] = 'THICKOUTLINE', + }, + get = function(info) return E.db.sle.nameplates.targetcount[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.targetcount[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + }, }, - showthreat = { - type = "toggle", + threat = { + type = "group", order = 3, name = L["Threat Text"], - desc = L["Display threat level as text on targeted, boss or mouseover nameplate."], + guiInline = true, + args = { + enable = { + type = "toggle", + order = 1, + name = L["Enable"], + desc = L["Display threat level as text on targeted, boss or mouseover nameplate."], + get = function(info) return E.db.sle.nameplates.threat[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.threat[ info[#info] ] = value; NP:ConfigureAll() end, + }, + font = { + type = "select", dialogControl = 'LSM30_Font', + order = 4, + name = L["Font"], + values = AceGUIWidgetLSMlists.font, + get = function(info) return E.db.sle.nameplates.threat[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.threat[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + size = { + order = 5, + name = FONT_SIZE, + type = "range", + min = 4, max = 25, step = 1, + get = function(info) return E.db.sle.nameplates.threat[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.threat[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + fontOutline = { + order = 6, + name = L["Font Outline"], + desc = L["Set the font outline."], + type = "select", + values = { + ['NONE'] = NONE, + ['OUTLINE'] = 'OUTLINE', + ['MONOCHROMEOUTLINE'] = 'MONOCROMEOUTLINE', + ['THICKOUTLINE'] = 'THICKOUTLINE', + }, + get = function(info) return E.db.sle.nameplates.threat[ info[#info] ] end, + set = function(info, value) E.db.sle.nameplates.threat[ info[#info] ] = value; NP:UpdatePlateFonts() end, + }, + }, }, }, } -- 1.7.9.5