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.
233 lines
6.9 KiB
233 lines
6.9 KiB
|
|
-- BURST CACHE ---------------------------------------------------
|
|
local _G = _G;
|
|
local table = table;
|
|
local floor = floor;
|
|
local ipairs = ipairs;
|
|
local twipe = table.wipe;
|
|
|
|
local VUHDO_CONFIG;
|
|
local VUHDO_PANEL_SETUP;
|
|
local VUHDO_RAID;
|
|
|
|
local VUHDO_getHeaderPos;
|
|
local VUHDO_customizeHeader;
|
|
local VUHDO_getDynamicModelArray;
|
|
local VUHDO_getGroupMembersSorted;
|
|
local VUHDO_getHealButton;
|
|
local VUHDO_getHealButtonPos;
|
|
local VUHDO_setupAllHealButtonAttributes;
|
|
local VUHDO_isDifferentButtonPoint;
|
|
local VUHDO_addUnitButton;
|
|
local VUHDO_getTargetButton;
|
|
local VUHDO_getTotButton;
|
|
local VUHDO_getOrCreateHealButton;
|
|
local VUHDO_updateAllCustomDebuffs;
|
|
local VUHDO_getHeaderWidth;
|
|
local VUHDO_initAllEventBouquets;
|
|
local VUHDO_getActionPanelOrStub;
|
|
local VUHDO_isPanelPopulated;
|
|
local VUHDO_updateAllRaidBars;
|
|
local VUHDO_isTableHeaderOrFooter;
|
|
local VUHDO_fixFrameLevels;
|
|
local VUHDO_resetNameTextCache;
|
|
local VUHDO_reloadRaidMembers;
|
|
local VUHDO_isPanelVisible;
|
|
local VUHDO_positionHealButton;
|
|
local VUHDO_positionTableHeaders;
|
|
|
|
local sLastDebuffIcon;
|
|
local sShowPanels;
|
|
|
|
function VUHDO_panelRefreshInitLocalOverrides()
|
|
VUHDO_CONFIG = _G["VUHDO_CONFIG"];
|
|
VUHDO_PANEL_SETUP = _G["VUHDO_PANEL_SETUP"];
|
|
VUHDO_RAID = _G["VUHDO_RAID"];
|
|
|
|
VUHDO_getHeaderPos = _G["VUHDO_getHeaderPos"];
|
|
VUHDO_customizeHeader = _G["VUHDO_customizeHeader"];
|
|
VUHDO_getDynamicModelArray = _G["VUHDO_getDynamicModelArray"];
|
|
VUHDO_getGroupMembersSorted = _G["VUHDO_getGroupMembersSorted"];
|
|
VUHDO_getHealButton = _G["VUHDO_getHealButton"];
|
|
VUHDO_getHealButtonPos = _G["VUHDO_getHealButtonPos"];
|
|
VUHDO_setupAllHealButtonAttributes = _G["VUHDO_setupAllHealButtonAttributes"];
|
|
VUHDO_isDifferentButtonPoint = _G["VUHDO_isDifferentButtonPoint"];
|
|
VUHDO_addUnitButton = _G["VUHDO_addUnitButton"];
|
|
VUHDO_getTargetButton = _G["VUHDO_getTargetButton"];
|
|
VUHDO_getTotButton = _G["VUHDO_getTotButton"];
|
|
VUHDO_getOrCreateHealButton = _G["VUHDO_getOrCreateHealButton"];
|
|
VUHDO_updateAllCustomDebuffs = _G["VUHDO_updateAllCustomDebuffs"];
|
|
VUHDO_getHeaderWidth = _G["VUHDO_getHeaderWidth"];
|
|
VUHDO_initAllEventBouquets = _G["VUHDO_initAllEventBouquets"];
|
|
VUHDO_getActionPanelOrStub = _G["VUHDO_getActionPanelOrStub"];
|
|
VUHDO_isPanelPopulated = _G["VUHDO_isPanelPopulated"];
|
|
VUHDO_updateAllRaidBars = _G["VUHDO_updateAllRaidBars"];
|
|
VUHDO_isTableHeaderOrFooter = _G["VUHDO_isTableHeaderOrFooter"];
|
|
VUHDO_fixFrameLevels = _G["VUHDO_fixFrameLevels"];
|
|
VUHDO_resetNameTextCache = _G["VUHDO_resetNameTextCache"];
|
|
VUHDO_reloadRaidMembers = _G["VUHDO_reloadRaidMembers"];
|
|
VUHDO_isPanelVisible = _G["VUHDO_isPanelVisible"];
|
|
VUHDO_positionHealButton = _G["VUHDO_positionHealButton"];
|
|
VUHDO_positionTableHeaders = _G["VUHDO_positionTableHeaders"];
|
|
|
|
sLastDebuffIcon = VUHDO_CONFIG["CUSTOM_DEBUFF"]["max_num"] + 39;
|
|
sShowPanels = VUHDO_CONFIG["SHOW_PANELS"];
|
|
end
|
|
-- BURST CACHE ---------------------------------------------------
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_hasPanelButtons(aPanelNum)
|
|
if not sShowPanels or not VUHDO_IS_SHOWN_BY_GROUP then
|
|
return false;
|
|
end
|
|
|
|
return #VUHDO_PANEL_DYN_MODELS[aPanelNum] > 0;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tColIdx;
|
|
local tButtonIdx;
|
|
local tModels;
|
|
local tSortBy;
|
|
local tPanelName;
|
|
local tSetup;
|
|
local tX, tY;
|
|
local tButton;
|
|
local tGroupArray;
|
|
local tDebuffFrame;
|
|
local function VUHDO_refreshPositionAllHealButtons(aPanel, aPanelNum)
|
|
tSetup = VUHDO_PANEL_SETUP[aPanelNum];
|
|
tModels = VUHDO_getDynamicModelArray(aPanelNum);
|
|
tSortBy = tSetup["MODEL"]["sort"];
|
|
tPanelName = aPanel:GetName();
|
|
|
|
tColIdx = 1;
|
|
tButtonIdx = 1;
|
|
|
|
for tModelIndex, tModelId in ipairs(tModels) do
|
|
tGroupArray = VUHDO_getGroupMembersSorted(tModelId, tSortBy, aPanelNum, tModelIndex);
|
|
|
|
for tGroupIdx, tUnit in ipairs(tGroupArray) do
|
|
|
|
tButton = VUHDO_getOrCreateHealButton(tButtonIdx, aPanelNum);
|
|
tButtonIdx = tButtonIdx + 1;
|
|
|
|
if tButton["raidid"] ~= tUnit then
|
|
VUHDO_setupAllHealButtonAttributes(tButton, tUnit, false, 70 == tModelId, false, false); -- VUHDO_ID_VEHICLES
|
|
for tCnt = 40, sLastDebuffIcon do
|
|
tDebuffFrame = VUHDO_getBarIconFrame(tButton, tCnt);
|
|
if tDebuffFrame then
|
|
VUHDO_setupAllHealButtonAttributes(tDebuffFrame, tUnit, false, 70 == tModelId, false, true); -- VUHDO_ID_VEHICLES
|
|
end
|
|
end
|
|
VUHDO_setupAllTargetButtonAttributes(VUHDO_getTargetButton(tButton), tUnit);
|
|
VUHDO_setupAllTotButtonAttributes(VUHDO_getTotButton(tButton), tUnit);
|
|
end
|
|
|
|
tX, tY = VUHDO_getHealButtonPos(tColIdx, tGroupIdx, aPanelNum);
|
|
if VUHDO_isDifferentButtonPoint(tButton, tX, -tY) then
|
|
tButton:Hide();-- for clearing secure handler mouse wheel bindings
|
|
tButton:SetPoint("TOPLEFT", tPanelName, "TOPLEFT", tX, -tY);
|
|
end
|
|
|
|
VUHDO_addUnitButton(tButton, aPanelNum);
|
|
if not tButton:IsShown() then tButton:Show(); end -- Wg. Secure handlers?
|
|
|
|
-- Bei Profil-Wechseln existiert der Button schon, hat aber die falsche Gr��e
|
|
VUHDO_positionHealButton(tButton, tSetup["SCALING"]);
|
|
end
|
|
|
|
tColIdx = tColIdx + 1;
|
|
end
|
|
|
|
while true do
|
|
tButton = VUHDO_getHealButton(tButtonIdx, aPanelNum);
|
|
if not tButton then break; end
|
|
|
|
tButton["raidid"] = nil;
|
|
tButton:SetAttribute("unit", nil);
|
|
tButton:Hide();
|
|
tButtonIdx = tButtonIdx + 1;
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_refreshInitPanel(aPanel, aPanelNum)
|
|
aPanel:SetHeight(VUHDO_getHealPanelHeight(aPanelNum));
|
|
aPanel:SetWidth(VUHDO_getHealPanelWidth(aPanelNum));
|
|
aPanel:StopMovingOrSizing();
|
|
aPanel["isMoving"] = false;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tPanel;
|
|
local function VUHDO_refreshPanel(aPanelNum)
|
|
tPanel = VUHDO_getOrCreateActionPanel(aPanelNum);
|
|
|
|
if VUHDO_hasPanelButtons(aPanelNum) then
|
|
tPanel:Show();
|
|
|
|
VUHDO_refreshInitPanel(tPanel, aPanelNum);
|
|
VUHDO_positionTableHeaders(tPanel, aPanelNum);
|
|
end
|
|
|
|
-- Even if model is not in panel, we need to refresh VUHDO_UNIT_BUTTONS
|
|
if VUHDO_isPanelPopulated(aPanelNum) then
|
|
VUHDO_refreshPositionAllHealButtons(tPanel, aPanelNum);
|
|
VUHDO_fixFrameLevels(false, tPanel, 2, tPanel:GetChildren());
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_refreshAllPanels()
|
|
for tCnt = 1, 10 do -- VUHDO_MAX_PANELS
|
|
if VUHDO_isPanelVisible(tCnt) then
|
|
VUHDO_refreshPanel(tCnt);
|
|
else
|
|
VUHDO_getActionPanelOrStub(tCnt):Hide();
|
|
end
|
|
end
|
|
|
|
VUHDO_updateAllRaidBars();
|
|
VUHDO_updatePanelVisibility();
|
|
VuhDoGcdStatusBar:Hide();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_refreshUiNoMembers()
|
|
VUHDO_resetNameTextCache();
|
|
twipe(VUHDO_UNIT_BUTTONS);
|
|
twipe(VUHDO_UNIT_BUTTONS_PANEL);
|
|
VUHDO_refreshAllPanels();
|
|
VUHDO_updateAllCustomDebuffs(true);
|
|
if VUHDO_INTERNAL_TOGGLES[22] then -- VUHDO_UPDATE_UNIT_TARGET
|
|
VUHDO_rebuildTargets();
|
|
end
|
|
VUHDO_initAllEventBouquets();
|
|
VUHDO_resetDebuffIconDispenser();
|
|
end
|
|
local VUHDO_refreshUiNoMembers = VUHDO_refreshUiNoMembers;
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_refreshUI()
|
|
VUHDO_IS_RELOADING = true;
|
|
|
|
VUHDO_reloadRaidMembers();
|
|
VUHDO_refreshUiNoMembers();
|
|
|
|
VUHDO_IS_RELOADING = false;
|
|
end
|
|
|