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.
152 lines
4.9 KiB
152 lines
4.9 KiB
|
|
local sDebuffConfig;
|
|
local VUHDO_getBarIcon;
|
|
local VUHDO_getBarIconTimer;
|
|
local VUHDO_getBarIconCounter;
|
|
local VUHDO_getBarIconName;
|
|
local VUHDO_customizeIconText;
|
|
local sSign;
|
|
local sMaxNum;
|
|
local sPoint;
|
|
local sColSpacing;
|
|
local sTopSpacing;
|
|
local sBottomSpacing;
|
|
local sIsTooltipCache = { };
|
|
|
|
function VUHDO_panelRedrawCustomDebuffsInitLocalOverrides()
|
|
VUHDO_getBarIcon = _G["VUHDO_getBarIcon"];
|
|
VUHDO_getBarIconTimer = _G["VUHDO_getBarIconTimer"];
|
|
VUHDO_getBarIconCounter = _G["VUHDO_getBarIconCounter"];
|
|
VUHDO_getBarIconName = _G["VUHDO_getBarIconName"];
|
|
VUHDO_customizeIconText = _G["VUHDO_customizeIconText"];
|
|
|
|
sDebuffConfig = VUHDO_CONFIG["CUSTOM_DEBUFF"];
|
|
sSign = ("TOPLEFT" == sDebuffConfig["point"] or "BOTTOMLEFT" == sDebuffConfig["point"]) and 1 or -1;
|
|
sMaxNum = sDebuffConfig["max_num"];
|
|
sPoint = sDebuffConfig["point"];
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local sBarScaling;
|
|
local sXOffset, sYOffset;
|
|
local sHeight;
|
|
local sStep;
|
|
function VUHDO_panelRedrwawCustomDebuffsInitLocalVars(aPanelNum)
|
|
sBarScaling = VUHDO_PANEL_SETUP[aPanelNum]["SCALING"];
|
|
sXOffset = sDebuffConfig["xAdjust"] * sBarScaling["barWidth"] * 0.01;
|
|
sYOffset = -sDebuffConfig["yAdjust"] * sBarScaling["barHeight"] * 0.01;
|
|
sHeight = sBarScaling["barHeight"];
|
|
sStep = sSign * sHeight;
|
|
table.wipe(sIsTooltipCache);
|
|
sColSpacing = sBarScaling["columnSpacing"];
|
|
sTopSpacing = sBarScaling["rowSpacing"] + VUHDO_getAdditionalTopHeight(aPanelNum);
|
|
sBottomSpacing = sBarScaling["rowSpacing"] + VUHDO_getAdditionalBottomHeight(aPanelNum);
|
|
end
|
|
|
|
|
|
local sButton;
|
|
local sHealthBar;
|
|
function VUHDO_initButtonStaticsCustomDebuffs(aButton, aPanelNum)
|
|
sButton = aButton;
|
|
sHealthBar = VUHDO_getHealthBar(aButton, 1);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tMaxDiff, tMaxDiffTop, tMaxDiffBottom, tMaxDiffX, tRScale, tPScale;
|
|
local function VUHDO_isMostlyInBounds(aRegion, aParent, aMaxDiffFactor)
|
|
|
|
if not aRegion:GetTop() or not aParent:GetTop() then return nil; end
|
|
|
|
tRScale, tPScale = aRegion:GetEffectiveScale() or 1, aParent:GetEffectiveScale() or 1;
|
|
|
|
tMaxDiff = (aRegion:GetWidth() or 0) * aMaxDiffFactor * tRScale;
|
|
tMaxDiffX = tMaxDiff + sColSpacing * tPScale;
|
|
--tMaxDiffY = tMaxDiff + sRowSpacing * tPScale;
|
|
tMaxDiffTop = tMaxDiff + sTopSpacing * tPScale
|
|
tMaxDiffBottom = tMaxDiff + sBottomSpacing * tPScale;
|
|
|
|
--VUHDO_xMsg(floor(tMaxDiffX + 0.5), floor(tMaxDiffY + 0.5));
|
|
|
|
return ((aRegion:GetLeft() or 0) * tRScale >= (aParent:GetLeft() or 0) * tPScale - tMaxDiffX
|
|
and (aRegion:GetTop() or 0) * tRScale <= (aParent:GetTop() or 0) * tPScale + tMaxDiffTop
|
|
and (aRegion:GetRight() or 0) * tRScale <= (aParent:GetRight() or 0) * tPScale + tMaxDiffX
|
|
and (aRegion:GetBottom() or 0) * tRScale >= (aParent:GetBottom() or 0) * tPScale - tMaxDiffBottom) and 1 or 0;
|
|
|
|
end
|
|
|
|
|
|
--
|
|
local tFrame;
|
|
local tIcon, tCounter, tName, tTimer;
|
|
local tIconIdx;
|
|
local tIconName;
|
|
local tButton;
|
|
function VUHDO_initCustomDebuffs()
|
|
-- Wir brauchen mind. 1 f�r LastCustomDebuffBouquet
|
|
if sMaxNum == 0 then
|
|
VUHDO_getOrCreateCuDeButton(sButton, 40);
|
|
else
|
|
for tCnt = 0, sMaxNum - 1 do
|
|
tIconIdx = 40 + tCnt;
|
|
|
|
tButton = VUHDO_getOrCreateCuDeButton(sButton, tIconIdx);
|
|
tButton:ClearAllPoints();
|
|
tButton:SetPoint(sPoint, sHealthBar:GetName(), sPoint, sXOffset + (tCnt * sStep), sYOffset); -- center
|
|
tButton:SetWidth(sHeight);
|
|
tButton:SetHeight(sHeight);
|
|
tButton:SetScale(1);
|
|
|
|
tFrame = VUHDO_getBarIconFrame(sButton, tIconIdx);
|
|
tFrame:ClearAllPoints();
|
|
tFrame:SetPoint(sPoint, sHealthBar:GetName(), sPoint, sXOffset + (tCnt * sStep), sYOffset); -- center
|
|
|
|
if not sIsTooltipCache[tIconIdx] then
|
|
sIsTooltipCache[tIconIdx] = VUHDO_isMostlyInBounds(tButton, sButton, 0.33);
|
|
end
|
|
|
|
if sIsTooltipCache[tIconIdx] == 1 then
|
|
tFrame:SetWidth(sHeight);
|
|
tFrame:SetHeight(sHeight);
|
|
else
|
|
tFrame:SetWidth(0.001);
|
|
tFrame:SetHeight(0.001);
|
|
--VUHDO_Msg("Removing " .. (tCnt + 1));
|
|
end
|
|
tFrame:SetAlpha(0);
|
|
tFrame:SetScale(VUHDO_CONFIG["CUSTOM_DEBUFF"]["scale"] * 0.7);
|
|
tFrame:Show();
|
|
|
|
tIcon = VUHDO_getBarIcon(sButton, tIconIdx);
|
|
tIcon:SetAllPoints();
|
|
tIconName = tIcon:GetName();
|
|
|
|
tTimer = VUHDO_getBarIconTimer(sButton, tIconIdx);
|
|
VUHDO_customizeIconText(tIcon, sHeight, tTimer, VUHDO_CONFIG["CUSTOM_DEBUFF"]["TIMER_TEXT"]);
|
|
tTimer:Show();
|
|
|
|
tCounter = VUHDO_getBarIconCounter(sButton, tIconIdx);
|
|
VUHDO_customizeIconText(tIcon, sHeight, tCounter, VUHDO_CONFIG["CUSTOM_DEBUFF"]["COUNTER_TEXT"]);
|
|
tCounter:Show();
|
|
|
|
tName = VUHDO_getBarIconName(sButton, tIconIdx);
|
|
tName:SetPoint("BOTTOM", tIconName, "TOP", 0, 0);
|
|
tName:SetFont(GameFontNormalSmall:GetFont(), 12, "OUTLINE", "");
|
|
tName:SetShadowColor(0, 0, 0, 0);
|
|
tName:SetTextColor(1, 1, 1, 1);
|
|
tName:SetText("");
|
|
tName:Show();
|
|
end
|
|
end
|
|
|
|
for tCnt = sMaxNum + 40, 44 do
|
|
tFrame = VUHDO_getBarIconFrame(sButton, tCnt);
|
|
if tFrame then
|
|
tFrame:ClearAllPoints();
|
|
tFrame:Hide();
|
|
end
|
|
end
|
|
end
|
|
|