diff --git a/ElvUI_SLE/modules/marks/flares.lua b/ElvUI_SLE/modules/marks/flares.lua
index 2191531..4c887d1 100644
--- a/ElvUI_SLE/modules/marks/flares.lua
+++ b/ElvUI_SLE/modules/marks/flares.lua
@@ -1,5 +1,6 @@
local E, L, V, P, G, _ = unpack(ElvUI);
-local RF = E:NewModule('RaidFlares', 'AceHook-3.0', 'AceEvent-3.0');
+local RF = E:NewModule('SLE_RaidFlares', 'AceHook-3.0', 'AceEvent-3.0');
+local template = "SecureActionButtonTemplate"
BINDING_HEADER_SHADOWLIGHT_WORLDMARKER = "|cff1784d1Shadow & Light|r"
_G["BINDING_NAME_CLICK SquareFlareMarker:LeftButton"] = L["Square Flare"];
@@ -8,25 +9,28 @@ _G["BINDING_NAME_CLICK DiamondFlareMarker:LeftButton"] = L["Diamond Flare"];
_G["BINDING_NAME_CLICK CrossFlareMarker:LeftButton"] = L["Cross Flare"];
_G["BINDING_NAME_CLICK StarFlareMarker:LeftButton"] = L["Star Flare"];
-local mainFlares = CreateFrame("Frame", "Main_Flares", E.UIParent)
-local f1 = CreateFrame("Button", "SquareFlareMarker", Main_Flares, "SecureActionButtonTemplate")
-local f2 = CreateFrame("Button", "TriangleFlareMarker", Main_Flares, "SecureActionButtonTemplate")
-local f3 = CreateFrame("Button", "DiamondFlareMarker", Main_Flares, "SecureActionButtonTemplate")
-local f4 = CreateFrame("Button", "CrossFlareMarker", Main_Flares, "SecureActionButtonTemplate")
-local f5 = CreateFrame("Button", "StarFlareMarker", Main_Flares, "SecureActionButtonTemplate")
-local f6 = CreateFrame("Button", "ClearFlaresMarker", Main_Flares, "SecureActionButtonTemplate")
-
-local FlareB = {f1,f2,f3,f4,f5,f6}
+local mainFlares, f1, f2, f3, f4, f5, f6, FlareB
function RF:CreateFrame()
+ mainFlares = CreateFrame("Frame", "Main_Flares", E.UIParent)
mainFlares:Point("CENTER", E.UIParent, "CENTER", 0, 40);
mainFlares:SetFrameStrata('LOW');
mainFlares:CreateBackdrop();
mainFlares.backdrop:SetAllPoints();
mainFlares:Hide();
+
+ f1 = CreateFrame("Button", "SquareFlareMarker", Main_Flares, template)
+ f2 = CreateFrame("Button", "TriangleFlareMarker", Main_Flares, template)
+ f3 = CreateFrame("Button", "DiamondFlareMarker", Main_Flares, template)
+ f4 = CreateFrame("Button", "CrossFlareMarker", Main_Flares, template)
+ f5 = CreateFrame("Button", "StarFlareMarker", Main_Flares, template)
+ f6 = CreateFrame("Button", "ClearFlaresMarker", Main_Flares, template)
+
+ FlareB = {f1,f2,f3,f4,f5,f6}
end
function RF:SetupButton(button, flare)
+ if not mainFlares then return end
button:CreateBackdrop()
button.backdrop:SetAllPoints()
button:SetAttribute("type", "macro")
@@ -64,6 +68,7 @@ function RF:SetupButton(button, flare)
end
function RF:CreateButtons()
+ if not mainFlares then return end
RF:SetupButton(f1, "/clearworldmarker 1\n/worldmarker 1")
RF:SetupButton(f2, "/clearworldmarker 2\n/worldmarker 2")
RF:SetupButton(f3, "/clearworldmarker 3\n/worldmarker 3")
@@ -73,12 +78,14 @@ function RF:CreateButtons()
end
function RF:FrameButtonsSize()
+ if not mainFlares then return end
for i = 1, 6 do
FlareB[i]:Size(E.db.sle.flares.size)
end
end
function RF:FrameButtonsGrowth()
+ if not mainFlares then return end
local db = E.db.sle.flares
local size = db.size
local width, height, x, y, anchor, point
@@ -110,26 +117,30 @@ function RF:FrameButtonsGrowth()
end
function RF:UpdateVisibility()
+ if not mainFlares then return end
local inInstance, instanceType = IsInInstance()
local db = E.db.sle.flares
- if db.enabled then
- if (inInstance and instanceType ~= "pvp") and db.showinside then
- E.FrameLocks['Main_Flares'] = true
- mainFlares:Show()
- elseif not inInstance and db.showinside then
- E.FrameLocks['Main_Flares'] = nil
- mainFlares:Hide()
- elseif not db.showinside then
- E.FrameLocks['Main_Flares'] = true
- mainFlares:Show()
- end
- else
+ local show = false
+
+ if (inInstance and instanceType ~= "pvp") and db.showinside then
+ show = true
+ elseif not inInstance and db.showinside then
+ show = false
+ elseif not db.showinside then
+ show = true
+ end
+
+ if show then
E.FrameLocks['Main_Flares'] = true
+ mainFlares:Show()
+ else
+ E.FrameLocks['Main_Flares'] = nil
mainFlares:Hide()
end
end
function RF:Backdrop()
+ if not mainFlares then return end
if E.db.sle.flares.backdrop then
mainFlares.backdrop:Show()
else
@@ -138,19 +149,21 @@ function RF:Backdrop()
end
function RF:Update()
- RF:FrameButtonsSize()
- RF:FrameButtonsGrowth()
- RF:UpdateVisibility()
- RF:Backdrop()
+ if not mainFlares then return end
+ RF:FrameButtonsSize()
+ RF:FrameButtonsGrowth()
+ RF:UpdateVisibility()
+ RF:Backdrop()
end
function RF:Initialize()
- RF:CreateFrame()
- RF:Update()
- RF:CreateButtons()
- self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateVisibility");
+ if not E.private.sle.marks.flares then return end
+ RF:CreateFrame()
+ RF:Update()
+ RF:CreateButtons()
+ self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateVisibility");
- E:CreateMover(mainFlares, "FlareMover", "RF", nil, nil, nil, "ALL,S&L,S&L MISC")
+ E:CreateMover(mainFlares, "FlareMover", "RF", nil, nil, nil, "ALL,S&L,S&L MISC")
end
E:RegisterModule(RF:GetName())
\ No newline at end of file
diff --git a/ElvUI_SLE/modules/marks/marks.lua b/ElvUI_SLE/modules/marks/marks.lua
index 3897795..402c7c1 100755
--- a/ElvUI_SLE/modules/marks/marks.lua
+++ b/ElvUI_SLE/modules/marks/marks.lua
@@ -1,28 +1,30 @@
--Raid mark bar. Similar to quickmark which just semms to be impossible to skin
local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
-local RM = E:NewModule('RaidMarks', 'AceHook-3.0', 'AceEvent-3.0');
+local RM = E:NewModule('SLE_RaidMarks', 'AceHook-3.0', 'AceEvent-3.0');
local Mtemplate = "SecureActionButtonTemplate"
-
-local mark_menu = CreateFrame("Frame", "Mark_Menu", E.UIParent)
-local m1 = CreateFrame("Button", "M1", Mark_Menu, Mtemplate)
-local m2 = CreateFrame("Button", "M2", Mark_Menu, Mtemplate)
-local m3 = CreateFrame("Button", "M3", Mark_Menu, Mtemplate)
-local m4 = CreateFrame("Button", "M4", Mark_Menu, Mtemplate)
-local m5 = CreateFrame("Button", "M5", Mark_Menu, Mtemplate)
-local m6 = CreateFrame("Button", "M6", Mark_Menu, Mtemplate)
-local m7 = CreateFrame("Button", "M7", Mark_Menu, Mtemplate)
-local m8 = CreateFrame("Button", "M8", Mark_Menu, Mtemplate)
-
-local MarkB = {m1,m2,m3,m4,m5,m6,m7,m8}
-
+local IsInInstance = IsInInstance
+local UnitExists = UnitExists
+local mark_menu, m1, m2, m3, m4, m5, m6, m7, m8, MarkB
--Main frame
function RM:CreateFrame()
+ mark_menu = CreateFrame("Frame", "Mark_Menu", E.UIParent)
mark_menu:Point("BOTTOMRIGHT", RightChatTab, "TOPRIGHT", 2, 3) --Default positon
mark_menu:SetFrameStrata('LOW');
mark_menu:CreateBackdrop();
mark_menu.backdrop:SetAllPoints();
+ m1 = CreateFrame("Button", "M1", Mark_Menu, Mtemplate)
+ m2 = CreateFrame("Button", "M2", Mark_Menu, Mtemplate)
+ m3 = CreateFrame("Button", "M3", Mark_Menu, Mtemplate)
+ m4 = CreateFrame("Button", "M4", Mark_Menu, Mtemplate)
+ m5 = CreateFrame("Button", "M5", Mark_Menu, Mtemplate)
+ m6 = CreateFrame("Button", "M6", Mark_Menu, Mtemplate)
+ m7 = CreateFrame("Button", "M7", Mark_Menu, Mtemplate)
+ m8 = CreateFrame("Button", "M8", Mark_Menu, Mtemplate)
+
+ MarkB = {m1,m2,m3,m4,m5,m6,m7,m8}
+
mark_menu:Hide()
end
@@ -40,6 +42,7 @@ end
--Buttons creation
function RM:CreateButtons()
+ if not mark_menu then return end
for i = 1, 8 do
RM:SetupButton(MarkB[i], 9 - i)
end
@@ -47,6 +50,7 @@ end
--Setting/updating buttons' size
function RM:FrameButtonsSize()
+ if not mark_menu then return end
for i = 1, 8 do
MarkB[i]:Size(E.db.sle.marks.size)
end
@@ -54,6 +58,7 @@ end
--Setting growth direction for buttons
function RM:FrameButtonsGrowth()
+ if not mark_menu then return end
local db = E.db.sle.marks
local size = db.size
local width, height, x, y, anchor, point
@@ -86,26 +91,51 @@ end
--Visibility/enable check
function RM:UpdateVisibility()
+ if not mark_menu then return end
local inInstance, instanceType = IsInInstance()
local db = E.db.sle.marks
- if db.enabled then
- if (inInstance and instanceType ~= "pvp") and db.showinside then
- E.FrameLocks['Mark_Menu'] = true -- Because theyre thinking of adding battle pets to raids
- mark_menu:Show()
- elseif not inInstance and db.showinside then
- E.FrameLocks['Mark_Menu'] = nil
- mark_menu:Hide()
- elseif not db.showinside then
- E.FrameLocks['Mark_Menu'] = true
- mark_menu:Show()
+ local show = false
+ if (inInstance and instanceType ~= "pvp") and db.showinside then
+ if db.target and UnitExists("target") then
+ show = true
+ elseif db.target and not UnitExists("target") then
+ show = false
+ else
+ show = true
end
- else
+ elseif not inInstance and db.showinside then
+ show = false
+ elseif not db.showinside then
+ if db.target and UnitExists("target") then
+ show = true
+ elseif db.target and not UnitExists("target") then
+ show = false
+ else
+ show = true
+ end
+ end
+
+ if show then
E.FrameLocks['Mark_Menu'] = true
+ mark_menu:Show()
+ else
+ E.FrameLocks['Mark_Menu'] = nil
mark_menu:Hide()
end
end
+function RM:Target()
+ if not mark_menu then return end
+ local db = E.db.sle.marks
+ if db.target then
+ self:RegisterEvent("PLAYER_TARGET_CHANGED", "UpdateVisibility");
+ else
+ self:UnregisterEvent("PLAYER_TARGET_CHANGED");
+ end
+end
+
function RM:Backdrop()
+ if not mark_menu then return end
if E.db.sle.marks.backdrop then
mark_menu.backdrop:Show()
else
@@ -114,6 +144,7 @@ function RM:Backdrop()
end
function RM:Update()
+ if not mark_menu then return end
RM:FrameButtonsSize()
RM:FrameButtonsGrowth()
RM:UpdateVisibility()
@@ -121,10 +152,12 @@ function RM:Update()
end
function RM:Initialize()
+ if not E.private.sle.marks.marks then return end
RM:CreateFrame()
RM:Update()
RM:CreateButtons()
self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateVisibility");
+ RM:Target()
E:CreateMover(mark_menu, "MarkMover", "RM", nil, nil, nil, "ALL,S&L,S&L MISC")
end
diff --git a/ElvUI_SLE/modules/marks/options.lua b/ElvUI_SLE/modules/marks/options.lua
index 9a15de0..e92d261 100755
--- a/ElvUI_SLE/modules/marks/options.lua
+++ b/ElvUI_SLE/modules/marks/options.lua
@@ -1,6 +1,6 @@
local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
-local RM = E:GetModule('RaidMarks')
-local RF = E:GetModule('RaidFlares')
+local RM = E:GetModule('SLE_RaidMarks')
+local RF = E:GetModule('SLE_RaidFlares')
local function configTable()
--Main options group
@@ -29,14 +29,14 @@ E.Options.args.sle.args.options.args.marks = {
type = "toggle",
name = L["Enable"],
desc = L["Show/Hide raid marks."],
- get = function(info) return E.db.sle.marks.enabled end,
- set = function(info, value) E.db.sle.marks.enabled = value; RM:UpdateVisibility() end
+ get = function(info) return E.private.sle.marks.marks end,
+ set = function(info, value) E.private.sle.marks.marks = value; E:StaticPopup_Show("PRIVATE_RL") end
},
backdrop = {
order = 3,
type = "toggle",
name = L["Backdrop"],
- disabled = function() return not E.db.sle.marks.enabled end,
+ disabled = function() return not E.private.sle.marks.marks end,
get = function(info) return E.db.sle.marks.backdrop end,
set = function(info, value) E.db.sle.marks.backdrop = value; RM:Backdrop() end
},
@@ -45,7 +45,7 @@ E.Options.args.sle.args.options.args.marks = {
type = 'execute',
name = L['Restore Defaults'],
desc = L["Reset these options to defaults"],
- disabled = function() return not E.db.sle.marks.enabled end,
+ disabled = function() return not E.private.sle.marks.marks end,
func = function() E:GetModule('SLE'):Reset(nil, nil, nil, nil, true) end,
},
spacer = {
@@ -58,26 +58,35 @@ E.Options.args.sle.args.options.args.marks = {
type = "toggle",
name = L["Show only in instances"],
desc = L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."],
- disabled = function() return not E.db.sle.marks.enabled end,
+ disabled = function() return not E.private.sle.marks.marks end,
get = function(info) return E.db.sle.marks.showinside end,
set = function(info, value) E.db.sle.marks.showinside = value; RM:UpdateVisibility() end
},
- size = {
+ target = {
order = 7,
+ type = "toggle",
+ name = L["Target Exists"],
+ desc = L["Selecting this option will have the Raid Markers appear only when you have a target."],
+ disabled = function() return not E.private.sle.marks.marks end,
+ get = function(info) return E.db.sle.marks.target end,
+ set = function(info, value) E.db.sle.marks.target = value; RM:Target(); RM:UpdateVisibility() end
+ },
+ size = {
+ order = 8,
type = "range",
name = L['Size'],
desc = L["Sets size of buttons"],
- disabled = function() return not E.db.sle.marks.enabled end,
+ disabled = function() return not E.private.sle.marks.marks end,
min = 15, max = 30, step = 1,
get = function(info) return E.db.sle.marks.size end,
set = function(info, value) E.db.sle.marks.size = value; RM:FrameButtonsGrowth(); RM:FrameButtonsSize() end,
},
growth = {
- order = 8,
+ order = 9,
type = "select",
name = L["Direction"],
desc = L["Change the direction of buttons growth from the skull marker"],
- disabled = function() return not E.db.sle.marks.enabled end,
+ disabled = function() return not E.private.sle.marks.marks end,
get = function(info) return E.db.sle.marks.growth end,
set = function(info, value) E.db.sle.marks.growth = value; RM:FrameButtonsGrowth() end,
values = {
@@ -104,14 +113,14 @@ E.Options.args.sle.args.options.args.marks = {
type = "toggle",
name = L["Enable"],
desc = L["Show/Hide Raid Flares."],
- get = function(info) return E.db.sle.flares.enabled end,
- set = function(info, value) E.db.sle.flares.enabled = value; RF:UpdateVisibility() end
+ get = function(info) return E.private.sle.marks.flares end,
+ set = function(info, value) E.private.sle.marks.flares = value; E:StaticPopup_Show("PRIVATE_RL") end
},
backdrop = {
order = 3,
type = "toggle",
name = L["Backdrop"],
- disabled = function() return not E.db.sle.flares.enabled end,
+ disabled = function() return not E.private.sle.marks.flares end,
get = function(info) return E.db.sle.flares.backdrop end,
set = function(info, value) E.db.sle.flares.backdrop = value; RF:Backdrop() end
},
@@ -125,7 +134,7 @@ E.Options.args.sle.args.options.args.marks = {
type = "toggle",
name = L["Show only in instances"],
desc = L["Selecting this option will have the Raid Flares appear only while in a raid or dungeon."],
- disabled = function() return not E.db.sle.flares.enabled end,
+ disabled = function() return not E.private.sle.marks.flares end,
get = function(info) return E.db.sle.flares.showinside end,
set = function(info, value) E.db.sle.flares.showinside = value; RF:UpdateVisibility() end
},
@@ -133,7 +142,7 @@ E.Options.args.sle.args.options.args.marks = {
order = 7,
type = "toggle",
name = L["Show Tooltip"],
- disabled = function() return not E.db.sle.flares.enabled end,
+ disabled = function() return not E.private.sle.marks.flares end,
get = function(info) return E.db.sle.flares.tooltips end,
set = function(info, value) E.db.sle.flares.tooltips = value; end
},
@@ -142,7 +151,7 @@ E.Options.args.sle.args.options.args.marks = {
type = "range",
name = L['Size'],
desc = L["Sets size of buttons"],
- disabled = function() return not E.db.sle.flares.enabled end,
+ disabled = function() return not E.private.sle.marks.flares end,
min = 15, max = 30, step = 1,
get = function(info) return E.db.sle.flares.size end,
set = function(info, value) E.db.sle.flares.size = value; RF:FrameButtonsGrowth(); RF:FrameButtonsSize() end,
@@ -152,7 +161,7 @@ E.Options.args.sle.args.options.args.marks = {
type = "select",
name = L["Direction"],
desc = L["Change the direction of buttons growth from the square marker"],
- disabled = function() return not E.db.sle.flares.enabled end,
+ disabled = function() return not E.private.sle.marks.flares end,
get = function(info) return E.db.sle.flares.growth end,
set = function(info, value) E.db.sle.flares.growth = value; RF:FrameButtonsGrowth() end,
values = {