@@ -1051,46 +1051,6 @@ function CompareTabClass:PopulateSetDropdown(tab, orderListField, setsField, act
10511051 control :SetList (list )
10521052end
10531053
1054- -- Check visibility flags for a section/row against an actor
1055- function CompareTabClass :CheckCalcFlag (obj , actor )
1056- if not actor or not actor .mainSkill then return true end
1057- local skillFlags = actor .mainSkill .skillFlags or {}
1058- if obj .flag and not skillFlags [obj .flag ] then
1059- return false
1060- end
1061- if obj .flagList then
1062- for _ , flag in ipairs (obj .flagList ) do
1063- if not skillFlags [flag ] then
1064- return false
1065- end
1066- end
1067- end
1068- if obj .playerFlag and not skillFlags [obj .playerFlag ] then
1069- return false
1070- end
1071- if obj .notFlag and skillFlags [obj .notFlag ] then
1072- return false
1073- end
1074- if obj .notFlagList then
1075- for _ , flag in ipairs (obj .notFlagList ) do
1076- if skillFlags [flag ] then
1077- return false
1078- end
1079- end
1080- end
1081- if obj .haveOutput then
1082- local ns , var = obj .haveOutput :match (" ^(%a+)%.(%a+)$" )
1083- if ns then
1084- if not actor .output [ns ] or not actor .output [ns ][var ] or actor .output [ns ][var ] == 0 then
1085- return false
1086- end
1087- elseif not actor .output [obj .haveOutput ] or actor .output [obj .haveOutput ] == 0 then
1088- return false
1089- end
1090- end
1091- return true
1092- end
1093-
10941054-- Format a config value for read-only display
10951055function CompareTabClass :FormatConfigValue (varData , val )
10961056 if val == nil then return " ^8(not set)" end
@@ -2287,26 +2247,6 @@ end
22872247-- COMPARE POWER REPORT
22882248-- ============================================================
22892249
2290- -- Calculate the stat difference for a given power stat selection
2291- -- output: result from calcFunc (with the change applied)
2292- -- calcBase: baseline output (without the change)
2293- -- Returns positive value if the change improves the stat
2294- function CompareTabClass :CalculatePowerStat (selection , output , calcBase )
2295- local withChange = output
2296- local baseline = calcBase
2297- if baseline .Minion and not selection .stat == " FullDPS" then
2298- withChange = withChange .Minion
2299- baseline = baseline .Minion
2300- end
2301- local withValue = withChange [selection .stat ] or 0
2302- local baseValue = baseline [selection .stat ] or 0
2303- if selection .transform then
2304- withValue = selection .transform (withValue )
2305- baseValue = selection .transform (baseValue )
2306- end
2307- return withValue - baseValue
2308- end
2309-
23102250-- Resolve the granted effect for a gem instance
23112251function CompareTabClass :GetGemGrantedEffect (gem )
23122252 if gem .gemData and gem .gemData .grantedEffect then
@@ -2515,7 +2455,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
25152455 output = calcFunc ({ addNodes = { [pNode ] = true } }, useFullDPS )
25162456 cache [pNode .modKey ] = output
25172457 end
2518- local impact = self :CalculatePowerStat (powerStat , output , calcBase )
2458+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , output , calcBase )
25192459 local pathDist = pNode .pathDist or 0
25202460 if pathDist == 0 then
25212461 pathDist = # (pNode .path or {})
@@ -2570,7 +2510,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
25702510 local newItem = new (" Item" , cItem .raw )
25712511 newItem :NormaliseQuality ()
25722512 local output = calcFunc ({ repSlotName = slotName , repItem = newItem }, useFullDPS )
2573- local impact = self :CalculatePowerStat (powerStat , output , calcBase )
2513+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , output , calcBase )
25742514 local impactStr , impactVal , combinedImpactStr , impactPercent , impactIsZero = formatImpact (impact )
25752515
25762516 if not impactIsZero then
@@ -2638,7 +2578,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
26382578 if jEntry .pNodeAllocated then
26392579 -- Socket is allocated in primary build, test directly in that socket
26402580 local output = calcFunc ({ repSlotName = jEntry .cSlotName , repItem = newItem }, useFullDPS )
2641- bestImpactVal = self :CalculatePowerStat (powerStat , output , calcBase )
2581+ bestImpactVal = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , output , calcBase )
26422582 else
26432583 -- Socket is NOT allocated in primary build; try the jewel in every
26442584 -- jewel socket on the primary build's tree, temporarily allocating
@@ -2649,7 +2589,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
26492589 override .addNodes = { [socketInfo .node ] = true }
26502590 end
26512591 local output = calcFunc (override , useFullDPS )
2652- local impact = self :CalculatePowerStat (powerStat , output , calcBase )
2592+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , output , calcBase )
26532593 if bestImpactVal == nil or impact > bestImpactVal then
26542594 bestImpactVal = impact
26552595 bestSlotLabel = jEntry .label .. " (best socket)"
@@ -2721,7 +2661,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
27212661 -- gemCalcFunc contains the error message on failure; skip this group
27222662 ConPrintf (" Compare power (gem): %s" , tostring (gemCalcFunc ))
27232663 else
2724- local impact = self :CalculatePowerStat (powerStat , gemCalcBase , calcBase )
2664+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , gemCalcBase , calcBase )
27252665 local impactStr , impactVal , combinedImpactStr , impactPercent , impactIsZero = formatImpact (impact )
27262666 if not impactIsZero then
27272667 local label = self :GetSocketGroupLabel (cGroup )
@@ -2803,7 +2743,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
28032743 if not ok then
28042744 ConPrintf (" Compare power (support gem): %s" , tostring (sgCalcFunc ))
28052745 else
2806- local impact = self :CalculatePowerStat (powerStat , sgCalcBase , calcBase )
2746+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , sgCalcBase , calcBase )
28072747 local impactStr , impactVal , combinedImpactStr , impactPercent , impactIsZero = formatImpact (impact )
28082748
28092749 if not impactIsZero then
@@ -2874,7 +2814,7 @@ function CompareTabClass:ComparePowerBuilder(compareEntry, powerStat, categories
28742814 -- cfgCalcFunc contains the error message on failure; skip this config
28752815 ConPrintf (" Compare power (config): %s" , tostring (cfgCalcFunc ))
28762816 else
2877- local impact = self :CalculatePowerStat (powerStat , cfgCalcBase , calcBase )
2817+ local impact = self . primaryBuild . calcsTab :CalculatePowerStat (powerStat , cfgCalcBase , calcBase )
28782818 local impactStr , impactVal , combinedImpactStr , impactPercent , impactIsZero = formatImpact (impact )
28792819
28802820 -- Only include configs with non-zero impact
@@ -4233,15 +4173,15 @@ function CompareTabClass:DrawCalcs(vp, compareEntry)
42334173 local secWidth , id , group , colour , subSections = secDef [1 ], secDef [2 ], secDef [3 ], secDef [4 ], secDef [5 ]
42344174 local secData = subSections [1 ].data
42354175 -- Check section-level flags against primary actor
4236- if self : CheckCalcFlag (secData , primaryActor ) then
4176+ if self . primaryBuild . calcsTab : CheckFlag (secData , primaryActor ) then
42374177 local subSecInfo = {}
42384178 local sectionHasRows = false
42394179 for _ , subSec in ipairs (subSections ) do
42404180 local rows = {}
42414181 for _ , rowData in ipairs (subSec .data ) do
42424182 -- Only include rows with a label and a first column with a format string
42434183 if rowData .label and rowData [1 ] and rowData [1 ].format then
4244- if self : CheckCalcFlag (rowData , primaryActor ) or self : CheckCalcFlag (rowData , compareActor ) then
4184+ if self . primaryBuild . calcsTab : CheckFlag (rowData , primaryActor ) or self . primaryBuild . calcsTab : CheckFlag (rowData , compareActor ) then
42454185 t_insert (rows , rowData )
42464186 end
42474187 end
0 commit comments