local _;
local CreateFrame = CreateFrame;
local UnitAura = UnitAura;
-local GameTooltip = nil;
+local GameTooltip = GameTooltip;
local auraFilters = {"HELPFUL", "HARMFUL"};
end
local function showTooltip(frame)
- -- tooltip handling from TargetFrame.xml
+ -- tooltip handling from FrameXML/TargetFrame.xml
GameTooltip:SetOwner(frame, "ANCHOR_BOTTOMRIGHT", 15, -25);
GameTooltip:SetUnitAura(frame.unit, frame.index, frame.filter);
frame:SetScript("OnUpdate", updateTooltip);
frame:SetScript("OnUpdate", nil);
end
+function M.UpdateAuraTooltips()
+ GameTooltip = _G["GameTooltip"];
+end
+
local function createAura(parent, prev, anchor, name, unit)
local aura = CreateFrame("Frame", name, parent);
aura:SetPoint("TOPLEFT", prev, anchor);
- aura:SetWidth(16);
- aura:SetHeight(16);
+ aura:SetWidth(20);
+ aura:SetHeight(20);
aura.icon = aura:CreateTexture(nil, "ARTWORK");
aura.icon:SetAllPoints();
aura.cd = CreateFrame("Cooldown", name.."CD", aura, "CooldownFrameTemplate");
aura.cd:SetReverse(true);
aura.cd:SetHideCountdownNumbers(true);
aura.cd:SetAllPoints();
- aura.unit = unit;
+ aura.unit = unit; -- TODO add aura.stack text
aura:SetScript("OnEnter", showTooltip);
aura:SetScript("OnLeave", hideTooltip);
aura:Hide();
end
function M.CreateAuraFrame(parent, unit)
- GameTooltip = _G["GameTooltip"];
local name = parent:GetName().."Auras";
parent.auras = CreateFrame("Frame", name, parent);
parent.auras:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", 0, -8);
function M.UpdateAuras(frame, unit)
local auras = frame.auras;
- if not auras then return end
for _, aura in ipairs(auras) do
if not aura:IsShown() then break end
aura:Hide();
while true do
_, _, icon, count, _, duration, expires, caster, _, _, id = UnitAura(unit, i, filter);
if not id or not auras[pos] then break end
+ -- aura filter self-applied, player-applied, list of important auras TODO
local aura = auras[pos];
aura.icon:SetTexture(icon);
aura.index = i;