From d2884e777af0f77286ab86beb9c8312c31861572 Mon Sep 17 00:00:00 2001 From: Sumsebrum Date: Tue, 14 Sep 2021 23:52:13 +0200 Subject: [PATCH] - Repentance, Freezing Trap & Wyvern Sting are now disorients - import string now ignores errors on deleted options --- Libs/DRData-1.0/DRData-1.0.lua | 16 +++---- Modules/ExportImport.lua | 83 +++++++++++++++++++++++++++------- 2 files changed, 74 insertions(+), 25 deletions(-) diff --git a/Libs/DRData-1.0/DRData-1.0.lua b/Libs/DRData-1.0/DRData-1.0.lua index f1f5ff8..e6bd775 100644 --- a/Libs/DRData-1.0/DRData-1.0.lua +++ b/Libs/DRData-1.0/DRData-1.0.lua @@ -193,10 +193,10 @@ Data.spells = { [18658] = "sleep", -- Wyvern Sting - [19386] = "sleep", - [24132] = "sleep", - [24133] = "sleep", - [27068] = "sleep", + [19386] = "disorient", + [24132] = "disorient", + [24133] = "disorient", + [27068] = "disorient", --[[ MISC ]]-- -- Chastise (Maybe this shares DR with Imp HS?) @@ -213,15 +213,15 @@ Data.spells = { [33042] = "dragonsbreath", -- Dragon's Breath [33043] = "dragonsbreath", -- Dragon's Breath -- Repentance - [20066] = "repentance", + [20066] = "disorient", -- Scatter Shot [19503] = "scatters", -- Freezing Trap - [3355] = "freezetrap", - [14308] = "freezetrap", - [14309] = "freezetrap", + [3355] = "disorient", + [14308] = "disorient", + [14309] = "disorient", -- Improved Conc Shot [19410] = "impconc", diff --git a/Modules/ExportImport.lua b/Modules/ExportImport.lua index 9d9110a..1bafaaa 100644 --- a/Modules/ExportImport.lua +++ b/Modules/ExportImport.lua @@ -1,4 +1,4 @@ -local type, pairs = type, pairs +local type, pairs, str_match = type, pairs, string.match local Gladdy = LibStub("Gladdy") local AceSerializer = LibStub("AceSerializer-3.0") @@ -6,12 +6,23 @@ local L = Gladdy.L local AceGUI = LibStub("AceGUI-3.0") local LibDeflate = LibStub:GetLibrary("LibDeflate") -local function table_copy(t) + +local function table_copy(t, str) local t2 = {}; + if str == nil then + str = "Gladdy.db" + end for k,v in pairs(t) do if type(v) == "table" then - t2[k] = table_copy(v); + if k == "drCategories" then + for key,val in pairs(v) do + --Gladdy:Print("TableCopy", str .. "." .. key) + end + end + + t2[k] = table_copy(v, str .. "." .. k); else + t2[k] = v; end end @@ -84,9 +95,27 @@ import:AddChild(importClearButton) import.clearButton = importClearButton local deletedOptions = { --TODO backward compatibility Imports on deleted options - growUp = true + growUp = true, + freezetrap = true, + repentance = true } +local function checkIsDeletedOption(k, str, msg, errorFound, errorMsg) + local isDeleted + for key, _ in pairs(deletedOptions) do + if str_match(k, key) then + isDeleted = true + Gladdy:Warn("found deleted option =", str .. "." .. k) + end + end + if errorFound then + return errorFound, errorMsg + end + if not isDeleted then + return true, msg or str .. "." .. k .. " does not exist" + end +end + function ExportImport:CheckDeserializedOptions(tbl, refTbl, str) if str == nil and not tbl.version_major_num then return false, "Version conflict: version_major_num not seen" @@ -98,17 +127,29 @@ function ExportImport:CheckDeserializedOptions(tbl, refTbl, str) str = "Gladdy.db" tbl.version_major_num = nil end - for k,v in pairs(tbl) do - if refTbl[k] == nil then - --return false, str .. "." .. k .. " does not exist" - else - if type(v) ~= type(refTbl[k]) then - return false, str .. "." .. k .. " type error. Expected " .. type(refTbl[k]) .. " found " .. type(v) + local res, msg + local errorFound, errorMsg + if refTbl == nil then + return false, str .. "does not exist" + else + for k,v in pairs(tbl) do + if refTbl[k] == nil then + errorFound, errorMsg = checkIsDeletedOption(k, str, nil, errorFound, errorMsg) + elseif type(v) ~= type(refTbl[k]) then + errorFound = true + errorMsg = str .. "." .. k .. " type error. Expected " .. type(refTbl[k]) .. " found " .. type(v) elseif type(v) == "table" then - ExportImport:CheckDeserializedOptions(v, refTbl[k], str .. "." .. k) + res, msg = ExportImport:CheckDeserializedOptions(v, refTbl[k], str .. "." .. k) + if not res then + errorFound, errorMsg = checkIsDeletedOption(msg, str, msg, errorFound, errorMsg) + end end end end + + if errorFound then + return false, errorMsg + end return true end @@ -135,8 +176,8 @@ function ExportImport:GetOptions() export.eb:HighlightText(0, export.eb.editBox:GetNumLetters()) export:SetStatusText("Copy this string to share your configuration with others.") end, - name = "Export", - desc = "Export your current profile to share with others or your various accounts.", + name = L["Export"], + desc = L["Export your current profile to share with others or your various accounts."], order = 3, }, import = { @@ -159,17 +200,25 @@ function ExportImport:GetOptions() import.deserializedTable = deserialized end) end, - name = "Import", - desc = "This will overwrite your current profile!", + name = L["Import"], + desc = L["This will overwrite your current profile!"], order = 4, }, } end -function ExportImport:ApplyImport(t, table) +function ExportImport:ApplyImport(t, table, str) + if str == nil then + str = "Gladdy.db" + end for k,v in pairs(t) do if type(v) == "table" then - ExportImport:ApplyImport(v, table[k]) + if (table[k] ~= nil) then + ExportImport:ApplyImport(v, table[k], str .. "." .. k) + else + Gladdy:Warn("ApplyImport failed for", str .. "." .. k) + end + else table[k] = v end