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
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
|
|
|
|
|