You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.2 KiB

local pairs = pairs;
local UnitExists = UnitExists;
local UnitIsUnit = UnitIsUnit;
local _;
local VUHDO_RAID = { };
local VUHDO_INTERNAL_TOGGLES = { };
local VUHDO_updateBouquetsForEvent;
local VUHDO_clParserSetCurrentTarget;
local VUHDO_setHealth;
local VUHDO_removeHots;
local VUHDO_removeAllDebuffIcons;
local VUHDO_updateTargetBars;
local VUHDO_updateHealthBarsFor;
local VUHDO_getUnitButtonsSafe;
local VUHDO_getPlayerTargetFrame;
--
function VUHDO_playerTargetEventHandlerInitLocalOverrides()
VUHDO_RAID = _G["VUHDO_RAID"];
VUHDO_INTERNAL_TOGGLES = _G["VUHDO_INTERNAL_TOGGLES"];
VUHDO_updateBouquetsForEvent = _G["VUHDO_updateBouquetsForEvent"];
VUHDO_clParserSetCurrentTarget = _G["VUHDO_clParserSetCurrentTarget"];
VUHDO_setHealth = _G["VUHDO_setHealth"];
VUHDO_removeHots = _G["VUHDO_removeHots"];
VUHDO_removeAllDebuffIcons = _G["VUHDO_removeAllDebuffIcons"];
VUHDO_updateTargetBars = _G["VUHDO_updateTargetBars"];
VUHDO_updateHealthBarsFor = _G["VUHDO_updateHealthBarsFor"];
VUHDO_getUnitButtonsSafe = _G["VUHDO_getUnitButtonsSafe"];
VUHDO_getPlayerTargetFrame = _G["VUHDO_getPlayerTargetFrame"];
end
--
local VUHDO_CURR_PLAYER_TARGET = nil;
local tTargetUnit;
local tOldTarget;
local tEmptyInfo = { };
function VUHDO_updatePlayerTarget()
tTargetUnit = nil;
for tUnit, tInfo in pairs(VUHDO_RAID) do
if UnitIsUnit("target", tUnit) and tUnit ~= "focus" and tUnit ~= "target" and not VUHDO_isBossUnit(tUnit) then
if tInfo["isPet"] and (VUHDO_RAID[tInfo["ownerUnit"]] or tEmptyInfo)["isVehicle"] then
tTargetUnit = tInfo["ownerUnit"];
else
tTargetUnit = tUnit;
end
break;
end
end
if VUHDO_RAID["target"] then
VUHDO_determineIncHeal("target");
VUHDO_updateHealth("target", 9); -- VUHDO_UPDATE_INC
end
tOldTarget = VUHDO_CURR_PLAYER_TARGET;
VUHDO_CURR_PLAYER_TARGET = tTargetUnit; -- Wg. callback erst umkopieren
VUHDO_updateBouquetsForEvent(tOldTarget, 8); -- VUHDO_UPDATE_TARGET
VUHDO_updateBouquetsForEvent(tTargetUnit, 8); -- VUHDO_UPDATE_TARGET
VUHDO_clParserSetCurrentTarget(tTargetUnit);
if VUHDO_INTERNAL_TOGGLES[27] then -- VUHDO_UPDATE_PLAYER_TARGET
if UnitExists("target") then
VUHDO_setHealth("target", 1); -- VUHDO_UPDATE_ALL
else
VUHDO_removeHots("target");
VUHDO_resetDebuffsFor("target");
VUHDO_removeAllDebuffIcons("target");
VUHDO_updateTargetBars("target");
table.wipe(VUHDO_RAID["target"] or tEmptyInfo);
VUHDO_RAID["target"] = nil;
end
VUHDO_updateHealthBarsFor("target", 1); -- VUHDO_UPDATE_ALL
VUHDO_initEventBouquetsFor("target");
end
end
--
local tBorder;
function VUHDO_barBorderBouquetCallback(aUnit, anIsActive, anIcon, aTimer, aCounter, aDuration, aColor, aBuffName, aBouquetName, anImpact)
for _, tButton in pairs(VUHDO_getUnitButtonsSafe(aUnit)) do
if aColor then
tBorder = VUHDO_getPlayerTargetFrame(tButton);
tBorder:SetFrameLevel(tButton:GetFrameLevel() + (anImpact or 0) + 2);
tBorder:SetBackdropBorderColor(VUHDO_backColorWithFallback(aColor));
tBorder:Show();
else
VUHDO_getPlayerTargetFrame(tButton):Hide();
end
end
end
--
function VUHDO_getCurrentPlayerTarget()
return VUHDO_CURR_PLAYER_TARGET;
end