X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/9405379118ca9e6953dec8b54229f59d2d5788bc..d76a52e46fc339db35e6a068c0f1564db7b9cf46:/OmaRF/Events.lua diff --git a/OmaRF/Events.lua b/OmaRF/Events.lua index 633319f..4d2a1a1 100644 --- a/OmaRF/Events.lua +++ b/OmaRF/Events.lua @@ -7,6 +7,7 @@ local UnitName, UnitClass, UnitExists = UnitName, UnitClass, UnitExists; 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; @@ -28,14 +29,13 @@ local overlayColorDispel = Settings.OverlayColorDispel; 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); @@ -51,6 +51,7 @@ function M.RegisterEvents(frame) 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; @@ -88,6 +89,12 @@ local function updateText(frame, unit) 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); @@ -356,6 +363,7 @@ local eventFuncs = { }; 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"]; @@ -368,7 +376,3 @@ 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