enabled = true,
indicators = {
['**'] = {
+ auras = {},
textSize = 10,
textColor = {1, 1, 1, 1},
mine = false,
SLASH_OMARF1 = "/omarf";
function SlashCmdList.OMARF(msg, editBox)
- local loaded, finished = IsAddonLoaded("OmaRFConfig");
+ local loaded, finished = IsAddOnLoaded("OmaRFConfig");
if not loaded then
- local loaded, reason = LoadAddon("OmaRFConfig");
+ local loaded, reason = LoadAddOn("OmaRFConfig");
if not loaded then
if reason == "DISABLED" then
print("OmaRFConfig is disabled");
local _;
-- global functions used every update
-local C_TimerAfter = C_Timer.After
+local C_TimerAfter = C_Timer.After;
local GetTime = GetTime;
local UnitAura = UnitAura;
local UnitIsPlayer = UnitIsPlayer;
local frameName = name or frame:GetName();
if not f[frameName] then return end
- local config = OmaRF.db.profile;
+ local config = OmaRF.db.profile.indicators;
local font = media and media:Fetch('font', config.indicatorFont) or STANDARD_TEXT_FONT;
for pos, ind in pairs(f[frameName]) do
ind.text:SetFont(font, config[pos]["textSize"]);
local function updateIndicators(frame)
local frameName = frame:GetName();
local unit = frame.unit;
+ if not unit then return end -- possible if the frame is just being hidden
-- Create indicators if needed
if not f[frameName] then setupCompactUnitFrame(frame, frameName) end
if not id then break end
local pos = watchedAuras[name] or watchedAuras[id] or watchedAuras[debuff];
if pos then
- local config = OmaRF.db.profile[pos];
+ local ind = f[frameName][pos];
+ local config = OmaRF.db.profile.indicators[pos];
if not config.mine or UnitIsPlayer(caster) then
- if config.showIcon and not config.useDefaultIcon then
+ if config.showIcon then
-- show icon
- ind.icon:SetTexture(icon);
+ if config.useDefaultIcon then
+ ind.icon:SetTexture(DEFAULT_ICON);
+ else
+ ind.icon:SetTexture(icon);
+ end
end
if config.showText then
-- show text
-- Update all indicators
function OmaRF:UpdateAllIndicators()
CompactRaidFrameContainer_ApplyToFrames(CompactRaidFrameContainer, "normal", updateIndicators);
- if self.running then
- C_TimerAfter(0.15, self:UpdateAllIndicators);
+ if OmaRF.running then
+ C_TimerAfter(0.15, OmaRF.UpdateAllIndicators);
end
end
-- Format aura strings
watchedAuras = {};
for _, pos in ipairs(positions) do
- for _, aura in ipairs(self.db.profile[pos]["auras"]) do
+ for _, aura in ipairs(self.db.profile.indicators[pos]["auras"]) do
watchedAuras[aura] = pos; -- TODO single aura only in one position
end
end
if next(watchedAuras) ~= nil then
self.running = true;
- C_TimerAfter(0.15, self:UpdateAllIndicators);
+ C_TimerAfter(0.15, self.UpdateAllIndicators);
end
end
end
frame.optionTable.displayBuffs = false;
frame.optionTable.displayDebuffs = false;
frame.optionTable.displayDispelDebuffs = false;
- -- Unit name font
- frame.name:SetFont(STANDARD_TEXT_FONT, 12, "");
end);
local name, _;
name, _ = UnitName(frame.unit);
if name then
+ frame.name:SetFont(STANDARD_TEXT_FONT, 12, "");
frame.name:SetText(name);
end
end
for _, pos in ipairs(self.positions) do
options.args[pos] = {
type = "group",
+ name = pos,
get = function(item)
- return self.db.profile[pos][item[#item]];
+ return self.db.profile.indicators[pos][item[#item]];
end,
set = function(item, value)
- self.db.profile[pos][item[#item]] = value;
+ self.db.profile.indicators[pos][item[#item]] = value;
self:RefreshConfig();
end,
args = {
multiline = true,
width = "full",
get = function(item)
- return table.concat(self.db.profile[pos]["auras"], "\n");
+ return table.concat(self.db.profile.indicators[pos]["auras"], "\n");
end,
set = function(item, value)
local t = {};
table.insert(t, aura);
end
end
- self.db.profile[pos]["auras"] = t;
+ self.db.profile.indicators[pos]["auras"] = t;
self:RefreshConfig();
end,
},
type = "color",
name = "Text color",
get = function(item)
- return unpack(self.db.profile[pos]["textColor"]);
+ return unpack(self.db.profile.indicators[pos]["textColor"]);
end,
set = function(item, r, g, b, a)
- self.db.profile[pos]["textColor"] = {r, g, b, a};
+ self.db.profile.indicators[pos]["textColor"] = {r, g, b, a};
self:RefreshConfig();
end,
},
useDefaultIcon = {
type = "toggle",
name = "Use default icon",
- disabled = function() return not self.db.profile[pos]["showIcon"] end,
+ disabled = function() return not self.db.profile.indicators[pos]["showIcon"] end,
},
iconSize = {
type = "range",
type = "color",
name = "Icon tint",
get = function(item)
- return unpack(self.db.profile[pos]["iconColor"]);
+ return unpack(self.db.profile.indicators[pos]["iconColor"]);
end,
set = function(item, r, g, b, a)
- self.db.profile[pos]["iconColor"] = {r, g, b, a};
+ self.db.profile.indicators[pos]["iconColor"] = {r, g, b, a};
self:RefreshConfig();
end,
},