{
unit = "player",
auras = {
- "Necrotic Embrace", "Flametouched", "Shadowtouched", "Blazing Eruption",
- "Shattering Scream", "Consuming Hunger", "Unstable Soul", "Time Bomb",
- "Broken Shard",
+ "Delusions", "Entropic Blast", "Necrotic Embrace", "Flametouched", "Shadowtouched",
+ "Blazing Eruption", "Shattering Scream", "Consuming Hunger", "Unstable Soul",
+ "Time Bomb", "Broken Shard",
},
auraFilter = "HARMFUL",
x = 660,
end
local currentSpec = 0; -- 0 is invalid
-local Indicators = CreateFrame("Frame", "OmaTMW");
+local Indicators = CreateFrame("Frame", "OmaTMW", UIParent);
local function updateAuraFrame(frame)
local unit = frame.unit;
for _, aura in pairs(frame.auras) do
name, _, icon, count, _, duration, expires = UnitAura(unit, aura, nil, frame.auraFilter);
if name then
+ if count > 0 then
+ frame.stack:SetText(count);
+ frame.stack:Show();
+ else
+ frame.stack:Hide();
+ end
if expires > 0 then
frame.cd:SetCooldown(expires - duration, duration);
frame.cd:Show();
end
end
-local function createTMW(name, config)
- local frame = CreateFrame("Frame", name, UIParent);
- frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", config.x, config.y+config.height);
- frame:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOMLEFT", config.x+config.width, config.y);
+local function createTMW(name, config, parent)
+ local frame = CreateFrame("Frame", name, parent);
+ frame:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", config.x, config.y+config.height);
+ frame:SetPoint("BOTTOMRIGHT", parent, "BOTTOMLEFT", config.x+config.width, config.y);
frame.unit = config.unit;
frame.spec = config.spec;
frame.auras = config.auras;
frame.auraFilter = config.auraFilter;
frame.totems = config.totems;
frame:Hide();
- -- TODO a background, like Masque, stack count
+ frame.base = frame:CreateTexture(nil, "BACKGROUND");
+ frame.base:SetAllPoints();
+ frame.base:SetColorTexture(0, 0, 0, 0.6);
frame.icon = frame:CreateTexture(nil, "ARTWORK");
- frame.icon:SetAllPoints();
+ frame.icon:SetPoint("TOPLEFT", frame.base, "TOPLEFT", 1, -1);
+ frame.icon:SetPoint("BOTTOMRIGHT", frame.base, "BOTTOMRIGHT", -1, 1);
frame.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93);
+ frame.stack = frame:CreateFontString(nil, "OVERLAY", "NumberFontNormalLarge");
+ frame.stack:SetPoint("TOPLEFT");
frame.cd = CreateFrame("Cooldown", name.."CD", frame, "CooldownFrameTemplate");
frame.cd:SetReverse(true);
frame.cd:SetAllPoints();
local function initialize()
Indicators:SetFrameStrata("LOW");
+ Indicators:SetPoint("BOTTOMLEFT");
+ Indicators:SetWidth(1);
+ Indicators:SetHeight(1);
currentSpec = GetSpecialization();
local name, realm = UnitFullName("player");
if chars[realm] and chars[realm][name] then
table.insert(totems[slot], i);
end
end
- frames[i] = createTMW("OmaTMW"..i, config);
+ frames[i] = createTMW("OmaTMW"..i, config, Indicators);
end
for _, frame in pairs(frames) do
end
end
--- TODO have healthstone icon for player separate from this
Indicators:RegisterEvent("UNIT_AURA");
Indicators:RegisterEvent("PLAYER_TARGET_CHANGED");
Indicators:RegisterEvent("PLAYER_TOTEM_UPDATE");