diff --git a/ElvUI/Modules/NamePlates/Elements/ComboPoints.lua b/ElvUI/Modules/NamePlates/Elements/ComboPoints.lua index e9148e1..d9bd590 100644 --- a/ElvUI/Modules/NamePlates/Elements/ComboPoints.lua +++ b/ElvUI/Modules/NamePlates/Elements/ComboPoints.lua @@ -44,7 +44,7 @@ function mod:ConfigureElement_CPoints(frame) end function mod:ConstructElement_CPoints(parent) - local frame = CreateFrame("Frame", nil, parent.HealthBar) + local frame = CreateFrame("Frame", "$parentComboPoints", parent.HealthBar) frame:SetPoint("CENTER", parent.HealthBar, "BOTTOM") frame:SetWidth(68) frame:SetHeight(1) diff --git a/ElvUI/Modules/NamePlates/Elements/Glow.lua b/ElvUI/Modules/NamePlates/Elements/Glow.lua index efdebce..8fdbe49 100644 --- a/ElvUI/Modules/NamePlates/Elements/Glow.lua +++ b/ElvUI/Modules/NamePlates/Elements/Glow.lua @@ -127,8 +127,7 @@ function mod:ConfigureElement_Glow(frame) end function mod:ConstructElement_Glow(frame) - local f = CreateFrame("Frame", nil, frame) - f:SetFrameLevel(frame.HealthBar:GetFrameLevel() - 1) + local f = CreateFrame("Frame", "$parentGlow", frame) f:SetBackdrop({edgeFile = LSM:Fetch("border", "ElvUI GlowBorder"), edgeSize = E:Scale(6)}) f:Hide() diff --git a/ElvUI/Modules/NamePlates/Elements/HealthBar.lua b/ElvUI/Modules/NamePlates/Elements/HealthBar.lua index 88538c0..eab714c 100644 --- a/ElvUI/Modules/NamePlates/Elements/HealthBar.lua +++ b/ElvUI/Modules/NamePlates/Elements/HealthBar.lua @@ -139,7 +139,7 @@ function mod:ConfigureElement_HealthBar(frame, configuring) end function mod:ConstructElement_HealthBar(parent) - local frame = CreateFrame("StatusBar", nil, parent) + local frame = CreateFrame("StatusBar", "$parentHealthBar", parent) self:StyleFrame(frame) --[[ frame:SetScript("OnSizeChanged", function() diff --git a/ElvUI/Modules/NamePlates/Elements/Highlight.lua b/ElvUI/Modules/NamePlates/Elements/Highlight.lua index b172a24..01973fe 100644 --- a/ElvUI/Modules/NamePlates/Elements/Highlight.lua +++ b/ElvUI/Modules/NamePlates/Elements/Highlight.lua @@ -29,7 +29,7 @@ function mod:ConfigureElement_Highlight(frame) end function mod:ConstructElement_Highlight(frame) - local f = CreateFrame("Frame", nil, frame) + local f = CreateFrame("Frame", "$parentHighlight", frame) f.texture = frame.HealthBar:CreateTexture(nil, "ARTWORK") f.texture:SetVertexColor(1, 1, 1, 0.3) f.texture:Hide() diff --git a/ElvUI/Modules/NamePlates/NamePlates.lua b/ElvUI/Modules/NamePlates/NamePlates.lua index bb2ea2a..a08244e 100644 --- a/ElvUI/Modules/NamePlates/NamePlates.lua +++ b/ElvUI/Modules/NamePlates/NamePlates.lua @@ -55,8 +55,8 @@ function mod:SetPlateFrameLevel(frame, level, isTarget) end frame:SetFrameLevel(level+1) - frame.HealthBar:SetFrameLevel(level+1) - frame.Glow:SetFrameLevel(frame:GetFrameLevel()-1) + frame.HealthBar:SetFrameLevel(level+2) + frame.Glow:SetFrameLevel(frame.HealthBar:GetFrameLevel()-1) frame.Buffs:SetFrameLevel(level+1) frame.Debuffs:SetFrameLevel(level+1) end @@ -334,6 +334,12 @@ function mod:OnShow(self, isUpdate) self.UnitFrame.UnitClass = mod:UnitClass(self.UnitFrame.oldName:GetText(), unitType) self.UnitFrame.UnitReaction = unitReaction + if unitType == "FRIENDLY_PLAYER" or unitType == "FRIENDLY_NPC" then + self.UnitFrame:EnableMouse(not mod.db.clickThrough.friendly) + else + self.UnitFrame:EnableMouse(not mod.db.clickThrough.enemy) + end + if not self.UnitFrame.UnitClass then queryList[self.UnitFrame.UnitName] = self.UnitFrame end @@ -380,6 +386,9 @@ function mod:OnShow(self, isUpdate) mod:UpdateElement_All(self.UnitFrame) self.UnitFrame:Show() + + mod:UpdateElement_Filters(self.UnitFrame, "NAME_PLATE_UNIT_ADDED") + mod:ForEachPlate("ResetNameplateFrameLevel") --keep this after `UpdateElement_Filters` end function mod:OnHide(self) @@ -434,21 +443,26 @@ end function mod:ConfigureAll() if E.private.nameplates.enable ~= true then return end + self:StyleFilterConfigureEvents() self:ForEachPlate("UpdateAllFrame") self:UpdateCVars() end -function mod:ForEachPlate(functionToRun, ...) +function mod:ForEachPlate(functionToRun) for frame in pairs(self.CreatedPlates) do if frame and frame.UnitFrame then - self[functionToRun](self, frame.UnitFrame, unpack(arg)) + self[functionToRun](self, frame.UnitFrame) end end + + if functionToRun == "ResetNameplateFrameLevel" then + mod.CollectedFrameLevelCount = 1 + end end -function mod:ForEachVisiblePlate(functionToRun, ...) +function mod:ForEachVisiblePlate(functionToRun, a1, a2) for frame in pairs(self.VisiblePlates) do - self[functionToRun](self, frame, unpack(arg)) + self[functionToRun](self, frame, a1, a2) end end @@ -507,6 +521,16 @@ function mod:OnCreated(frame) frame.UnitFrame.plateID = plateID frame.UnitFrame:SetScript("OnEvent", self.OnEvent) +--[[ + frame.UnitFrame:SetScript("OnEnter", function() + + end) +]] + frame.UnitFrame:SetScript("OnMouseDown", function() + if arg1 == "RightButton" then + MouselookStart() + end + end) frame.UnitFrame:SetScript("OnClick", function() frame:Click() end) @@ -569,10 +593,21 @@ function mod:OnCreated(frame) self.VisiblePlates[frame.UnitFrame] = true end -function mod:OnEvent(event, unit, ...) - if not self.unit then return end +function mod:OnEvent() + if not arg1 and not this.unit then return end + if this.unit ~= arg1 then return end - mod:UpdateElement_Cast(self, event, unit, unpack(arg)) + if event == "UPDATE_MOUSEOVER_UNIT" then + mod:UpdateElement_Highlight(this) + else + mod:UpdateElement_Cast(this, event, arg1, arg2) + end +end + +function mod:RegisterEvents(frame) + if not frame.unit then return end + + frame:RegisterEvent("UPDATE_MOUSEOVER_UNIT") end function mod:QueueObject(object) @@ -609,7 +644,7 @@ function mod:OnUpdate() frame.alpha = 1 end - frame:GetParent():SetAlpha(1) + --frame:GetParent():SetAlpha(1) frame.isTarget = mod.hasTarget and frame.alpha == 1 end diff --git a/ElvUI_Config/Nameplates.lua b/ElvUI_Config/Nameplates.lua index ec1510f..4d5bc76 100644 --- a/ElvUI_Config/Nameplates.lua +++ b/ElvUI_Config/Nameplates.lua @@ -792,18 +792,17 @@ E.Options.args.nameplate = { guiInline = true, name = L["Click Through"], get = function(info) return E.db.nameplates.clickThrough[ info[getn(info)] ] end, + set = function(info, value) E.db.nameplates.clickThrough[ info[getn(info)] ] = value; NP:ConfigureAll() end, args = { friendly = { order = 2, type = "toggle", name = L["Friendly"], - --set = function(info, value) E.db.nameplates.clickThrough.friendly = value; NP:SetNamePlateFriendlyClickThrough() end, }, enemy = { order = 3, type = "toggle", name = L["Enemy"], - --set = function(info, value) E.db.nameplates.clickThrough.enemy = value; NP:SetNamePlateEnemyClickThrough() end, }, }, },