diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 386e57d70..09bc151fd 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -813,13 +813,21 @@ holding Shift will put it in the second.]]) -- Section: Modifier Range self.controls.displayItemSectionRange = new("Control", {"TOPLEFT",self.controls.displayItemSectionCustom,"BOTTOMLEFT"}, {0, 0, 0, function() - return self.displayItem.rangeLineList[1] and 28 or 0 + if not self.displayItem or not self.displayItem.rangeLineList[1] then + return 0 + end + if main.showAllItemAffixes and self.displayItem.rarity == "UNIQUE" then + local count = #self.displayItem.rangeLineList + return count * 22 + 4 + else + return 28 + end end}) self.controls.displayItemRangeLine = new("DropDownControl", {"TOPLEFT",self.controls.displayItemSectionRange,"TOPLEFT"}, {0, 0, 350, 18}, nil, function(index, value) self.controls.displayItemRangeSlider.val = self.displayItem.rangeLineList[index].range end) self.controls.displayItemRangeLine.shown = function() - return self.displayItem and self.displayItem.rangeLineList[1] ~= nil + return self.displayItem and self.displayItem.rangeLineList[1] ~= nil and not (main.showAllItemAffixes and self.displayItem.rarity == "UNIQUE") end self.controls.displayItemRangeSlider = new("SliderControl", {"LEFT",self.controls.displayItemRangeLine,"RIGHT"}, {8, 0, 100, 18}, function(val) self.displayItem.rangeLineList[self.controls.displayItemRangeLine.selIndex].range = val @@ -828,6 +836,34 @@ holding Shift will put it in the second.]]) self:UpdateCustomControls() end) + for i = 1, 20 do + local baseControl = i == 1 and self.controls.displayItemSectionRange or self.controls["displayItemStackedRangeSlider"..(i-1)] + + self.controls["displayItemStackedRangeSlider"..i] = new("SliderControl", {"TOPLEFT",baseControl,"TOPLEFT"}, {0, function() + return i == 1 and 2 or 22 + end, 100, 18}, function(val) + if self.displayItem and self.displayItem.rangeLineList[i] then + self.displayItem.rangeLineList[i].range = val + self.displayItem:BuildAndParseRaw() + self:UpdateDisplayItemTooltip() + self:UpdateCustomControls() + end + end) + self.controls["displayItemStackedRangeLine"..i] = new("LabelControl", {"LEFT",self.controls["displayItemStackedRangeSlider"..i],"RIGHT"}, {8, -2, 350, 14}, function() + if self.displayItem and self.displayItem.rangeLineList[i] then + return "^7" .. self.displayItem.rangeLineList[i].line + end + return "" + end) + self.controls["displayItemStackedRangeSlider"..i].shown = function() + return main.showAllItemAffixes and self.displayItem and self.displayItem.rarity == "UNIQUE" and self.displayItem.rangeLineList[i] ~= nil + end + + self.controls["displayItemStackedRangeLine"..i].shown = function() + return self.controls["displayItemStackedRangeSlider"..i]:IsShown() + end + end + -- Tooltip anchor self.controls.displayItemTooltipAnchor = new("Control", {"TOPLEFT",self.controls.displayItemSectionRange,"BOTTOMLEFT"}) @@ -1784,7 +1820,10 @@ end function ItemsTabClass:UpdateDisplayItemRangeLines() if self.displayItem and self.displayItem.rangeLineList[1] then wipeTable(self.controls.displayItemRangeLine.list) - for _, modLine in ipairs(self.displayItem.rangeLineList) do + for i, modLine in ipairs(self.displayItem.rangeLineList) do + if self.controls["displayItemStackedRangeSlider"..i] then + self.controls["displayItemStackedRangeSlider"..i].val = modLine.range + end -- primarily for Against the Darkness // a way to cut down on really long modLines, gsub could be updated for others t_insert(self.controls.displayItemRangeLine.list, (modLine.line:gsub(" Passive Skills in Radius also grant", ":"))) end diff --git a/src/Modules/Main.lua b/src/Modules/Main.lua index f1fb99310..3d969ea4c 100644 --- a/src/Modules/Main.lua +++ b/src/Modules/Main.lua @@ -112,6 +112,7 @@ function main:Init() --self.showPublicBuilds = true self.showFlavourText = true self.showAnimations = true + self.showAllItemAffixes = true self.errorReadingSettings = false if self.userPath then @@ -656,6 +657,9 @@ function main:LoadSettings(ignoreBuild) if node.attrib.showAnimations then self.showAnimations = node.attrib.showAnimations == "true" end + if node.attrib.showAllItemAffixes then + self.showAllItemAffixes = node.attrib.showAllItemAffixes == "true" + end if node.attrib.dpiScaleOverridePercent then self.dpiScaleOverridePercent = tonumber(node.attrib.dpiScaleOverridePercent) or 0 SetDPIScaleOverridePercent(self.dpiScaleOverridePercent) @@ -789,6 +793,7 @@ function main:SaveSettings() --showPublicBuilds = tostring(self.showPublicBuilds), showFlavourText = tostring(self.showFlavourText), showAnimations = tostring(self.showAnimations), + showAllItemAffixes = tostring(self.showAllItemAffixes), dpiScaleOverridePercent = tostring(self.dpiScaleOverridePercent) } }) local res, errMsg = common.xml.SaveXMLFile(setXML, self.userPath.."Settings.xml") @@ -995,6 +1000,12 @@ function main:OpenOptionsPopup() controls.showAnimations = new("CheckBoxControl", { "TOPLEFT", nil, "TOPLEFT" }, { defaultLabelPlacementX, currentY, 20 }, "^7Show Animations:", function(state) self.showAnimations = state end) + + nextRow() + controls.showAllItemAffixes = new("CheckBoxControl", { "TOPLEFT", nil, "TOPLEFT" }, { defaultLabelPlacementX, currentY, 20 }, "^7Show all item affixes sliders:", function(state) + self.showAllItemAffixes = state + end) + controls.showAllItemAffixes.tooltipText = "Display all item affix slots as a stacked list instead of hiding them in dropdowns" nextRow() drawSectionHeader("build", "Build-related options") @@ -1086,6 +1097,7 @@ function main:OpenOptionsPopup() --controls.showPublicBuilds.state = self.showPublicBuilds controls.showFlavourText.state = self.showFlavourText controls.showAnimations.state = self.showAnimations + controls.showAllItemAffixes.state = self.showAllItemAffixes local initialNodePowerTheme = self.nodePowerTheme local initialColorPositive = self.colorPositive local initialColorNegative = self.colorNegative @@ -1107,6 +1119,7 @@ function main:OpenOptionsPopup() --local initialShowPublicBuilds = self.showPublicBuilds local initialShowFlavourText = self.showFlavourText local initialShowAnimations = self.showAnimations + local initialShowAllItemAffixes = self.showAllItemAffixes local initialDpiScaleOverridePercent = self.dpiScaleOverridePercent -- last line with buttons has more spacing @@ -1162,6 +1175,7 @@ function main:OpenOptionsPopup() self.showPublicBuilds = initialShowPublicBuilds self.showFlavourText = initialShowFlavourText self.showAnimations = initialShowAnimations + self.showAllItemAffixes = initialShowAllItemAffixes self.dpiScaleOverridePercent = initialDpiScaleOverridePercent SetDPIScaleOverridePercent(self.dpiScaleOverridePercent) main:ClosePopup()