local UnitDebuff, UnitIsCharmed = UnitDebuff, UnitIsCharmed;
local UnitPower, UnitPowerMax, UnitPowerType = UnitPower, UnitPowerMax, UnitPowerType;
local UnitHealth, UnitHealthMax = UnitHealth, UnitHealthMax;
+local UnitIsAFK, UnitIsDND = UnitIsAFK, UnitIsDND;
local UnitGetIncomingHeals, UnitGetTotalAbsorbs = UnitGetIncomingHeals, UnitGetTotalAbsorbs;
local UnitThreatSituation, GetThreatStatusColor = UnitThreatSituation, GetThreatStatusColor;
local UnitIsDeadOrGhost, UnitIsConnected = UnitIsDeadOrGhost, UnitIsConnected;
local overlayColorCharm = Settings.OverlayColorCharm;
local overlayColorAlert = Settings.OverlayColorAlert;
local powerColors = Settings.PowerColors;
-local width = 10;
+local width = Settings.Width;
local M = {};
OmaRFEvents = M;
function M.RegisterEvents(frame)
-- events are taken from FrameXML/CompactUnitFrame.lua
- -- TODO raid marker support,
- -- player flags support (/afk, /dnd)
+ -- TODO raid marker support
local displayed = frame.unit ~= frame.displayed and frame.displayed or nil;
frame:RegisterUnitEvent("UNIT_HEALTH", frame.unit, displayed);
frame:RegisterUnitEvent("UNIT_HEALTH_FREQUENT", frame.unit, displayed);
frame:RegisterUnitEvent("UNIT_THREAT_SITUATION_UPDATE", frame.unit, displayed);
frame:RegisterUnitEvent("UNIT_CONNECTION", frame.unit, displayed);
frame:RegisterUnitEvent("INCOMING_RESURRECT_CHANGED", frame.unit, displayed);
+ frame:RegisterUnitEvent("PLAYER_FLAGS_CHANGED", frame.unit, displayed);
end
local registerEvents = M.RegisterEvents;
elseif not UnitIsConnected(unit) then
frame.text:SetText("DC");
frame.text:Show();
+ elseif UnitIsAFK(unit) then
+ frame.text:SetText("afk");
+ frame.text:Show();
+ elseif UnitIsDND(unit) and healthLost == 0 then
+ frame.text:SetText("dnd");
+ frame.text:Show();
elseif healthLost > 0 then
if healthLost > 1200000000 then -- 1.2B
frame.text:SetFormattedText("-%.1fB", healthLost / 1000000000);
end
local function updateReadyCheck(frame, unit)
- if GetReadyCheckTimeLeft() <= 0 then return end
local status = GetReadyCheckStatus(unit);
if status == "ready" then
frame.ready:SetTexture(READY_CHECK_READY_TEXTURE);
};
eventFuncs["UNIT_HEALTH_FREQUENT"] = eventFuncs["UNIT_HEALTH"];
eventFuncs["PARTY_MEMBER_DISABLE"] = eventFuncs["PARTY_MEMBER_ENABLE"];
+eventFuncs["PLAYER_FLAGS_CHANGED"] = eventFuncs["UNIT_CONNECTION"];
eventFuncs["READY_CHECK_CONFIRM"] = eventFuncs["READY_CHECK"];
eventFuncs["READY_CHECK_FINISHED"] = eventFuncs["READY_CHECK"];
eventFuncs["UNIT_ENTERED_VEHICLE"] = eventFuncs["UPDATE_ALL_BARS"];
eventFuncs["UNIT_PET"] = eventFuncs["UPDATE_ALL_BARS"];
eventFuncs["GROUP_ROSTER_UPDATE"] = eventFuncs["UPDATE_ALL_BARS"];
eventFuncs["PLAYER_ENTERING_WORLD"] = eventFuncs["UPDATE_ALL_BARS"];
+eventFuncs["PLAYER_FOCUS_CHANGED"] = eventFuncs["UPDATE_ALL_BARS"];
function M.UnitEvent(self, event)
eventFuncs[event](self);
end
-
-function M.LoadChar()
- width = Settings.Character.Width;
-end