diff --git a/src/Classes/ImportTab.lua b/src/Classes/ImportTab.lua index 8bc98584e..890bf5620 100644 --- a/src/Classes/ImportTab.lua +++ b/src/Classes/ImportTab.lua @@ -45,7 +45,7 @@ local ImportTabClass = newClass("ImportTab", "ControlHost", "Control", function( end self.controls.characterImportAnchor = new("Control", {"TOPLEFT",self.controls.sectionCharImport,"TOPLEFT"}, {6, 40, 200, 16}) - self.controls.sectionCharImport.height = function() return self.charImportMode == "AUTHENTICATION" and 60 or 200 end + self.controls.sectionCharImport.height = function() return self.charImportMode == "AUTHENTICATION" and 60 or 240 end -- Stage: Authenticate self.controls.authenticateButton = new("ButtonControl", {"TOPLEFT",self.controls.characterImportAnchor,"TOPLEFT"}, {0, 0, 200, 16}, "^7Authorize with Path of Exile", function() @@ -96,7 +96,20 @@ local ImportTabClass = newClass("ImportTab", "ControlHost", "Control", function( return self.charImportMode == "SELECTCHAR" end self.controls.charImportHeader = new("LabelControl", {"TOPLEFT",self.controls.charSelect,"BOTTOMLEFT"}, {0, 16, 200, 16}, "Import:") - self.controls.charImportTree = new("ButtonControl", {"LEFT",self.controls.charImportHeader, "RIGHT"}, {8, 0, 170, 20}, "Passive Tree and Jewels", function() + self.controls.charImportFull = new("ButtonControl", {"LEFT",self.controls.charImportHeader, "RIGHT"}, {8, 0, 80, 20}, "Full Import", function() + if self.build.spec:CountAllocNodes() > 0 then + main:OpenConfirmPopup("Character Import", "Full import will overwrite your current passive tree and replace items/skills.", "Import", function() + self:DownloadFullImport() + end) + else + self:DownloadFullImport() + end + end) + self.controls.charImportFullOptions = new("LabelControl", {"LEFT",self.controls.charImportFull,"RIGHT"}, {8, 0, 200, 16}, "(uses below options)") + self.controls.charImportFull.enabled = function() + return self.charImportMode == "SELECTCHAR" + end + self.controls.charImportTree = new("ButtonControl", {"LEFT",self.controls.charImportHeader, "LEFT"}, {8, 36, 200, 20}, "Only Passive Tree and Jewels", function() if self.build.spec:CountAllocNodes() > 0 then main:OpenConfirmPopup("Character Import", "Importing the passive tree will overwrite your current tree.", "Import", function() self:DownloadPassiveTree() @@ -109,7 +122,7 @@ local ImportTabClass = newClass("ImportTab", "ControlHost", "Control", function( return self.charImportMode == "SELECTCHAR" end self.controls.charImportTreeClearJewels = new("CheckBoxControl", {"LEFT",self.controls.charImportTree,"RIGHT"}, {90, 0, 18}, "Delete jewels:", nil, "Delete all existing jewels when importing.", true) - self.controls.charImportItems = new("ButtonControl", {"LEFT",self.controls.charImportTree, "LEFT"}, {0, 36, 110, 20}, "Items and Skills", function() + self.controls.charImportItems = new("ButtonControl", {"LEFT",self.controls.charImportTree, "LEFT"}, {0, 24, 140, 20}, "Only Items and Skills", function() self:DownloadItems() end) self.controls.charImportItems.enabled = function() @@ -583,6 +596,14 @@ function ImportTabClass:DownloadItems() end) end +function ImportTabClass:DownloadFullImport() + self:DownloadCharacter(function(charData) + self:ImportPassiveTreeAndJewels(charData) + self:ImportItemsAndSkills(charData) + self.charImportStatus = colorCodes.POSITIVE.."Full import successful." + end) +end + function ImportTabClass:ImportPassiveTreeAndJewels(charData) local charPassiveData = charData.passives self.charImportStatus = colorCodes.POSITIVE.."Passive tree and jewels successfully imported." @@ -827,7 +848,11 @@ function ImportTabClass:ImportItemsAndSkills(charData) end) end if mainSkillEmpty then - self.build.mainSocketGroup = self:GuessMainSocketGroup() + local mainSocketGroup = self:GuessMainSocketGroup() + self.build.mainSocketGroup = mainSocketGroup + if mainSocketGroup ~= nil then + self.build.skillsTab.socketGroupList[mainSocketGroup].includeInFullDPS = true + end end self.build.itemsTab:PopulateSlots() self.build.itemsTab:AddUndoState() @@ -1114,17 +1139,22 @@ function ImportTabClass:ImportSocketedItems(item, socketedItems, slotName) end end --- Return the index of the group with the most gems +-- Return the index of the group with the most DPS function ImportTabClass:GuessMainSocketGroup() - local largestGroupSize = 0 - local largestGroupIndex = 1 - for i, socketGroup in ipairs(self.build.skillsTab.socketGroupList) do - if #socketGroup.gemList > largestGroupSize then - largestGroupSize = #socketGroup.gemList - largestGroupIndex = i + local bestDps = 0 + local bestSocketGroup = nil + for i, socketGroup in pairs(self.build.skillsTab.socketGroupList) do + self.build.mainSocketGroup = i + socketGroup.includeInFullDPS = true + local mainOutput = self.build.calcsTab.calcs.buildOutput(self.build, "MAIN").player.output + socketGroup.includeInFullDPS = false + local dps = mainOutput.FullDPS + if dps > bestDps then + bestDps = dps + bestSocketGroup = i end end - return largestGroupIndex + return bestSocketGroup end function HexToChar(x)