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.

1162 lines
36 KiB

local _G = _G;
local VUHDO_STD_BACKDROP = nil;
local VUHDO_DESIGN_BACKDROP = nil;
local VUHDO_CONFIG;
local VUHDO_INDICATOR_CONFIG;
local tonumber = tonumber;
local ipairs = ipairs;
local pairs = pairs;
local strfind = strfind;
local twipe = table.wipe;
local InCombatLockdown = InCombatLockdown;
local _;
--
local sBarScaling;
local sSortCriterion;
local sMainFont;
local sStatusTexture;
local sTextAnchors;
local sLifeConfig;
local sMainFontHeight;
local sLifeFontHeight;
local sBarWidth;
local sBarHeight;
local sManaBarHeight;
local sSideBarLeftWidth;
local sSideBarRightWidth;
local sRaidIconSetup;
local sOverhealTextSetup;
local sIsManaBouquet;
local sPanelSetup;
local sShadowAlpha;
local sOutlineText;
local sSwiftmendIndicatorSetup;
local VUHDO_getFont;
local VUHDO_getHealthBar;
--
function VUHDO_panelRedrawInitLocalOverrides()
VUHDO_CONFIG = _G["VUHDO_CONFIG"];
VUHDO_INDICATOR_CONFIG = _G["VUHDO_INDICATOR_CONFIG"];
sIsManaBouquet = VUHDO_INDICATOR_CONFIG["BOUQUETS"]["MANA_BAR"] ~= "";
VUHDO_getFont = _G["VUHDO_getFont"];
VUHDO_getHealthBar = _G["VUHDO_getHealthBar"];
VUHDO_panelRedrawCustomDebuffsInitLocalOverrides();
VUHDO_panelRedrawHeadersInitLocalOverrides();
VUHDO_panelRedrawHotsInitLocalOverrides();
end
--
local sButton;
local sHealthBar;
local tBar;
--
function VUHDO_initLocalVars(aPanelNum)
--VUHDO_panelRedrwawHeadersInitLocalVars(aPanelNum);
VUHDO_panelRedrwawHotsInitLocalVars(aPanelNum);
VUHDO_panelRedrwawCustomDebuffsInitLocalVars(aPanelNum);
sPanelSetup = VUHDO_PANEL_SETUP[aPanelNum];
sBarScaling = sPanelSetup["SCALING"];
sRaidIconSetup = sPanelSetup["RAID_ICON"];
sOverhealTextSetup = sPanelSetup["OVERHEAL_TEXT"];
sSortCriterion = sPanelSetup["MODEL"]["sort"];
sMainFont = VUHDO_getFont(sPanelSetup["PANEL_COLOR"]["TEXT"]["font"]);
sStatusTexture = VUHDO_LibSharedMedia:Fetch('statusbar', sPanelSetup["PANEL_COLOR"]["barTexture"]);
sTextAnchors = VUHDO_splitString(sPanelSetup["ID_TEXT"]["position"], "+");
sLifeConfig = sPanelSetup["LIFE_TEXT"];
sMainFontHeight = sPanelSetup["PANEL_COLOR"]["TEXT"]["textSize"];
sLifeFontHeight = sPanelSetup["PANEL_COLOR"]["TEXT"]["textSizeLife"];
sOutlineText = sPanelSetup["PANEL_COLOR"]["TEXT"]["outline"] and "OUTLINE|" or "";
if (sPanelSetup["PANEL_COLOR"]["TEXT"]["USE_MONO"]) then -- Bugs out in MoP beta
sOutlineText = sOutlineText .. "OUTLINEMONOCHROME";
end
sShadowAlpha = sPanelSetup["PANEL_COLOR"]["TEXT"]["USE_SHADOW"] and 1 or 0;
sBarHeight = VUHDO_getHealthBarHeight(aPanelNum);
sBarWidth = VUHDO_getHealthBarWidth(aPanelNum);
sManaBarHeight = VUHDO_getManaBarHeight(aPanelNum);
sSideBarLeftWidth = VUHDO_getSideBarWidthLeft(aPanelNum);
sSideBarRightWidth = VUHDO_getSideBarWidthRight(aPanelNum);
if (sManaBarHeight == 0) then
sManaBarHeight = 0.001;
end
sSwiftmendIndicatorSetup = VUHDO_INDICATOR_CONFIG["CUSTOM"]["SWIFTMEND_INDICATOR"];
if sSwiftmendIndicatorSetup["anchor"] == nil then
sSwiftmendIndicatorSetup["anchor"] = "TOPLEFT";
end
if sSwiftmendIndicatorSetup["xAdjust"] == nil or sSwiftmendIndicatorSetup["yAdjust"] == nil then
sSwiftmendIndicatorSetup["xAdjust"] = 5.5;
sSwiftmendIndicatorSetup["yAdjust"] = -14;
end
end
local VUHDO_initLocalVars = VUHDO_initLocalVars;
--
function VUHDO_isPanelVisible(aPanelNum)
if not VUHDO_CONFIG["SHOW_PANELS"] or not VUHDO_PANEL_MODELS[aPanelNum] or not VUHDO_IS_SHOWN_BY_GROUP then
return false;
end
if VUHDO_isModelInPanel(aPanelNum, 42) -- VUHDO_ID_PRIVATE_TANKS
and (not VUHDO_CONFIG["OMIT_TARGET"] or not VUHDO_CONFIG["OMIT_FOCUS"]) then
return true;
end
if VUHDO_isModelInPanel(aPanelNum, 82) then -- VUHDO_ID_TARGET
return true;
end
if VUHDO_isModelInPanel(aPanelNum, 83) then -- VUHDO_ID_FOCUS
return true;
end
if VUHDO_isModelInPanel(aPanelNum, 44) then -- VUHDO_ID_BOSSES
return true;
end
if VUHDO_CONFIG["HIDE_EMPTY_PANELS"] and not VUHDO_isConfigPanelShowing()
and #VUHDO_PANEL_UNITS[aPanelNum] == 0 then
return false;
end
return true;
end
local VUHDO_isPanelVisible = VUHDO_isPanelVisible;
--
function VUHDO_isPanelPopulated(aPanelNum)
return VUHDO_CONFIG["SHOW_PANELS"] and VUHDO_PANEL_MODELS[aPanelNum] and VUHDO_IS_SHOWN_BY_GROUP;
end
local VUHDO_isPanelPopulated = VUHDO_isPanelPopulated;
--
--
local tModelArray;
local tMemberNum;
local function VUHDO_getNumButtonsPanel(aPanelNum)
tModelArray = VUHDO_getDynamicModelArray(aPanelNum);
tMemberNum = 0;
for tModelIndex, tModelId in pairs(tModelArray) do
tMemberNum = tMemberNum + #VUHDO_getGroupMembers(tModelId, aPanelNum, tModelIndex);
end
return tMemberNum;
end
--
local tBackdrop, tBorderCol;
local tWidth, tGap;
local function VUHDO_initPlayerTargetBorder(aButton, aBorderFrame, anIsNoIndicator)
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["BAR_BORDER"] == "" then
aBorderFrame:Hide();
aBorderFrame:ClearAllPoints();
return;
end
tWidth = VUHDO_INDICATOR_CONFIG["CUSTOM"]["BAR_BORDER"]["WIDTH"];
tGap = tWidth + VUHDO_INDICATOR_CONFIG["CUSTOM"]["BAR_BORDER"]["ADJUST"];
aBorderFrame:SetPoint("TOPLEFT", aButton:GetName(), "TOPLEFT", -tGap, tGap);
aBorderFrame:SetPoint("BOTTOMRIGHT", aButton:GetName(), "BOTTOMRIGHT", tGap, -tGap);
if not tBackdrop then
tBackdrop = aBorderFrame:GetBackdrop();
tBackdrop["edgeSize"] = tWidth;
tBackdrop["edgeFile"] = VUHDO_INDICATOR_CONFIG["CUSTOM"]["BAR_BORDER"]["FILE"];
tBackdrop["insets"]["left"] = 0;
tBackdrop["insets"]["right"] = 0;
tBackdrop["insets"]["top"] = 0;
tBackdrop["insets"]["bottom"] = 0;
end
aBorderFrame.backdropInfo = tBackdrop;
aBorderFrame:ApplyBackdrop();
aBorderFrame.backdropBorderColor = CreateColor(0, 0, 0);
aBorderFrame.backdropBorderColorAlpha = 1;
aBorderFrame:SetBackdropBorderColor(0, 0, 0, 1);
aBorderFrame:SetShown(anIsNoIndicator);
end
--
local tBackdropCluster;
local tClusterFrame;
local function VUHDO_initClusterBorder(aButton)
tClusterFrame = VUHDO_getClusterBorderFrame(aButton);
tClusterFrame:Hide();
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["CLUSTER_BORDER"] == "" then
tClusterFrame:ClearAllPoints();
return;
end
tClusterFrame:SetPoint("TOPLEFT", aButton:GetName(), "TOPLEFT", 0, 0);
tClusterFrame:SetPoint("BOTTOMRIGHT", aButton:GetName(), "BOTTOMRIGHT", 0, 0);
if not tBackdropCluster then
tBackdropCluster = tClusterFrame:GetBackdrop();
tBackdropCluster["edgeSize"] = VUHDO_INDICATOR_CONFIG["CUSTOM"]["CLUSTER_BORDER"]["WIDTH"];
tBackdropCluster["edgeFile"] = VUHDO_INDICATOR_CONFIG["CUSTOM"]["CLUSTER_BORDER"]["FILE"];
tBackdropCluster["insets"]["left"] = 0;
tBackdropCluster["insets"]["right"] = 0;
tBackdropCluster["insets"]["top"] = 0;
tBackdropCluster["insets"]["bottom"] = 0;
end
tClusterFrame.backdropInfo = tBackdropCluster;
tClusterFrame:ApplyBackdrop();
tClusterFrame.backdropBorderColor = CreateColor(0, 0, 0);
tClusterFrame.backdropBorderColorAlpha = 0;
tClusterFrame:SetBackdropBorderColor(0, 0, 0, 0);
end
--
local tIncBar;
function VUHDO_positionHealButton(aButton, aBarScaling)
aButton:SetWidth((aBarScaling or sBarScaling)["barWidth"]);
aButton:SetHeight((aBarScaling or sBarScaling)["barHeight"]);
-- Player Target
VUHDO_initPlayerTargetBorder(aButton, VUHDO_getPlayerTargetFrame(aButton), false);
VUHDO_initPlayerTargetBorder(VUHDO_getTargetButton(aButton), VUHDO_getPlayerTargetFrameTarget(aButton), true);
VUHDO_initPlayerTargetBorder(VUHDO_getTotButton(aButton), VUHDO_getPlayerTargetFrameToT(aButton), true);
-- Cluster indicator
VUHDO_initClusterBorder(aButton);
end
local VUHDO_positionHealButton = VUHDO_positionHealButton;
--
local function VUHDO_initHealthBar()
sHealthBar:SetPoint("TOPLEFT", VUHDO_getHealthBar(sButton, 6):GetName(), "TOPLEFT", 0, 0); -- Incoming bar
sHealthBar:SetWidth(sBarWidth);
sHealthBar:SetHeight(sBarHeight);
end
--
local tFrame;
local function VUHDO_registerFacadeIcon(aButton, aNum, aGroup)
tFrame = VUHDO_getBarIconFrame(aButton, aNum);
if tFrame then
VUHDO_getBarIcon(aButton, aNum):SetTexCoord(0, 1, 0, 1);
VUHDO_LibButtonFacade:Group("VuhDo", aGroup):AddButton(tFrame, {
["Icon"] = VUHDO_getBarIcon(aButton, aNum),
});
end
end
--
local tLeft, tRight, tTop, tBottom;
local tIcon;
local function VUHDO_initButtonButtonFacade(aButton)
for tCnt = 1, 5 do
VUHDO_registerFacadeIcon(aButton, tCnt, VUHDO_I18N_HOTS);
end
for tCnt = 9, 10 do
VUHDO_registerFacadeIcon(aButton, tCnt, VUHDO_I18N_HOTS);
end
tIcon = VUHDO_getBarIcon(aButton, 1);
if tIcon then
tLeft, tTop, _, _, _, _, tRight, tBottom = tIcon:GetTexCoord();
VUHDO_hotsSetClippings(tLeft, tRight, tTop, tBottom);
end
end
--
local tBorderCol;
local tXPos, tYPos;
local tHealButton;
local tGroupArray;
local tGroupIndex, tColIdx, tBtnIdx;
local tBorderCol;
local tModelArray;
local tPanelName;
local tDebuffFrame;
local function VUHDO_positionAllHealButtons(aPanel, aPanelNum)
tModelArray = VUHDO_getDynamicModelArray(aPanelNum);
tPanelName = aPanel:GetName();
tColIdx = 1;
tBtnIdx = 1;
tBorderCol = nil;
for tModelIndex, tModelId in ipairs(tModelArray) do
tGroupArray = VUHDO_getGroupMembersSorted(tModelId, sSortCriterion, aPanelNum, tModelIndex);
tGroupIndex = 1;
for tGroupIndex, tUnit in ipairs(tGroupArray) do
tHealButton = VUHDO_getHealButton(tBtnIdx, aPanelNum);
tBtnIdx = tBtnIdx + 1;
VUHDO_positionHealButton(tHealButton);
VUHDO_setupAllHealButtonAttributes(tHealButton, tUnit, false, 70 == tModelId, false, false); -- VUHDO_ID_VEHICLES
for tCnt = 40, VUHDO_CONFIG["CUSTOM_DEBUFF"]["max_num"] + 39 do
tDebuffFrame = VUHDO_getBarIconFrame(tHealButton, tCnt);
if tDebuffFrame then
VUHDO_setupAllHealButtonAttributes(tDebuffFrame, tUnit, false, 70 == tModelId, false, true); -- VUHDO_ID_VEHICLES
end
end
VUHDO_setupAllTargetButtonAttributes(VUHDO_getTargetButton(tHealButton), tUnit);
VUHDO_setupAllTotButtonAttributes(VUHDO_getTotButton(tHealButton), tUnit);
tXPos, tYPos = VUHDO_getHealButtonPos(tColIdx, tGroupIndex, aPanelNum);
tHealButton:Hide();
tHealButton:ClearAllPoints();
tHealButton:SetPoint("TOPLEFT", tPanelName, "TOPLEFT", tXPos, -tYPos);
VUHDO_addUnitButton(tHealButton, aPanelNum);
tHealButton:Show();
end
tColIdx = tColIdx + 1;
end
end
--
local function VUHDO_initAggroTexture()
VUHDO_getAggroTexture(sHealthBar):Hide();
end
--
local tInfo;
local tManaHeight;
local function VUHDO_initManaBar(aButton, aManaBar, aWidth, anIsForceBar)
aManaBar:SetPoint("BOTTOMLEFT", aButton:GetName(), "BOTTOMLEFT", 0, 0);
VUHDO_setLlcStatusBarTexture(aManaBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["MANA_BAR"]["TEXTURE"]);
tInfo = VUHDO_RAID[aButton["raidid"]];
tManaHeight = (anIsForceBar or not tInfo or sIsManaBouquet) and sManaBarHeight or 0;
aManaBar:SetWidth(aWidth);
aButton["regularHeight"] = sBarScaling["barHeight"];
if sIsManaBouquet then
aManaBar:Show();
aManaBar:SetHeight(tManaHeight);
if (VUHDO_getHealthBar(aButton, 1):GetHeight() == 0) then
VUHDO_getHealthBar(aButton, 1):SetHeight(sBarHeight);
end
else
aManaBar:Hide();
VUHDO_getHealthBar(aButton, 1):SetHeight(sBarHeight + sManaBarHeight);
end
if not anIsForceBar then
VUHDO_customizeIconText(aManaBar, 32, VUHDO_getHealthBarText(aButton, 2),
VUHDO_INDICATOR_CONFIG["TEXT_INDICATORS"]["MANA_BAR"]["TEXT"]);
end
end
--
local function VUHDO_initBackgroundBar(aBgBar)
VUHDO_setLlcStatusBarTexture(aBgBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["BACKGROUND_BAR"]["TEXTURE"]);
aBgBar:SetHeight(sBarScaling["barHeight"]);
aBgBar:SetValue(1);
aBgBar:SetStatusBarColor(0, 0, 0, 0);
aBgBar:Show();
end
--
local function VUHDO_initIncomingOrShieldBar(aBarNum)
tBar = VUHDO_getHealthBar(sButton, aBarNum);
tBar:SetPoint("TOPLEFT", VUHDO_getHealthBar(sButton, 3):GetName(), "TOPLEFT", sSideBarLeftWidth, 0); -- Background bar
tBar:SetWidth(sBarWidth);
tBar:SetHeight(sBarHeight);
tBar:SetValueRange(0, 0);
end
--
local tThreatBar;
local function VUHDO_initThreatBar()
tThreatBar = VUHDO_getHealthBar(sButton, 7);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["THREAT_BAR"] == "" then
tThreatBar:Hide();
else
tThreatBar:Show();
VUHDO_setLlcStatusBarTexture(tThreatBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["THREAT_BAR"]["TEXTURE"]);
tThreatBar:SetStatusBarColor(0, 0, 0, 0);
tThreatBar:SetHeight(VUHDO_INDICATOR_CONFIG["CUSTOM"]["THREAT_BAR"]["HEIGHT"]);
end
VUHDO_customizeIconText(tThreatBar, 32, VUHDO_getHealthBarText(sButton, 7),
VUHDO_INDICATOR_CONFIG["TEXT_INDICATORS"]["THREAT_BAR"]["TEXT"]);
end
--
local tTextPanel;
local tNameText;
local tLifeText;
local tAddHeight;
local function VUHDO_initBarTexts(aButton, aHealthBar, aWidth)
tTextPanel = VUHDO_getTextPanel(aHealthBar);
tNameText = VUHDO_getBarText(aHealthBar);
tLifeText = VUHDO_getLifeText(aHealthBar);
tNameText:SetWidth(aWidth);
tNameText:SetHeight(sMainFontHeight);
tNameText:SetFont(sMainFont, sMainFontHeight, sOutlineText or "");
tNameText:SetShadowColor(0, 0, 0, sShadowAlpha);
tLifeText:SetFont(sMainFont, sLifeFontHeight, sOutlineText or "");
tLifeText:SetShadowColor(0, 0, 0, sShadowAlpha);
tLifeText:SetText("");
tNameText:ClearAllPoints();
tAddHeight = 0;
if VUHDO_LT_POS_RIGHT == sLifeConfig["position"]
or VUHDO_LT_POS_LEFT == sLifeConfig["position"]
or (not sLifeConfig["show"] and not sPanelSetup["ID_TEXT"]["showTags"]) then
tLifeText:SetWidth(0);
tLifeText:SetHeight(0);
tNameText:SetPoint("CENTER", tTextPanel:GetName(), "CENTER", 0, 0);
tLifeText:Hide();
else
tLifeText:ClearAllPoints();
tLifeText:SetWidth(aWidth);
tLifeText:SetHeight(sLifeFontHeight);
tAddHeight = sLifeFontHeight;
if (VUHDO_LT_POS_BELOW == sLifeConfig["position"]) then
tNameText:SetPoint("TOP", tTextPanel:GetName(), "TOP", 0, 0);
tLifeText:SetPoint("TOP", tNameText:GetName(), "BOTTOM", 0, 0);
else
tNameText:SetPoint("BOTTOM", tTextPanel:GetName(), "BOTTOM", 0, 0);
tLifeText:SetPoint("BOTTOM", tNameText:GetName(), "TOP", 0, 0);
end
tLifeText:Show();
end
tTextPanel:SetHeight(tNameText:GetHeight() + tAddHeight);
tTextPanel:SetWidth(aWidth);
sPanelSetup["ID_TEXT"]["_spacing"] = tTextPanel:GetHeight(); -- internal marker
if strfind(sTextAnchors[1], "LEFT", 1, true) then
tNameText:SetJustifyH("LEFT");
tLifeText:SetJustifyH("LEFT");
elseif strfind(sTextAnchors[1], "RIGHT", 1, true) then
tNameText:SetJustifyH("RIGHT");
tLifeText:SetJustifyH("RIGHT");
else
tNameText:SetJustifyH("CENTER");
tLifeText:SetJustifyH("CENTER");
end
local tAnchorObject;
if strfind(sTextAnchors[1], "BOTTOM", 1, true) and strfind(sTextAnchors[2], "TOP", 1, true) -- �ber Button
and VUHDO_INDICATOR_CONFIG["BOUQUETS"]["THREAT_BAR"] ~= "" then
tAnchorObject = VUHDO_getHealthBar(aButton, 7) or aButton; -- Target und Tot hat keinen Threat bar
elseif strfind(sTextAnchors[2], "BOTTOM", 1, true) and strfind(sTextAnchors[1], "TOP", 1, true) then
tAnchorObject = aButton;
else
tAnchorObject = aHealthBar;
end
tTextPanel:ClearAllPoints();
tTextPanel:SetPoint(sTextAnchors[1], tAnchorObject:GetName(), sTextAnchors[2], sPanelSetup["ID_TEXT"]["xAdjust"], -sPanelSetup["ID_TEXT"]["yAdjust"]);
end
--
local tX, tY;
local tOvhColor;
local tOvhText;
local tOvhPanel;
local function VUHDO_initOverhealText(aHealthBar, aWidth)
tOvhText = VUHDO_getOverhealText(aHealthBar);
tOvhText:SetWidth(400);
tOvhText:SetHeight(sMainFontHeight);
tOvhColor = VUHDO_PANEL_SETUP["BAR_COLORS"]["OVERHEAL_TEXT"];
tOvhText:SetTextColor(tOvhColor["TR"], tOvhColor["TG"], tOvhColor["TB"], tOvhColor["TO"]);
tOvhText:SetFont(sMainFont, sMainFontHeight, "");
tOvhText:SetJustifyH("CENTER");
tOvhText:SetText("");
tOvhPanel = VUHDO_getOverhealPanel(aHealthBar);
tOvhPanel:SetHeight(1);
tOvhPanel:SetWidth(1);
tOvhPanel:SetScale(1);
tX = sOverhealTextSetup["xAdjust"] * aWidth * 0.01;
tY = -sOverhealTextSetup["yAdjust"] * sBarScaling["barHeight"] * 0.01;
tOvhPanel:ClearAllPoints();
tOvhPanel:SetPoint(sOverhealTextSetup["point"], aHealthBar:GetName(), sOverhealTextSetup["point"], tX, tY);
end
--
local tAggroBar;
local function VUHDO_initAggroBar()
tAggroBar = VUHDO_getHealthBar(sButton, 4);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["AGGRO_BAR"] == "" then
tAggroBar:ClearAllPoints();
tAggroBar:Hide();
return;
end
VUHDO_setLlcStatusBarTexture(tAggroBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["AGGRO_BAR"]["TEXTURE"]);
tAggroBar:SetPoint("BOTTOM", sHealthBar:GetName(), "TOP", 0, 0);
tAggroBar:SetWidth(sBarScaling["barWidth"]);
tAggroBar:SetHeight(sBarScaling["rowSpacing"]);
tAggroBar:Show();
tAggroBar:SetValue(0);
end
--
local tX, tY;
local function VUHDO_initRaidIcon(aHealthBar, anIcon, aWidth)
tX = sRaidIconSetup["xAdjust"] * aWidth * 0.01;
tY = -sRaidIconSetup["yAdjust"] * sBarScaling["barHeight"] * 0.01;
anIcon:Hide();
anIcon:ClearAllPoints();
anIcon:SetPoint(sRaidIconSetup["point"], aHealthBar:GetName(), sRaidIconSetup["point"], tX, tY);
anIcon:SetWidth(sBarScaling["barHeight"] * sRaidIconSetup["scale"] / 1.5);
anIcon:SetHeight(sBarScaling["barHeight"] * sRaidIconSetup["scale"] / 1.5);
end
--
local tIcon, tHeight;
local function VUHDO_initSwiftmendIndicator()
tIcon = VUHDO_getBarRoleIcon(sButton, 51);
tIcon:ClearAllPoints();
tIcon:Hide();
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["SWIFTMEND_INDICATOR"] == "" then
return;
end
local tX = sSwiftmendIndicatorSetup["xAdjust"] * sBarScaling["barWidth"] * 0.01;
local tY = -sSwiftmendIndicatorSetup["yAdjust"] * sBarScaling["barHeight"] * 0.01;
tIcon:SetPoint(sSwiftmendIndicatorSetup["anchor"], sHealthBar:GetName(), sSwiftmendIndicatorSetup["anchor"], tX, tY);
tHeight = sBarScaling["barHeight"] * 0.5 * sSwiftmendIndicatorSetup["SCALE"];
tIcon:SetWidth(tHeight);
tIcon:SetHeight(tHeight);
end
--
local tTgButton;
local tTgHealthBar;
local function VUHDO_initTargetBar()
if sBarScaling["showTarget"] then
tTgButton = VUHDO_getTargetButton(sButton);
tTgButton:SetAlpha(0);
tTgButton:ClearAllPoints();
if sBarScaling["targetOrientation"] == 1 then
tTgButton:SetPoint("TOPLEFT", sButton:GetName(), "TOPRIGHT", sBarScaling["targetSpacing"], 0);
else
tTgButton:SetPoint("TOPRIGHT", sButton:GetName(), "TOPLEFT", -sBarScaling["targetSpacing"], 0);
end
tTgButton:SetWidth(sBarScaling["targetWidth"]);
tTgButton:SetHeight(sBarScaling["barHeight"]);
tTgButton:Show();
tTgHealthBar = VUHDO_getHealthBar(sButton, 5);
tTgHealthBar:SetValue(1);
tTgHealthBar:SetHeight(sBarHeight);
VUHDO_initBackgroundBar(VUHDO_getHealthBar(sButton, 12));
VUHDO_initManaBar(tTgButton, VUHDO_getHealthBar(sButton, 13), sBarScaling["targetWidth"], true);
VUHDO_initRaidIcon(tTgHealthBar, VUHDO_getTargetBarRoleIcon(tTgButton, 50), sBarScaling["targetWidth"]);
VUHDO_initBarTexts(tTgButton, tTgHealthBar, sBarScaling["targetWidth"]);
VUHDO_initOverhealText(tTgHealthBar, sBarScaling["targetWidth"]);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["BACKGROUND_BAR"] ~= "" then
VUHDO_getHealthBar(tTgButton, 3):SetStatusBarColor(0, 0, 0, 0.4);
else
VUHDO_getHealthBar(tTgButton, 3):SetStatusBarColor(0, 0, 0, 0);
end
else
VUHDO_getTargetButton(sButton):Hide();
end
end
--
local tTotButton;
local tTgHealthBar;
local function VUHDO_initTotBar()
if sBarScaling["showTot"] then
tTotButton = VUHDO_getTotButton(sButton);
tTotButton:SetAlpha(0);
tTotButton:ClearAllPoints();
if sBarScaling["targetOrientation"] == 1 then
if sBarScaling["showTarget"] then
tTgButton = VUHDO_getTargetButton(sButton);
tTotButton:SetPoint("TOPLEFT", tTgButton:GetName(), "TOPRIGHT", sBarScaling["totSpacing"], 0);
else
tTotButton:SetPoint("TOPLEFT", sHealthBar:GetName(), "TOPRIGHT", sBarScaling["totSpacing"], 0);
end
else
if sBarScaling["showTarget"] then
tTgButton = VUHDO_getTargetButton(sButton);
tTotButton:SetPoint("TOPRIGHT", tTgButton:GetName(), "TOPLEFT", -sBarScaling["totSpacing"], 0);
else
tTotButton:SetPoint("TOPRIGHT", sHealthBar:GetName(), "TOPLEFT", -sBarScaling["totSpacing"], 0);
end
end
tTotButton:SetWidth(sBarScaling["totWidth"]);
tTotButton:SetHeight(sBarScaling["barHeight"]);
tTotButton:Show();
tTgHealthBar = VUHDO_getHealthBar(sButton, 14);
tTgHealthBar:SetValue(1);
tTgHealthBar:SetHeight(sBarHeight);
VUHDO_initBackgroundBar(VUHDO_getHealthBar(sButton, 15));
VUHDO_initManaBar(tTotButton, VUHDO_getHealthBar(sButton, 16), sBarScaling["totWidth"], true);
VUHDO_initRaidIcon(tTgHealthBar, VUHDO_getTargetBarRoleIcon(tTotButton, 50), sBarScaling["totWidth"]);
VUHDO_initBarTexts(tTgButton, tTgHealthBar, sBarScaling["totWidth"]);
VUHDO_initOverhealText(tTgHealthBar, sBarScaling["totWidth"]);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["BACKGROUND_BAR"] ~= "" then
VUHDO_getHealthBar(tTotButton, 3):SetStatusBarColor(0, 0, 0, 0.4);
else
VUHDO_getHealthBar(tTotButton, 3):SetStatusBarColor(0, 0, 0, 0);
end
else
VUHDO_getTotButton(sButton):Hide();
end
end
--
local function VUHDO_initFlashBar()
tBar = _G[sButton:GetName() .. "BgBarIcBarHlBarFlBar"];
tBar:SetStatusBarTexture("Interface\\AddOns\\VuhDo\\Images\\white_square_16_16");
tBar:SetStatusBarColor(1, 0.8, 0.8, 1);
tBar:SetAlpha(0);
end
--
local function VUHDO_initReadyCheckIcon()
VUHDO_getBarRoleIcon(sButton, 20):Hide();
end
--
local function VUHDO_initHighlightBar()
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["MOUSEOVER_HIGHLIGHT"] == "" then
VUHDO_getHealthBar(sButton, 8):Hide();
else
tBar = VUHDO_getHealthBar(sButton, 8);
VUHDO_setLlcStatusBarTexture(tBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["MOUSEOVER_HIGHLIGHT"]["TEXTURE"]);
tBar:SetAlpha(0);
tBar:Show();
end
end
--
local function VUHDO_initSideBarLeft()
tBar = VUHDO_getHealthBar(sButton, 17);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["SIDE_LEFT"] == "" then
tBar:ClearAllPoints();
tBar:Hide();
else
tBar:SetPoint("RIGHT", sHealthBar:GetName(), "LEFT", 0, 0);
tBar:SetWidth(sSideBarLeftWidth);
tBar:SetHeight(sBarHeight);
VUHDO_setLlcStatusBarTexture(tBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["SIDE_LEFT"]["TEXTURE"]);
tBar:Show();
end
VUHDO_customizeIconText(tBar, 32, VUHDO_getHealthBarText(sButton, 17),
VUHDO_INDICATOR_CONFIG["TEXT_INDICATORS"]["SIDE_LEFT"]["TEXT"]);
end
--
local function VUHDO_initSideBarRight()
tBar = VUHDO_getHealthBar(sButton, 18);
if VUHDO_INDICATOR_CONFIG["BOUQUETS"]["SIDE_RIGHT"] == "" then
tBar:ClearAllPoints();
tBar:Hide();
else
tBar:SetPoint("LEFT", sHealthBar:GetName(), "RIGHT", 0, 0);
tBar:SetWidth(sSideBarRightWidth);
tBar:SetHeight(sBarHeight);
VUHDO_setLlcStatusBarTexture(tBar, VUHDO_INDICATOR_CONFIG["CUSTOM"]["SIDE_RIGHT"]["TEXTURE"]);
tBar:Show();
end
VUHDO_customizeIconText(tBar, 32, VUHDO_getHealthBarText(sButton, 18),
VUHDO_INDICATOR_CONFIG["TEXT_INDICATORS"]["SIDE_RIGHT"]["TEXT"]);
end
--
function VUHDO_initButtonStatics(aButton, aPanelNum)
VUHDO_initButtonStaticsHots(aButton, aPanelNum);
VUHDO_initButtonStaticsCustomDebuffs(aButton, aPanelNum);
sButton = aButton;
sHealthBar = VUHDO_getHealthBar(aButton, 1);
end
local VUHDO_initButtonStatics = VUHDO_initButtonStatics;
--
function VUHDO_getStatusbarOrientationString(anIndicatorName)
if VUHDO_INDICATOR_CONFIG["CUSTOM"][anIndicatorName]["vertical"] then
return VUHDO_INDICATOR_CONFIG["CUSTOM"][anIndicatorName]["turnAxis"]
and "VERTICAL_INV" or "VERTICAL";
else
return VUHDO_INDICATOR_CONFIG["CUSTOM"][anIndicatorName]["turnAxis"]
and "HORIZONTAL_INV" or "HORIZONTAL";
end
end
--
local tIsInverted;
local tOrientation;
local tClickPar;
local tFrame;
function VUHDO_initHealButton(aButton, aPanelNum)
tClickPar = VUHDO_CONFIG["ON_MOUSE_UP"] and "AnyUp" or "AnyDown";
aButton:RegisterForClicks(tClickPar);
for tCnt = 40, 44 do
tFrame = VUHDO_getBarIconFrame(aButton, tCnt);
if tFrame then tFrame:RegisterForClicks(tClickPar); end
end
-- Texture
if sStatusTexture then
for tCnt = 1, 19 do
VUHDO_getHealthBar(aButton, tCnt):SetStatusBarTexture(sStatusTexture);
end
end
-- Invert Growth
tIsInverted = VUHDO_INDICATOR_CONFIG["CUSTOM"]["HEALTH_BAR"]["invertGrowth"];
VUHDO_getHealthBar(aButton, 1):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 5):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 6):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 14):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 19):SetIsInverted(tIsInverted);
tIsInverted = VUHDO_INDICATOR_CONFIG["CUSTOM"]["MANA_BAR"]["invertGrowth"];
VUHDO_getHealthBar(aButton, 2):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 13):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 16):SetIsInverted(tIsInverted);
VUHDO_getHealthBar(aButton, 7):SetIsInverted(VUHDO_INDICATOR_CONFIG["CUSTOM"]["THREAT_BAR"]["invertGrowth"]);
VUHDO_getHealthBar(aButton, 17):SetIsInverted(VUHDO_INDICATOR_CONFIG["CUSTOM"]["SIDE_LEFT"]["invertGrowth"])
VUHDO_getHealthBar(aButton, 18):SetIsInverted(VUHDO_INDICATOR_CONFIG["CUSTOM"]["SIDE_RIGHT"]["invertGrowth"]);
-- Orient Health
tOrientation = VUHDO_getStatusbarOrientationString("HEALTH_BAR");
VUHDO_getHealthBar(aButton, 1):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 5):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 6):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 14):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 19):SetOrientation(tOrientation);
-- Orient Mana
tOrientation = VUHDO_getStatusbarOrientationString("MANA_BAR");
VUHDO_getHealthBar(aButton, 2):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 13):SetOrientation(tOrientation);
VUHDO_getHealthBar(aButton, 16):SetOrientation(tOrientation);
-- Orient Threat
VUHDO_getHealthBar(aButton, 7):SetOrientation(VUHDO_getStatusbarOrientationString("THREAT_BAR"));
-- Orient side bar left
VUHDO_getHealthBar(aButton, 17):SetOrientation(VUHDO_getStatusbarOrientationString("SIDE_LEFT"));
-- Orient side bar right
VUHDO_getHealthBar(aButton, 18):SetOrientation(VUHDO_getStatusbarOrientationString("SIDE_RIGHT"));
VUHDO_initButtonStatics(aButton, aPanelNum);
VUHDO_initBackgroundBar(VUHDO_getHealthBar(sButton, 3));
VUHDO_initIncomingOrShieldBar(6);
VUHDO_initIncomingOrShieldBar(19);
VUHDO_initHealthBar();
VUHDO_initAggroTexture();
VUHDO_initManaBar(sButton, VUHDO_getHealthBar(sButton, 2), sBarScaling["barWidth"], false);
VUHDO_initTargetBar();
VUHDO_initTotBar();
VUHDO_initThreatBar();
VUHDO_initBarTexts(aButton, sHealthBar, sBarWidth);
VUHDO_initOverhealText(sHealthBar, sBarScaling["barWidth"]);
VUHDO_initHighlightBar();
VUHDO_initSideBarLeft();
VUHDO_initSideBarRight();
VUHDO_initAggroBar();
VUHDO_initHotBars();
VUHDO_initAllHotIcons();
VUHDO_initCustomDebuffs();
VUHDO_initRaidIcon(sHealthBar, VUHDO_getBarRoleIcon(sButton, 50), sBarScaling["barWidth"]);
VUHDO_initSwiftmendIndicator();
VUHDO_initFlashBar();
VUHDO_initReadyCheckIcon();
if VUHDO_CONFIG["IS_CLIQUE_COMPAT_MODE"] then
ClickCastFrames = ClickCastFrames or {};
ClickCastFrames[aButton] = true;
ClickCastFrames[_G[aButton:GetName() .. "Tg"]] = true;
ClickCastFrames[_G[aButton:GetName() .. "Tot"]] = true;
local tIcon;
for tIconNum = 40, 44 do
tIcon = _G[format("%sBgBarIcBarHlBarIc%d", aButton:GetName(), tIconNum)];
if tIcon then ClickCastFrames[tIcon] = true; end
end
end
end
local VUHDO_initHealButton = VUHDO_initHealButton;
--
local tHealButton;
local tGroupPanel;
local tNumButtons;
local function VUHDO_initAllHealButtons(aPanel, aPanelNum)
tNumButtons = VUHDO_getNumButtonsPanel(aPanelNum);
for tCnt = 1, tNumButtons do
tHealButton = VUHDO_getOrCreateHealButton(tCnt, aPanelNum);
if VUHDO_LibButtonFacade then VUHDO_initButtonButtonFacade(tHealButton); end
VUHDO_initHealButton(tHealButton, aPanelNum);
end
tCnt = tNumButtons + 1;
while true do
tHealButton = VUHDO_getHealButton(tCnt, aPanelNum);
if tHealButton then
tHealButton["raidid"] = nil;
tHealButton:SetAttribute("unit", nil);
tHealButton:ClearAllPoints();
tHealButton:Hide();
else break; end
tCnt = tCnt + 1;
end
for tCnt = 1, #VUHDO_PANEL_MODELS[aPanelNum] do
tGroupPanel = VUHDO_getGroupOrderPanel(aPanelNum, tCnt);
if tGroupPanel then tGroupPanel:Hide(); end
tGroupPanel = VUHDO_getGroupSelectPanel(aPanelNum, tCnt);
if tGroupPanel then tGroupPanel:Hide(); end
end
end
--
local tSetup;
local tPosition;
local tPanelColor;
local tLabel;
local tGrowth;
local tScale;
local tFactor;
local tX, tY;
VUHDO_PROHIBIT_REPOS = false;
local function VUHDO_initPanel(aPanel, aPanelNum)
tSetup = VUHDO_PANEL_SETUP[aPanelNum];
tPosition = tSetup["POSITION"];
tPanelColor = tSetup["PANEL_COLOR"];
tScale = tSetup["SCALING"]["scale"];
tFactor = tScale / aPanel:GetScale();
tGrowth = tPosition["growth"];
aPanel:ClearAllPoints();
aPanel:SetWidth(tPosition["width"]);
aPanel:SetHeight(tPosition["height"]);
aPanel:SetScale(tScale);
aPanel:SetPoint(tPosition["orientation"], "UIParent", tPosition["relativePoint"], tPosition["x"], tPosition["y"]);
aPanel:EnableMouseWheel(1);
aPanel:SetFrameStrata(tSetup["frameStrata"] or "MEDIUM");
if aPanel:IsShown() then
tX, tY = VUHDO_getAnchorCoords(aPanel, tGrowth, tFactor);
aPanel:ClearAllPoints();
if VUHDO_PROHIBIT_REPOS then
aPanel:SetPoint(tGrowth, "UIParent", "BOTTOMLEFT", tX, tY);
else
aPanel:SetPoint(tGrowth, "UIParent", "BOTTOMLEFT", tX * tFactor, tY * tFactor);
end
end
VUHDO_PANEL_SETUP[aPanelNum]["POSITION"]["orientation"] = tGrowth;
aPanel:SetWidth(VUHDO_getHealPanelWidth(aPanelNum));
aPanel:SetHeight(VUHDO_getHealPanelHeight(aPanelNum));
VUHDO_savePanelCoords(aPanel);
tLabel = VUHDO_getPanelNumLabel(aPanel);
VUHDO_STD_BACKDROP = aPanel:GetBackdrop();
VUHDO_STD_BACKDROP["edgeFile"] = tPanelColor["BORDER"]["file"];
VUHDO_STD_BACKDROP["edgeSize"] = tPanelColor["BORDER"]["edgeSize"];
VUHDO_STD_BACKDROP["insets"]["left"] = tPanelColor["BORDER"]["insets"];
VUHDO_STD_BACKDROP["insets"]["right"] = tPanelColor["BORDER"]["insets"];
VUHDO_STD_BACKDROP["insets"]["top"] = tPanelColor["BORDER"]["insets"];
VUHDO_STD_BACKDROP["insets"]["bottom"] = tPanelColor["BORDER"]["insets"];
aPanel.backdropInfo = VUHDO_STD_BACKDROP;
aPanel:ApplyBackdrop();
aPanel.backdropBorderColor = CreateColor(VUHDO_backColor(tPanelColor["BORDER"]));
aPanel.backdropBorderColorAlpha = tPanelColor["BORDER"]["O"] or 1;
aPanel:SetBackdropBorderColor(VUHDO_backColor(tPanelColor["BORDER"]));
if VUHDO_IS_PANEL_CONFIG then
tLabel:SetText("[PANEL " .. aPanelNum .. "]");
tLabel:GetParent():SetPoint("BOTTOM", aPanel:GetName(), "TOP", 0, 3);
tLabel:GetParent():Show();
if DESIGN_MISC_PANEL_NUM == aPanelNum and VuhDoNewOptionsPanelPanel and VuhDoNewOptionsPanelPanel:IsVisible() then
VUHDO_DESIGN_BACKDROP = VUHDO_deepCopyTable(VUHDO_STD_BACKDROP);
tLabel:SetTextColor(1, 1, 0, 1);
VUHDO_UIFrameFlash(tLabel, 0.25, 0.5, 10000, true, 0.3, 0);
aPanel.backdropInfo = VUHDO_DESIGN_BACKDROP;
aPanel:ApplyBackdrop();
aPanel.backdropBorderColor = CreateColor(1, 1, 1);
aPanel.backdropBorderColorAlpha = 1;
aPanel:SetBackdropBorderColor(VUHDO_backColor(tPanelColor["BORDER"]));
else
aPanel.backdropInfo = VUHDO_STD_BACKDROP;
aPanel:ApplyBackdrop();
aPanel.backdropBorderColor = CreateColor(VUHDO_backColor(tPanelColor["BORDER"]));
aPanel.backdropBorderColorAlpha = tPanelColor["BORDER"]["O"] or 1;
aPanel:SetBackdropBorderColor(VUHDO_backColor(tPanelColor["BORDER"]));
tLabel:SetTextColor(0.4, 0.4, 0.4, 1);
VUHDO_UIFrameFlashStop(tLabel);
end
if DESIGN_MISC_PANEL_NUM then
VuhDoNewOptionsTabbedFramePanelNumLabelLabel:SetText(VUHDO_I18N_PANEL .. " #" .. DESIGN_MISC_PANEL_NUM);
VuhDoNewOptionsTabbedFramePanelNumLabelLabel:Show();
else
VuhDoNewOptionsTabbedFramePanelNumLabelLabel:Hide();
end
_G[aPanel:GetName() .. "NewTxu"]:SetShown(not VUHDO_CONFIG_SHOW_RAID);
_G[aPanel:GetName() .. "ClrTxu"]:SetShown(not VUHDO_CONFIG_SHOW_RAID);
else
_G[aPanel:GetName() .. "NewTxu"]:Hide();
_G[aPanel:GetName() .. "ClrTxu"]:Hide();
tLabel:GetParent():Hide();
if VuhDoNewOptionsTabbedFrame then
VuhDoNewOptionsTabbedFramePanelNumLabelLabel:Hide();
end
end
aPanel:SetBackdropColor(VUHDO_backColor(tPanelColor["BACK"]));
aPanel:EnableMouse(not VUHDO_CONFIG["LOCK_CLICKS_THROUGH"]);
aPanel:StopMovingOrSizing();
aPanel["isMoving"] = false;
end
--
function VUHDO_redrawPanel(aPanelNum, anIsFixAllFrameLevels)
if VUHDO_isPanelPopulated(aPanelNum) then
tPanel = VUHDO_getOrCreateActionPanel(aPanelNum);
VUHDO_initLocalVars(aPanelNum);
VUHDO_initAllHealButtons(tPanel, aPanelNum);
if VUHDO_isConfigPanelShowing() then
VUHDO_positionAllGroupConfigPanels(aPanelNum);
else
VUHDO_positionAllHealButtons(tPanel, aPanelNum);
end
VUHDO_positionTableHeaders(tPanel, aPanelNum);
VUHDO_initPanel(tPanel, aPanelNum);
if VUHDO_isPanelVisible(aPanelNum) then
VUHDO_fixFrameLevels(anIsFixAllFrameLevels, tPanel, 2, tPanel:GetChildren());
tPanel:Show();
else
tPanel:Hide();
end
else
VUHDO_getActionPanelOrStub(aPanelNum):Hide();
end
end
local VUHDO_redrawPanel = VUHDO_redrawPanel;
--
function VUHDO_redrawAllPanels(anIsFixAllFrameLevels)
VUHDO_resetMacroCaches();
resetSizeCalcCaches();
twipe(VUHDO_UNIT_BUTTONS);
twipe(VUHDO_UNIT_BUTTONS_PANEL);
tBackdrop = nil;
tBackdropCluster = nil;
for tCnt = 1, 10 do -- VUHDO_MAX_PANELS
VUHDO_redrawPanel(tCnt, anIsFixAllFrameLevels);
end
VUHDO_setupAllButtonsUnitWatch(VUHDO_CONFIG["HIDE_EMPTY_BUTTONS"] and not VUHDO_IS_PANEL_CONFIG and not VUHDO_isConfigDemoUsers());
VUHDO_updateAllRaidBars();
-- GCD bar
if VUHDO_isShowGcd() then
local tGcdCol = VUHDO_PANEL_SETUP["BAR_COLORS"]["GCD_BAR"];
VuhDoGcdStatusBar:SetVuhDoColor(tGcdCol);
VuhDoGcdStatusBar:SetStatusBarTexture("Interface\\AddOns\\VuhDo\\Images\\white_square_16_16");
VuhDoGcdStatusBar:SetValue(0);
VuhDoGcdStatusBar:SetFrameStrata("TOOLTIP");
end
VuhDoGcdStatusBar:Hide();
-- Direction arrow
VuhDoDirectionFrameArrow:SetVertexColor(VUHDO_backColor(VUHDO_PANEL_SETUP["BAR_COLORS"]["DIRECTION"]));
VuhDoDirectionFrameText:SetFont(VUHDO_getFont(VUHDO_PANEL_SETUP["HOTS"]["TIMER_TEXT"]["FONT"]), 6, "OUTLINE");
VuhDoDirectionFrameText:SetPoint("TOP", "VuhDoDirectionFrameArrow", "CENTER", 5, -2);
VuhDoDirectionFrameText:SetText("");
VuhDoDirectionFrame:SetFrameStrata("TOOLTIP");
VUHDO_initAllEventBouquets();
end
local VUHDO_redrawAllPanels = VUHDO_redrawAllPanels;
--
function VUHDO_reloadUI(anIsFixAllFrameLevels)
if InCombatLockdown() then return; end
VUHDO_IS_RELOADING = true;
VUHDO_initAllBurstCaches(); -- Wichtig f�r INTERNAL_TOGGLES=>Clusters
VUHDO_reloadRaidMembers();
VUHDO_resetNameTextCache();
VUHDO_redrawAllPanels(anIsFixAllFrameLevels);
VUHDO_updateAllCustomDebuffs(true);
VUHDO_rebuildTargets();
VUHDO_updatePanelVisibility();
VUHDO_IS_RELOADING = false;
VUHDO_reloadBuffPanel();
VUHDO_initDebuffs(); -- Talente scheinen recht sp�t zur Verf�gung zu stehen...
end
--
function VUHDO_lnfReloadUI()
if InCombatLockdown() then return; end
VUHDO_IS_RELOADING = true;
VUHDO_initAllBurstCaches();
VUHDO_reloadRaidMembers();
VUHDO_updatePanelVisibility();
VUHDO_redrawAllPanels(false);
VUHDO_buildGenericHealthBarBouquet();
VUHDO_buildGenericTargetHealthBouquet();
VUHDO_bouqetsChanged();
VUHDO_initAllBurstCaches();
VUHDO_IS_RELOADING = false;
end