55 lines
1.9 KiB
Lua
55 lines
1.9 KiB
Lua
-- Outline addon (embedded in DLL, loaded from memory)
|
|
-- Part of WeirdUtils - only loaded when outline module is compiled
|
|
|
|
OUTLINE_VERSION = 1
|
|
|
|
BINDING_HEADER_OUTLINE = "Outline"
|
|
|
|
local frame = CreateFrame("Frame")
|
|
frame:RegisterEvent("ADDON_LOADED")
|
|
frame:RegisterEvent("PLAYER_LOGIN")
|
|
frame:RegisterEvent("PLAYER_TARGET_CHANGED")
|
|
|
|
local syncElapsed = 0
|
|
|
|
frame:SetScript("OnEvent", function()
|
|
if event == "PLAYER_LOGIN" then
|
|
OutlineSyncTarget()
|
|
local on = OutlineCommand()
|
|
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00Outline|r v" .. OUTLINE_VERSION .. " loaded (" .. (on and "enabled" or "disabled") .. ")")
|
|
elseif event == "PLAYER_TARGET_CHANGED" then
|
|
OutlineSyncTarget()
|
|
syncElapsed = 0
|
|
end
|
|
end)
|
|
|
|
-- AutoFix safety net: republish the current target from the safe Lua/main
|
|
-- thread at low frequency so a missed/early target event cannot disable Outline.
|
|
frame:SetScript("OnUpdate", function()
|
|
syncElapsed = syncElapsed + arg1
|
|
if syncElapsed >= 0.10 then
|
|
syncElapsed = 0
|
|
OutlineSyncTarget()
|
|
end
|
|
end)
|
|
|
|
SLASH_OUTLINE1 = "/outline"
|
|
SLASH_OUTLINE2 = "/ol"
|
|
SlashCmdList["OUTLINE"] = function(msg)
|
|
msg = string.lower(msg or "")
|
|
if msg == "" or msg == "status" then
|
|
local on = OutlineCommand()
|
|
DEFAULT_CHAT_FRAME:AddMessage("Outlines: " .. (on and "|cff00ff00ON|r" or "|cffff0000OFF|r"))
|
|
elseif msg == "on" or msg == "enable" then
|
|
OutlineCommand("on")
|
|
DEFAULT_CHAT_FRAME:AddMessage("Outlines |cff00ff00enabled|r")
|
|
elseif msg == "off" or msg == "disable" then
|
|
OutlineCommand("off")
|
|
DEFAULT_CHAT_FRAME:AddMessage("Outlines |cffff0000disabled|r")
|
|
else
|
|
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00Outline|r commands:")
|
|
DEFAULT_CHAT_FRAME:AddMessage(" /ol - Show status")
|
|
DEFAULT_CHAT_FRAME:AddMessage(" /ol on|off - Toggle outlines")
|
|
end
|
|
end
|