diff Import.lua @ 124:e31b02b24488

Updated for 8.0 pre-patch and BfA.
author yellowfive
date Tue, 17 Jul 2018 09:57:39 -0700
parents 6bbe64d587b4
children a0894ffebd15
line wrap: on
line diff
--- a/Import.lua	Mon Feb 12 19:34:09 2018 -0800
+++ b/Import.lua	Tue Jul 17 09:57:39 2018 -0700
@@ -42,18 +42,18 @@
 	local panelImport = Amr:RenderCoverChrome(container, 700, 450)
 	
 	local lbl = AceGUI:Create("AmrUiLabel")
+	panelImport:AddChild(lbl)
 	lbl:SetWidth(600)
 	lbl:SetText(L.ImportHeader)
 	lbl:SetPoint("TOP", panelImport.content, "TOP", 0, -10)
-	panelImport:AddChild(lbl)
 
 	_txtImport = AceGUI:Create("AmrUiTextarea")
 	_txtImport:SetWidth(600)
 	_txtImport:SetHeight(300)
-	_txtImport:SetPoint("TOP", lbl.frame, "BOTTOM", 0, -10)
 	_txtImport:SetFont(Amr.CreateFont("Regular", 12, Amr.Colors.Text))
 	_txtImport:SetCallback("OnEnterPressed", onTextEnterPressed)
 	panelImport:AddChild(_txtImport)
+	_txtImport:SetPoint("TOP", lbl.frame, "BOTTOM", 0, -10)
 	
 	local btnImportOk = AceGUI:Create("AmrUiButton")
 	btnImportOk:SetText(L.ImportButtonOk)
@@ -61,9 +61,9 @@
 	btnImportOk:SetFont(Amr.CreateFont("Bold", 16, Amr.Colors.White))
 	btnImportOk:SetWidth(120)
 	btnImportOk:SetHeight(28)
-	btnImportOk:SetPoint("TOPLEFT", _txtImport.frame, "BOTTOMLEFT", 0, -10)
 	btnImportOk:SetCallback("OnClick", onImportOkClick)
 	panelImport:AddChild(btnImportOk)
+	btnImportOk:SetPoint("TOPLEFT", _txtImport.frame, "BOTTOMLEFT", 0, -10)
 	
 	local btnImportCancel = AceGUI:Create("AmrUiButton")
 	btnImportCancel:SetText(L.ImportButtonCancel)
@@ -71,16 +71,16 @@
 	btnImportCancel:SetFont(Amr.CreateFont("Bold", 16, Amr.Colors.White))
 	btnImportCancel:SetWidth(120)
 	btnImportCancel:SetHeight(28)
-	btnImportCancel:SetPoint("LEFT", btnImportOk.frame, "RIGHT", 20, 0)
 	btnImportCancel:SetCallback("OnClick", onImportCancelClick)
 	panelImport:AddChild(btnImportCancel)
+	btnImportCancel:SetPoint("LEFT", btnImportOk.frame, "RIGHT", 20, 0)
 	
 	_lblError = AceGUI:Create("AmrUiLabel")
+	panelImport:AddChild(_lblError)
 	_lblError:SetWidth(600)
 	_lblError:SetFont(Amr.CreateFont("Bold", 14, Amr.Colors.Red))
 	_lblError:SetText("")
 	_lblError:SetPoint("TOPLEFT", btnImportOk.frame, "BOTTOMLEFT", 0, -20)
-	panelImport:AddChild(_lblError)
 	
 	if fromOverwolf then
 		-- show a cover preventing interaction until we receive data from overwolf
@@ -88,18 +88,18 @@
 		_panelCover:SetLayout("None")
 		_panelCover:EnableMouse(true)
 		_panelCover:SetBackgroundColor(Amr.Colors.Black, 0.75)
+		panelImport:AddChild(_panelCover)
 		_panelCover:SetPoint("TOPLEFT", panelImport.frame, "TOPLEFT")
 		_panelCover:SetPoint("BOTTOMRIGHT", panelImport.frame, "BOTTOMRIGHT")
-		panelImport:AddChild(_panelCover)
 
 		local coverMsg = AceGUI:Create("AmrUiLabel")
+		_panelCover:AddChild(coverMsg)
 		coverMsg:SetWidth(500)
 		coverMsg:SetFont(Amr.CreateFont("Regular", 16, Amr.Colors.TextTan))
 		coverMsg:SetJustifyH("MIDDLE")
 		coverMsg:SetJustifyV("MIDDLE")
 		coverMsg:SetText(L.ImportOverwolfWait)
 		coverMsg:SetPoint("CENTER", _panelCover.frame, "CENTER", 0, 20)
-		_panelCover:AddChild(coverMsg)
 		
 		-- after adding, set cover to sit on top of everything
 		_panelCover:SetStrata("FULLSCREEN_DIALOG")
@@ -189,12 +189,9 @@
     end
     
     -- if we make it this far, the data is valid, so read item information
-	local specSlot = tonumber(parts[10])
+	local specSlot = tonumber(parts[11])
 	
     local importData = {}
-
-    local itemInfo = {}
-    local gemInfo = {}
     local enchantInfo = {}
     
     local prevItemId = 0
@@ -202,7 +199,8 @@
     local prevEnchantId = 0
     local prevUpgradeId = 0
     local prevBonusId = 0
-	local prevLevel = 0
+    local prevLevel = 0
+    local prevAzeriteId = 0
     local digits = {
         ["-"] = true,
         ["0"] = true,
@@ -216,17 +214,14 @@
         ["8"] = true,
         ["9"] = true,
     }
-    for i = 18, #parts do
+    for i = 16, #parts do
         local itemString = parts[i]
         if itemString ~= "" and itemString ~= "_" then
             local tokens = {}
             local bonusIds = {}
-			local relicBonusIds = {}
-			table.insert(relicBonusIds, {})
-			table.insert(relicBonusIds, {})
-			table.insert(relicBonusIds, {})
-			local hasRelics = false
+            local azerite = {}
             local hasBonuses = false
+            local hasAzerites = false
             local token = ""
             local prop = "i"
             local tokenComplete = false
@@ -258,20 +253,17 @@
                     elseif prop == "e" then
                         val = val + prevEnchantId
                         prevEnchantId = val
+                    elseif prop == "a" then
+                        val = val + prevAzeriteId
+                        prevAzeriteId = val
                     end
                     
                     if prop == "b" then
                         table.insert(bonusIds, val)
                         hasBonuses = true
-					elseif prop == "m" then
-						table.insert(relicBonusIds[1], val)
-						hasRelics = true
-					elseif prop == "n" then
-						table.insert(relicBonusIds[2], val)
-						hasRelics = true
-					elseif prop == "o" then
-						table.insert(relicBonusIds[3], val)
-						hasRelics = true
+                    elseif prop == "a" then
+                        table.insert(azerite, val)
+                        hasAzerites = true
                     else
                         tokens[prop] = val
                     end
@@ -299,33 +291,14 @@
             table.insert(obj.gemIds, tokens["y"] or 0)
             table.insert(obj.gemIds, tokens["z"] or 0)
             table.insert(obj.gemIds, 0)
-			
-			if hasRelics then
-				obj.relicBonusIds = relicBonusIds
-			end
             
             if hasBonuses then
                 obj.bonusIds = bonusIds
             end
             
-            local itemObj = {}
-            itemObj.id = obj.id
-            itemInfo[obj.id] = itemObj
-            
-            -- look for any socket color information, add to our extra data
-            if tokens["c"] then
-                itemObj.socketColors = {}
-                for j = 1, string.len(tokens["c"]) do
-                    table.insert(itemObj.socketColors, tonumber(string.sub(tokens["c"], j, j)))
-                end                
+            if hasAzerites then
+                obj.azerite = azerite
             end
-            
-            -- look for item ID duplicate info, deals with old SoO items
-            if tokens["d"] then
-                itemObj.duplicateId = tonumber(tokens["d"])
-                itemInfo[itemObj.duplicateId] = itemObj
-            end
-            
         end
     end
     
@@ -334,35 +307,7 @@
     for i = 1, #parts do
         local infoParts = { strsplit("\\", parts[i]) }
         
-        if infoParts[1] == "g" then
-        
-            local gemObj = {}            
-            gemObj.enchantId = tonumber(infoParts[2])
-            gemObj.id = tonumber(infoParts[3])
-            
-            local identicalGems = infoParts[4]
-            if string.len(identicalGems) > 0 then
-                gemObj.identicalGroup = {}
-                identicalGems = { strsplit(",", identicalGems) }
-                for j = 1, #identicalGems do
-                    gemObj.identicalGroup[tonumber(identicalGems[j])] = true
-                end
-            end
-            
-            gemObj.text = string.gsub(infoParts[5], "_(%a+)_", function(s) return L.StatsShort[s] end)
-            if infoParts[6] == nil or string.len(infoParts[6]) == 0 then
-            	gemObj.identicalItemGroup = {[gemObj.id]=true}
-            else
-            	local identicalIds = { strsplit(',', infoParts[6]) }
-            	gemObj.identicalItemGroup = {}
-            	for j = 1, #identicalIds do
-            		gemObj.identicalItemGroup[tonumber(identicalIds[j])] = true
-            	end            	
-            end            
-
-            gemInfo[gemObj.id] = gemObj
-            
-        elseif infoParts[1] == "e" then
+        if infoParts[1] == "e" then
         
             local enchObj = {}
             enchObj.id = tonumber(infoParts[2])
@@ -380,8 +325,7 @@
                 end
             end
             
-            enchantInfo[enchObj.id] = enchObj
-            
+            enchantInfo[enchObj.id] = enchObj            
         end
     end
     
@@ -397,15 +341,14 @@
                 print(blah)
                 print("bad item: " .. v.id)
             end
-        end
-        
-        
+        end                
     else
         -- we have succeeded, record the result
 		Amr.db.char.GearSets[specSlot] = importData
-		Amr.db.char.ExtraItemData[specSlot] = itemInfo
-		Amr.db.char.ExtraGemData[specSlot] = gemInfo
-		Amr.db.char.ExtraEnchantData[specSlot] = enchantInfo
+
+        for k,v in pairs(enchantInfo) do
+            Amr.db.char.ExtraEnchantData[k] = v    
+        end
 		
 		-- also update shopping list after import
 		Amr:UpdateShoppingData(currentPlayerData)