load StateDriver libraries & update files as needed (Needs more testing)

This commit is contained in:
Crum
2018-06-07 01:28:29 -05:00
parent cd7ea3556e
commit 26ca83f608
10 changed files with 910 additions and 109 deletions
+65 -75
View File
@@ -1,27 +1,29 @@
local E, L, V, P, G = unpack(ElvUI)
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
local ns = oUF
local ElvUF = ns.oUF
local ns = oUF;
local ElvUF = ns.oUF;
local _G = _G;
local setmetatable, getfenv, setfenv = setmetatable, getfenv, setfenv;
local type, unpack, select, pairs = type, unpack, select, pairs;
local min, random = math.min, math.random;
local format = string.format;
local UnitMana = UnitMana;
local UnitManaMax = UnitManaMax;
local UnitHealth = UnitHealth;
local UnitHealthMax = UnitHealthMax;
local UnitName = UnitName;
local UnitClass = UnitClass;
local InCombatLockdown = InCombatLockdown;
local UnregisterUnitWatch = UnregisterUnitWatch;
local RegisterUnitWatch = RegisterUnitWatch;
local RegisterStateDriver = RegisterStateDriver;
local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE;
local CLASS_SORT_ORDER = CLASS_SORT_ORDER;
local MAX_RAID_MEMBERS = MAX_RAID_MEMBERS;
--Cache global variables
--Lua functions
local _G = _G
local setmetatable, getfenv, setfenv = setmetatable, getfenv, setfenv
local type, unpack, select, pairs = type, unpack, select, pairs
local min, random = math.min, math.random
local format = string.format
--WoW API / Variables
local UnitMana = UnitMana
local UnitManaMax = UnitManaMax
local UnitHealth = UnitHealth
local UnitHealthMax = UnitHealthMax
local UnitName = UnitName
local UnitClass = UnitClass
local UnitAffectingCombat = UnitAffectingCombat
local UnregisterUnitWatch = UnregisterUnitWatch
local RegisterUnitWatch = RegisterUnitWatch
local RegisterStateDriver = RegisterStateDriver
local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE
local CLASS_SORT_ORDER = CLASS_SORT_ORDER
local MAX_RAID_MEMBERS = MAX_RAID_MEMBERS
local attributeBlacklist = {["showRaid"] = true, ["showParty"] = true, ["showSolo"] = true}
local configEnv
@@ -29,45 +31,45 @@ local originalEnvs = {}
local overrideFuncs = {}
local function createConfigEnv()
if( configEnv ) then return end
if configEnv then return end
configEnv = setmetatable({
UnitMana = function (unit, displayType)
if(unit:find("target") or unit:find("focus")) then
return UnitMana(unit, displayType);
if find(unit, "target") or find(unit, "focus") then
return UnitMana(unit, displayType)
end
return random(1, UnitManaMax(unit, displayType) or 1);
return random(1, UnitManaMax(unit, displayType) or 1)
end,
UnitHealth = function(unit)
if(unit:find("target") or unit:find("focus")) then
return UnitHealth(unit);
if find(unit, "target") or find(unit, "focus") then
return UnitHealth(unit)
end
return random(1, UnitHealthMax(unit));
return random(1, UnitHealthMax(unit))
end,
UnitName = function(unit)
if(unit:find("target") or unit:find("focus")) then
return UnitName(unit);
if find(unit, "target") or find(unit, "focus") then
return UnitName(unit)
end
if(E.CreditsList) then
local max = #E.CreditsList;
return E.CreditsList[random(1, max)];
if E.CreditsList then
local max = getn(E.CreditsList)
return E.CreditsList[random(1, max)]
end
return "Test Name";
return "Test Name"
end,
UnitClass = function(unit)
if(unit:find("target") or unit:find("focus")) then
return UnitClass(unit);
if find(unit, "target") or find(unit, "focus") then
return UnitClass(unit)
end
local classToken = CLASS_SORT_ORDER[random(1, #(CLASS_SORT_ORDER))];
return LOCALIZED_CLASS_NAMES_MALE[classToken], classToken;
local classToken = CLASS_SORT_ORDER[random(1, getn(CLASS_SORT_ORDER))]
return LOCALIZED_CLASS_NAMES_MALE[classToken], classToken
end,
Hex = function(r, g, b)
if(type(r) == "table") then
if(r.r) then r, g, b = r.r, r.g, r.b; else r, g, b = unpack(r); end
if type(r) == "table" then
if r.r then r, g, b = r.r, r.g, r.b else r, g, b = unpack(r) end
end
return format("|cff%02x%02x%02x", r*255, g*255, b*255);
return format("|cff%02x%02x%02x", r*255, g*255, b*255)
end,
ColorGradient = ElvUF.ColorGradient,
}, {
@@ -101,11 +103,11 @@ local function createConfigEnv()
end
function UF:ForceShow(frame)
if InCombatLockdown() then return; end
if UnitAffectingCombat("player") then return end
if not frame.isForced then
frame.oldUnit = frame.unit
frame.unit = "player"
frame.isForced = true;
frame.isForced = true
frame.oldOnUpdate = frame:GetScript("OnUpdate")
end
@@ -119,17 +121,17 @@ function UF:ForceShow(frame)
frame:Update()
end
if(_G[frame:GetName().."Target"]) then
self:ForceShow(_G[frame:GetName().."Target"]);
if _G[frame:GetName().."Target"] then
self:ForceShow(_G[frame:GetName().."Target"])
end
if(_G[frame:GetName().."Pet"]) then
self:ForceShow(_G[frame:GetName().."Pet"]);
if _G[frame:GetName().."Pet"] then
self:ForceShow(_G[frame:GetName().."Pet"])
end
end
function UF:UnforceShow(frame)
if InCombatLockdown() then return; end
if UnitAffectingCombat("player") then return end
if not frame.isForced then
return
end
@@ -152,11 +154,11 @@ function UF:UnforceShow(frame)
frame:Update()
end
if(_G[frame:GetName().."Target"]) then
if _G[frame:GetName().."Target"] then
self:UnforceShow(_G[frame:GetName().."Target"])
end
if(_G[frame:GetName().."Pet"]) then
if _G[frame:GetName().."Pet"] then
self:UnforceShow(_G[frame:GetName().."Pet"])
end
end
@@ -164,8 +166,8 @@ end
function UF:ShowChildUnits(header, ...)
header.isForced = true
for i=1, select("#", ...) do
local frame = select(i, ...)
for i = 1, getn(args) do
local frame = select(i, unpack(args))
frame:RegisterForClicks(nil)
frame:SetID(i)
frame.TargetGlow:SetAlpha(0)
@@ -176,8 +178,8 @@ end
function UF:UnshowChildUnits(header, ...)
header.isForced = nil
for i=1, select("#", ...) do
local frame = select(i, ...)
for i = 1, getn(args) do
local frame = select(i, unpack(args))
frame:RegisterForClicks(self.db.targetOnMouseDown and "AnyDown" or "AnyUp")
frame.TargetGlow:SetAlpha(1)
self:UnforceShow(frame)
@@ -185,7 +187,7 @@ function UF:UnshowChildUnits(header, ...)
end
local function OnAttributeChanged(self)
if not self:GetParent().forceShow and not self.forceShow then return; end
if not self:GetParent().forceShow and not self.forceShow then return end
if not self:IsShown() then return end
local db = self.db or self:GetParent().db
@@ -199,7 +201,7 @@ local function OnAttributeChanged(self)
end
function UF:HeaderConfig(header, configMode)
if InCombatLockdown() then return; end
if UnitAffectingCombat("player") then return end
createConfigEnv()
header.forceShow = configMode
@@ -225,18 +227,18 @@ function UF:HeaderConfig(header, configMode)
RegisterStateDriver(header, "visibility", header.db.visibility)
if(header:GetScript("OnEvent")) then
header:GetScript("OnEvent")(header, "PLAYER_ENTERING_WORLD");
if header:GetScript("OnEvent") then
header:GetScript("OnEvent")(header, "PLAYER_ENTERING_WORLD")
end
end
for i=1, #header.groups do
for i = 1, getn(header.groups) do
local group = header.groups[i]
if group:IsShown() then
group.forceShow = header.forceShow
group.forceShowAuras = header.forceShowAuras
group:HookScript("OnAttributeChanged", OnAttributeChanged)
HookScript(group, "OnAttributeChanged", OnAttributeChanged)
if configMode then
for key in pairs(attributeBlacklist) do
group:SetAttribute(key, nil)
@@ -258,7 +260,7 @@ function UF:HeaderConfig(header, configMode)
end
end
UF["headerFunctions"][header.groupName]:AdjustVisibility(header);
UF["headerFunctions"][header.groupName]:AdjustVisibility(header)
end
function UF:PLAYER_REGEN_DISABLED()
@@ -275,19 +277,7 @@ function UF:PLAYER_REGEN_DISABLED()
end
end
for i=1, 5 do
if self["arena"..i] and self["arena"..i].isForced then
self:UnforceShow(self["arena"..i])
end
end
for i=1, 4 do
if self["boss"..i] and self["boss"..i].isForced then
self:UnforceShow(self["boss"..i])
end
end
for i=1, 4 do
for i = 1, 4 do
if self["party"..i] and self["party"..i].isForced then
self:UnforceShow(self["party"..i])
end