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.

234 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