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.
242 lines
5.5 KiB
242 lines
5.5 KiB
local _;
|
|
VUHDO_GLOBAL_ICONS = { };
|
|
|
|
local GI_SCAN_MAX = 200001;
|
|
VUHDO_GI_SCAN_IDX = GI_SCAN_MAX;
|
|
|
|
local GetSpellInfo = GetSpellInfo;
|
|
local pairs = pairs;
|
|
|
|
|
|
--
|
|
function VUHDO_removeFromModel(aPanelNum, anOrderNum)
|
|
tremove(VUHDO_PANEL_MODELS[aPanelNum], anOrderNum);
|
|
VUHDO_initDynamicPanelModels();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_insertIntoModel(aPanelNum, anOrderNum, anIsLeft, aModelId)
|
|
tinsert(VUHDO_PANEL_MODELS[aPanelNum], anOrderNum + (anIsLeft and 0 or 1), aModelId)
|
|
VUHDO_initDynamicPanelModels();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_rewritePanelModels()
|
|
for tCnt = 1, VUHDO_MAX_PANELS do
|
|
VUHDO_PANEL_SETUP[tCnt]["MODEL"]["groups"] = VUHDO_PANEL_MODELS[tCnt];
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_tableCount(anArray)
|
|
local tCount = 0;
|
|
for _ in pairs(anArray) do tCount = tCount + 1; end
|
|
return tCount;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_getModelSafeName(anUnsafeName)
|
|
return strtrim(gsub(anUnsafeName or "", "[.#]", " "));
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_getOrCreateGroupOrderPanel(aParentPanelNum, aPanelNum)
|
|
local tName = "Vd" .. aParentPanelNum .. "GrpOrd" .. aPanelNum;
|
|
if not _G[tName] then
|
|
local tPanel = CreateFrame("Frame", tName, _G["Vd" .. aParentPanelNum], "VuhDoGrpOrdTemplate");
|
|
VUHDO_fixFrameLevels(false, tPanel, 2, tPanel:GetChildren());
|
|
end
|
|
|
|
return _G[tName];
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_getOrCreateGroupSelectPanel(aParentPanelNum, aPanelNum)
|
|
local tName = "Vd" .. aParentPanelNum .. "GrpSel" .. aPanelNum;
|
|
if not _G[tName] then
|
|
local tPanel = CreateFrame("Frame", tName, _G["Vd" .. aParentPanelNum], "VuhDoGrpSelTemplate");
|
|
VUHDO_fixFrameLevels(false, tPanel, 2, tPanel:GetChildren());
|
|
end
|
|
|
|
return _G[tName];
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local sGroupOrderBarsRight = { };
|
|
function VUHDO_getConfigOrderBarRight(aPanelNum, anOrderNum)
|
|
local tIndex = aPanelNum * 100 + anOrderNum;
|
|
if not sGroupOrderBarsRight[tIndex] then
|
|
local tPanel = VUHDO_getOrCreateGroupOrderPanel(aPanelNum, anOrderNum);
|
|
sGroupOrderBarsRight[tIndex] = _G[tPanel:GetName() .. "InsTxuR"];
|
|
end
|
|
|
|
return sGroupOrderBarsRight[tIndex];
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local sGroupOrderBarsLeft = { };
|
|
function VUHDO_getConfigOrderBarLeft(aPanelNum, anOrderNum)
|
|
local tIndex = aPanelNum * 100 + anOrderNum;
|
|
if not sGroupOrderBarsLeft[tIndex] then
|
|
local tPanel = VUHDO_getOrCreateGroupOrderPanel(aPanelNum, anOrderNum);
|
|
sGroupOrderBarsLeft[tIndex] = _G[tPanel:GetName() .. "InsTxuL"];
|
|
end
|
|
|
|
return sGroupOrderBarsLeft[tIndex];
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tSpellNameById;
|
|
function VUHDO_resolveSpellId(aSpellName)
|
|
if tonumber(aSpellName or "x") then
|
|
tSpellNameById = GetSpellInfo(tonumber(aSpellName));
|
|
if tSpellNameById then
|
|
return tSpellNameById;
|
|
end
|
|
end
|
|
return aSpellName;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tText, tTextById, tLabel;
|
|
function VUHDO_newOptionsSpellEditBoxCheckId(anEditBox)
|
|
tLabel = _G[anEditBox:GetName() .. "Hint"];
|
|
tText = anEditBox:GetText();
|
|
tTextById = VUHDO_resolveSpellId(tText);
|
|
|
|
if tText ~= tTextById then
|
|
tTextById = strsub(tTextById, 1, 20);
|
|
tLabel:SetText(tTextById);
|
|
else
|
|
tLabel:SetText("");
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local VUHDO_USED_BUFFS = { };
|
|
function VUHDO_updateGlobalIconList()
|
|
table.wipe(VUHDO_USED_BUFFS);
|
|
|
|
-- Add custom debuffs
|
|
for _, tName in pairs(VUHDO_CONFIG["CUSTOM_DEBUFF"]["STORED"]) do
|
|
VUHDO_USED_BUFFS[tName] = true;
|
|
end
|
|
|
|
-- Add spell traces
|
|
for _, tName in pairs(VUHDO_CONFIG["SPELL_TRACE"]["STORED"]) do
|
|
VUHDO_USED_BUFFS[tName] = true;
|
|
end
|
|
|
|
-- Add bouquet item buffs
|
|
for _, tItems in pairs(VUHDO_BOUQUETS["STORED"]) do
|
|
tItems = VUHDO_decompressIfCompressed(tItems);
|
|
for _, tItem in pairs(tItems) do
|
|
-- tItem["name"] can be nil for some reason (maybe on compressing bouquets?)
|
|
if tItem["name"] and not VUHDO_BOUQUET_BUFFS_SPECIAL[tItem["name"]] then
|
|
VUHDO_USED_BUFFS[tItem["name"]] = true;
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Add standard icons
|
|
for _, tValues in pairs(VUHDO_CUSTOM_ICONS) do
|
|
if tValues[2] then
|
|
VUHDO_USED_BUFFS[tValues[1]] = true;
|
|
VUHDO_GLOBAL_ICONS[tValues[1]] = tValues[2];
|
|
end
|
|
end
|
|
|
|
-- Add standard ignore debuffs
|
|
for tName, _ in pairs(VUHDO_DEBUFF_BLACKLIST) do
|
|
VUHDO_USED_BUFFS[tName] = true;
|
|
end
|
|
|
|
-- Remove obsolete
|
|
for tName, _ in pairs(VUHDO_GLOBAL_ICONS) do
|
|
if not VUHDO_USED_BUFFS[tName] then
|
|
VUHDO_GLOBAL_ICONS[tName] = nil;
|
|
end
|
|
end
|
|
|
|
-- Add new
|
|
for tName, _ in pairs(VUHDO_USED_BUFFS) do
|
|
if (VUHDO_GLOBAL_ICONS[tName] == nil) then
|
|
if tonumber(tName) then
|
|
local _, _, tIcon = GetSpellInfo(tonumber(tName));
|
|
VUHDO_GLOBAL_ICONS[tName] = tIcon;
|
|
else
|
|
VUHDO_GLOBAL_ICONS[tName] = "";
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_tableContains(aTable, aValue)
|
|
for _, tValue in pairs(aTable) do
|
|
if tValue == aValue then return true; end
|
|
end
|
|
|
|
return false;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tStep = 50;
|
|
local tRef;
|
|
local tName, _, tIcon;
|
|
local function VUHDO_scanNextGlobalIcons()
|
|
if not VUHDO_tableContains(VUHDO_GLOBAL_ICONS, "") then
|
|
return;
|
|
end
|
|
tRef = VUHDO_GLOBAL_ICONS;
|
|
for tCnt = VUHDO_GI_SCAN_IDX + tStep , VUHDO_GI_SCAN_IDX, -1 do
|
|
tName, _, tIcon = GetSpellInfo(tCnt);
|
|
if tRef[tName] == "" then tRef[tName] = tIcon; end
|
|
end
|
|
|
|
VUHDO_GI_SCAN_IDX = VUHDO_GI_SCAN_IDX - tStep;
|
|
|
|
if VUHDO_GI_SCAN_IDX < 1 then VUHDO_GI_SCAN_IDX = GI_SCAN_MAX; end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_optionsOnUpdate(self, aTimeDelta)
|
|
VUHDO_scanNextGlobalIcons();
|
|
VUHDO_updateRequestsInProgress();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_getGlobalIcon(aDeBuffName)
|
|
if not aDeBuffName then return nil; end
|
|
return GetSpellBookItemTexture(aDeBuffName) or VUHDO_GLOBAL_ICONS[aDeBuffName];
|
|
end
|
|
|