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.
246 lines
6.0 KiB
246 lines
6.0 KiB
local _;
|
|
|
|
VUHDO_DEBUFF_BLACKLIST_SORTABLE = { };
|
|
VUHDO_DEBUFF_IGNORE_COMBO_MODEL = { };
|
|
VUHDO_SELECTED_DEBUFF_IGNORE = "";
|
|
VUHDO_DEBUFF_IGNORE_SHARE_VERSION = 1;
|
|
|
|
|
|
|
|
--
|
|
local tSpellNameById;
|
|
function VUHDO_initDebuffIgnoreComboModel()
|
|
|
|
table.wipe(VUHDO_DEBUFF_BLACKLIST_SORTABLE);
|
|
|
|
for tName, _ in pairs(VUHDO_DEBUFF_BLACKLIST) do
|
|
tinsert(VUHDO_DEBUFF_BLACKLIST_SORTABLE, tName);
|
|
end
|
|
|
|
table.sort(VUHDO_DEBUFF_BLACKLIST_SORTABLE,
|
|
function(aDebuff, anotherDebuff)
|
|
return VUHDO_resolveSpellId(aDebuff) < VUHDO_resolveSpellId(anotherDebuff);
|
|
end
|
|
);
|
|
|
|
table.wipe(VUHDO_DEBUFF_IGNORE_COMBO_MODEL);
|
|
|
|
for _, tName in pairs(VUHDO_DEBUFF_BLACKLIST_SORTABLE) do
|
|
tSpellNameById = VUHDO_resolveSpellId(tName);
|
|
|
|
if (tSpellNameById ~= tName) then
|
|
tinsert(VUHDO_DEBUFF_IGNORE_COMBO_MODEL, { tName, "[" .. tName .. "] " .. tSpellNameById });
|
|
else
|
|
tinsert(VUHDO_DEBUFF_IGNORE_COMBO_MODEL, { tName, tName });
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tText;
|
|
function VUHDO_saveDebuffIgnoreClicked(aButton)
|
|
|
|
local tText = _G[aButton:GetParent():GetName() .. "IgnoreComboBoxEditBox"]:GetText();
|
|
|
|
if (tText ~= nil) then
|
|
VUHDO_DEBUFF_BLACKLIST[strtrim(tText)] = true;
|
|
VUHDO_initDebuffIgnoreComboModel();
|
|
_G[aButton:GetParent():GetName() .. "IgnoreComboBox"]:Hide();
|
|
_G[aButton:GetParent():GetName() .. "IgnoreComboBox"]:Show();
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_deleteDebuffIgnoreClicked(aButton)
|
|
local tText = _G[aButton:GetParent():GetName() .. "IgnoreComboBoxEditBox"]:GetText();
|
|
|
|
if (tText ~= nil) then
|
|
if (VUHDO_DEBUFF_BLACKLIST[strtrim(tText)]) then
|
|
VUHDO_DEBUFF_BLACKLIST[strtrim(tText)] = nil;
|
|
else
|
|
local tSpellId = string.match(tText, '([^%]%[]+)');
|
|
|
|
if (tSpellId ~= nil and VUHDO_DEBUFF_BLACKLIST[tSpellId]) then
|
|
VUHDO_DEBUFF_BLACKLIST[tSpellId] = nil;
|
|
end
|
|
end
|
|
|
|
|
|
VUHDO_initDebuffIgnoreComboModel();
|
|
_G[aButton:GetParent():GetName() .. "IgnoreComboBox"]:Hide();
|
|
_G[aButton:GetParent():GetName() .. "IgnoreComboBox"]:Show();
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_addDebuffToBlacklist(aCuDeIconFrame)
|
|
|
|
if not aCuDeIconFrame then
|
|
return;
|
|
end
|
|
|
|
local debuffName = aCuDeIconFrame["debuffInfo"];
|
|
|
|
if debuffName then
|
|
local debuffSpellId = strtrim(aCuDeIconFrame["debuffSpellId"]);
|
|
|
|
if not VUHDO_DEBUFF_BLACKLIST[debuffSpellId] then
|
|
VUHDO_DEBUFF_BLACKLIST[debuffSpellId] = true;
|
|
|
|
VUHDO_updateAllDebuffIcons(false);
|
|
VUHDO_initDebuffIgnoreComboModel();
|
|
|
|
VUHDO_Msg(format(VUHDO_I18N_DEBUFF_BLACKLIST_ADDED, debuffSpellId, debuffName), 1, 0.4, 0.4);
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_exportDebuffIgnoreClicked(aButton)
|
|
|
|
_G[aButton:GetParent():GetParent():GetName() .. "ExportFrame"]:Show();
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_importDebuffIgnoreClicked(aButton)
|
|
|
|
_G[aButton:GetParent():GetParent():GetName() .. "ImportFrame"]:Show();
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tDebuffIgnoreCompressed;
|
|
local tDebuffIgnoreTable;
|
|
local tDebuffIgnoreString;
|
|
local function VUHDO_debuffIgnoreTableToString(aDebuffIgnore)
|
|
|
|
if (aDebuffIgnore ~= nil) then
|
|
tDebuffIgnoreCompressed = VUHDO_compressAndPackTable(aDebuffIgnore);
|
|
|
|
tDebuffIgnoreTable = {
|
|
["debuffIgnoreVersion"] = VUHDO_DEBUFF_IGNORE_SHARE_VERSION,
|
|
["playerName"] = GetUnitName("player", true),
|
|
["debuffIgnore"] = tDebuffIgnoreCompressed,
|
|
};
|
|
|
|
tDebuffIgnoreString = VUHDO_serializeTable(tDebuffIgnoreTable);
|
|
tDebuffIgnoreString = VUHDO_LibBase64.Encode(tDebuffIgnoreString);
|
|
|
|
return tDebuffIgnoreString;
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tDecodedDebuffIgnoreString;
|
|
local tDebuffIgnoreTable;
|
|
local tDecompressedDebuffIgnoreTable;
|
|
local function VUHDO_debuffIgnoreStringToTable(aDebuffIgnoreString)
|
|
|
|
tDecodedDebuffIgnoreString = VUHDO_LibBase64.Decode(aDebuffIgnoreString);
|
|
tDebuffIgnoreTable = VUHDO_deserializeTable(tDecodedDebuffIgnoreString);
|
|
|
|
if tDebuffIgnoreTable and tDebuffIgnoreTable["debuffIgnore"] then
|
|
tDecompressedDebuffIgnoreTable = VUHDO_decompressIfCompressed(tDebuffIgnoreTable["debuffIgnore"]);
|
|
|
|
tDebuffIgnoreTable["debuffIgnore"] = tDecompressedDebuffIgnoreTable;
|
|
end
|
|
|
|
return tDebuffIgnoreTable;
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tEditText;
|
|
function VUHDO_debuffIgnoreExportButtonShown(aEditBox)
|
|
|
|
tEditText = VUHDO_debuffIgnoreTableToString(VUHDO_DEBUFF_BLACKLIST);
|
|
|
|
aEditBox:SetText(tEditText);
|
|
aEditBox:SetTextInsets(0, 10, 5, 5);
|
|
|
|
aEditBox:Show();
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tImportString;
|
|
local tImportTable;
|
|
local tName;
|
|
local tProfile;
|
|
local tPos;
|
|
function VUHDO_debuffIgnoreImport(aEditBoxName)
|
|
|
|
tImportString = _G[aEditBoxName]:GetText();
|
|
tImportTable = VUHDO_debuffIgnoreStringToTable(tImportString);
|
|
|
|
if (tImportTable == nil or tImportTable["debuffIgnoreVersion"] == nil or tonumber(tImportTable["debuffIgnoreVersion"]) == nil or
|
|
tonumber(tImportTable["debuffIgnoreVersion"]) ~= VUHDO_DEBUFF_IGNORE_SHARE_VERSION or tImportTable["playerName"] == nil or
|
|
tImportTable["debuffIgnore"] == nil or type(tImportTable["debuffIgnore"]) ~= "table") then
|
|
VUHDO_Msg(VUHDO_I18N_IMPORT_STRING_INVALID);
|
|
|
|
return;
|
|
end
|
|
|
|
for tDebuffIgnoreSpell, _ in pairs(tImportTable["debuffIgnore"]) do
|
|
VUHDO_DEBUFF_BLACKLIST[tDebuffIgnoreSpell] = true;
|
|
end
|
|
|
|
VUHDO_Msg(VUHDO_I18N_DEBUFF_IGNORE_IMPORTED);
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_yesNoImportDebuffIgnoreCallback(aDecision)
|
|
|
|
if (VUHDO_YES == aDecision) then
|
|
local tEditBoxName = VuhDoYesNoFrame:GetAttribute("importStringEditBoxName");
|
|
|
|
VUHDO_debuffIgnoreImport(tEditBoxName);
|
|
|
|
_G[tEditBoxName]:GetParent():GetParent():GetParent():Hide();
|
|
|
|
VUHDO_initDebuffIgnoreComboModel();
|
|
_G["VuhDoNewOptionsDebuffsStandardIconsPanelIgnoreComboBox"]:Hide();
|
|
_G["VuhDoNewOptionsDebuffsStandardIconsPanelIgnoreComboBox"]:Show();
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_importDebuffIgnoreOkayClicked(aButton)
|
|
|
|
VuhDoYesNoFrameText:SetText(VUHDO_I18N_REALLY_IMPORT);
|
|
|
|
VuhDoYesNoFrame:SetAttribute("callback", VUHDO_yesNoImportDebuffIgnoreCallback);
|
|
VuhDoYesNoFrame:SetAttribute("importStringEditBoxName", aButton:GetParent():GetName() .. "StringScrollFrameStringEditBox");
|
|
|
|
VuhDoYesNoFrame:Show();
|
|
|
|
end
|
|
|