Apply Patch
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
PTUtil.SetEnvironment(Puppeteer)
|
||||
local _G = getfenv(0)
|
||||
local util = PTUtil
|
||||
|
||||
EventHandlerFrames = {}
|
||||
local function RegisterEventHandler(events, handler)
|
||||
if type(events) == "string" then
|
||||
events = {events}
|
||||
end
|
||||
local frame = CreateFrame("Frame", "PTEventHandler_"..events[1])
|
||||
for _, event in ipairs(events) do
|
||||
frame:RegisterEvent(event)
|
||||
end
|
||||
frame:SetScript("OnEvent", handler)
|
||||
table.insert(EventHandlerFrames, frame)
|
||||
end
|
||||
|
||||
function UnregisterEventHandlers()
|
||||
for _, frame in ipairs(EventHandlerFrames) do
|
||||
frame:UnregisterAllEvents()
|
||||
end
|
||||
end
|
||||
|
||||
RegisterEventHandler("ADDON_LOADED", function()
|
||||
if arg1 ~= "Puppeteer" then
|
||||
return
|
||||
end
|
||||
GuidRoster = PTGuidRoster
|
||||
OnAddonLoaded()
|
||||
end)
|
||||
RegisterEventHandler("PLAYER_ENTERING_WORLD", function()
|
||||
CheckGroup()
|
||||
|
||||
if PTOptions.DisablePartyFrames.InParty then
|
||||
SetPartyFramesEnabled(false)
|
||||
end
|
||||
|
||||
PromptHealersMateImport()
|
||||
end)
|
||||
RegisterEventHandler({"UNIT_HEALTH", "UNIT_MAXHEALTH"}, function()
|
||||
local unit = arg1
|
||||
if not IsRelevantUnit(unit) then
|
||||
return
|
||||
end
|
||||
for ui in UnitFrames(unit) do
|
||||
ui:UpdateHealth()
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler({"UNIT_MANA", "UNIT_RAGE", "UNIT_ENERGY", "UNIT_FOCUS", "UNIT_MAXMANA", "UNIT_DISPLAYPOWER"}, function()
|
||||
local unit = arg1
|
||||
if not IsRelevantUnit(unit) then
|
||||
return
|
||||
end
|
||||
|
||||
for ui in UnitFrames(unit) do
|
||||
ui:UpdatePower()
|
||||
end
|
||||
|
||||
if unit == "player" then
|
||||
ReapplySpellsTooltip()
|
||||
end
|
||||
|
||||
local raidFrameGroup = UnitFrameGroups["Raid"]
|
||||
if raidFrameGroup then
|
||||
raidFrameGroup:RequestRaidManaUpdate()
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler("UNIT_AURA", function()
|
||||
local unit = arg1
|
||||
if not IsRelevantUnit(unit) then
|
||||
return
|
||||
end
|
||||
if unit == "player" then
|
||||
util.MarkSpellCostCacheDirty()
|
||||
end
|
||||
PTUnit.Get(unit):UpdateAuras()
|
||||
for ui in UnitFrames(unit) do
|
||||
ui:UpdateAuras()
|
||||
ui:UpdateHealth() -- Update health because there may be an aura that changes health bar color
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler({"PARTY_MEMBERS_CHANGED", "RAID_ROSTER_UPDATE"}, function()
|
||||
CheckGroupThrottled()
|
||||
end)
|
||||
RegisterEventHandler({"UNIT_PET", "PLAYER_PET_CHANGED"}, function()
|
||||
local unit = arg1
|
||||
if IsRelevantUnit(unit) then
|
||||
CheckGroupThrottled()
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler("PLAYER_TARGET_CHANGED", function()
|
||||
for _, ui in ipairs(AllUnitFrames) do
|
||||
ui:EvaluateTarget()
|
||||
end
|
||||
local exists, guid = UnitExists("target")
|
||||
if util.IsSuperWowPresent() then
|
||||
PTUnit.UpdateGuidCaches()
|
||||
end
|
||||
|
||||
PTUnit.Get("target"):UpdateAll()
|
||||
if util.IsSuperWowPresent() then
|
||||
GuidRoster.SetUnitGuid("target", guid)
|
||||
PTHealPredict.SetRelevantGUIDsFromMap(GuidRoster.GuidUnitMap)
|
||||
end
|
||||
|
||||
if exists then
|
||||
EvaluateTracking("target", true)
|
||||
end
|
||||
|
||||
if PTOptions.Hidden then
|
||||
return
|
||||
end
|
||||
|
||||
CheckTarget()
|
||||
end)
|
||||
RegisterEventHandler("SPELLS_CHANGED", function()
|
||||
PuppeteerSettings.UpdateTrackedDebuffTypes()
|
||||
util.MarkSpellCostCacheDirty()
|
||||
end)
|
||||
RegisterEventHandler("CHARACTER_POINTS_CHANGED", function()
|
||||
util.MarkSpellCostCacheDirty()
|
||||
end)
|
||||
RegisterEventHandler("RAID_TARGET_UPDATE", function()
|
||||
for _, ui in ipairs(AllUnitFrames) do
|
||||
ui:UpdateRaidMark()
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler("UNIT_FACTION", function()
|
||||
if not IsRelevantUnit(arg1) then
|
||||
return
|
||||
end
|
||||
for ui in UnitFrames(arg1) do
|
||||
ui:UpdatePVP()
|
||||
end
|
||||
end)
|
||||
RegisterEventHandler("PLAYER_LOGOUT", function()
|
||||
RemoveOverrideBindings()
|
||||
PuppeteerSettings.SaveFramePositions()
|
||||
end)
|
||||
|
||||
local GetKeyModifier = util.GetKeyModifier
|
||||
local keyListener = CreateFrame("Frame", "PTTooltipKeyListener")
|
||||
local lastModifier = "None"
|
||||
local function PTTooltipKeyListener_OnUpdate()
|
||||
local modifier = GetKeyModifier()
|
||||
if lastModifier ~= modifier then
|
||||
lastModifier = modifier
|
||||
if SpellsTooltip:IsVisible() then
|
||||
ReapplySpellsTooltip()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SetTooltipKeyListenerEnabled(enabled)
|
||||
if keyListener:GetScript("OnUpdate") ~= nil == enabled then -- Don't set the script if the state is unchanged
|
||||
return
|
||||
end
|
||||
if enabled then
|
||||
lastModifier = GetKeyModifier()
|
||||
keyListener:SetScript("OnUpdate", PTTooltipKeyListener_OnUpdate)
|
||||
else
|
||||
keyListener:SetScript("OnUpdate", nil)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user