Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 42 additions & 12 deletions src/Classes/ImportTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand Down Expand Up @@ -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."
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down