Skip to content

Commit 4a28a50

Browse files
author
LocalIdentity
committed
Dedupe code
1 parent e3892d7 commit 4a28a50

1 file changed

Lines changed: 43 additions & 99 deletions

File tree

src/Classes/TreeTab.lua

Lines changed: 43 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,95 +1077,59 @@ function TreeTabClass:BuildPowerReportList(currentStat)
10771077
fmt = ".1f"
10781078
}
10791079
end
1080+
local powerMultiplier = (displayStat.pc or displayStat.mod) and 100 or 1
1081+
local function formatPower(power)
1082+
local powerStr = formatNumSep(s_format("%"..displayStat.fmt, power))
1083+
if (power > 0 and not displayStat.lowerIsBetter) or (power < 0 and displayStat.lowerIsBetter) then
1084+
return colorCodes.POSITIVE .. powerStr
1085+
elseif (power < 0 and not displayStat.lowerIsBetter) or (power > 0 and displayStat.lowerIsBetter) then
1086+
return colorCodes.NEGATIVE .. powerStr
1087+
end
1088+
return powerStr
1089+
end
1090+
local function getNodePathDist(node, isAlloc)
1091+
if isAlloc then
1092+
return #(node.depends or { }) == 0 and 1 or #node.depends
1093+
end
1094+
return #(node.path or { }) == 0 and 1 or #node.path
1095+
end
1096+
local function addReportEntry(node, name, nodePower, pathPower, pathDist, isAlloc, pathPowerStr)
1097+
t_insert(report, {
1098+
name = name,
1099+
power = nodePower,
1100+
powerStr = formatPower(nodePower),
1101+
pathPower = pathPower,
1102+
pathPowerStr = pathPowerStr or formatPower(pathPower),
1103+
allocated = isAlloc,
1104+
id = node.id,
1105+
x = node.x,
1106+
y = node.y,
1107+
type = node.type,
1108+
sd = node.sd,
1109+
pathDist = pathDist
1110+
})
1111+
end
10801112

10811113
-- search all nodes, ignoring ascendancies, sockets, etc.
10821114
for nodeId, node in pairs(self.build.spec.nodes) do
10831115
local isAlloc = node.alloc or self.build.calcsTab.mainEnv.grantedPassives[nodeId]
10841116
if (node.type == "Normal" or node.type == "Keystone" or node.type == "Notable") and not node.ascendancyName then
1085-
local pathDist
1086-
if isAlloc then
1087-
pathDist = #(node.depends or { }) == 0 and 1 or #node.depends
1088-
else
1089-
pathDist = #(node.path or { }) == 0 and 1 or #node.path
1090-
end
1091-
local nodePower = (node.power.singleStat or 0) * ((displayStat.pc or displayStat.mod) and 100 or 1)
1092-
local pathPower = (node.power.pathPower or 0) / pathDist * ((displayStat.pc or displayStat.mod) and 100 or 1)
1093-
local nodePowerStr = s_format("%"..displayStat.fmt, nodePower)
1094-
local pathPowerStr = s_format("%"..displayStat.fmt, pathPower)
1095-
1096-
nodePowerStr = formatNumSep(nodePowerStr)
1097-
pathPowerStr = formatNumSep(pathPowerStr)
1098-
1099-
if (nodePower > 0 and not displayStat.lowerIsBetter) or (nodePower < 0 and displayStat.lowerIsBetter) then
1100-
nodePowerStr = colorCodes.POSITIVE .. nodePowerStr
1101-
elseif (nodePower < 0 and not displayStat.lowerIsBetter) or (nodePower > 0 and displayStat.lowerIsBetter) then
1102-
nodePowerStr = colorCodes.NEGATIVE .. nodePowerStr
1103-
end
1104-
if (pathPower > 0 and not displayStat.lowerIsBetter) or (pathPower < 0 and displayStat.lowerIsBetter) then
1105-
pathPowerStr = colorCodes.POSITIVE .. pathPowerStr
1106-
elseif (pathPower < 0 and not displayStat.lowerIsBetter) or (pathPower > 0 and displayStat.lowerIsBetter) then
1107-
pathPowerStr = colorCodes.NEGATIVE .. pathPowerStr
1108-
end
1109-
1110-
t_insert(report, {
1111-
name = node.dn,
1112-
power = nodePower,
1113-
powerStr = nodePowerStr,
1114-
pathPower = pathPower,
1115-
pathPowerStr = pathPowerStr,
1116-
allocated = isAlloc,
1117-
id = node.id,
1118-
x = node.x,
1119-
y = node.y,
1120-
type = node.type,
1121-
sd = node.sd,
1122-
pathDist = pathDist
1123-
})
1117+
local pathDist = getNodePathDist(node, isAlloc)
1118+
local nodePower = (node.power.singleStat or 0) * powerMultiplier
1119+
local pathPower = (node.power.pathPower or 0) / pathDist * powerMultiplier
1120+
addReportEntry(node, node.dn, nodePower, pathPower, pathDist, isAlloc)
11241121
elseif node.type == "Mastery" and node.power.masteryEffects and not node.ascendancyName then
1125-
local pathDist
1126-
if isAlloc then
1127-
pathDist = #(node.depends or { }) == 0 and 1 or #node.depends
1128-
else
1129-
pathDist = #(node.path or { }) == 0 and 1 or #node.path
1130-
end
1122+
local pathDist = getNodePathDist(node, isAlloc)
11311123

11321124
for _, masteryEffect in ipairs(node.masteryEffects or { }) do
11331125
local effect = self.build.spec.tree.masteryEffects[masteryEffect.effect]
11341126
local effectPower = node.power.masteryEffects[masteryEffect.effect]
11351127
if effect and effectPower then
1136-
local nodePower = (effectPower.singleStat or 0) * ((displayStat.pc or displayStat.mod) and 100 or 1)
1137-
local pathPower = ((effectPower.pathPower or effectPower.singleStat or 0) / pathDist) * ((displayStat.pc or displayStat.mod) and 100 or 1)
1138-
local nodePowerStr = s_format("%"..displayStat.fmt, nodePower)
1139-
local pathPowerStr = s_format("%"..displayStat.fmt, pathPower)
1140-
1141-
nodePowerStr = formatNumSep(nodePowerStr)
1142-
pathPowerStr = formatNumSep(pathPowerStr)
1143-
1144-
if (nodePower > 0 and not displayStat.lowerIsBetter) or (nodePower < 0 and displayStat.lowerIsBetter) then
1145-
nodePowerStr = colorCodes.POSITIVE .. nodePowerStr
1146-
elseif (nodePower < 0 and not displayStat.lowerIsBetter) or (nodePower > 0 and displayStat.lowerIsBetter) then
1147-
nodePowerStr = colorCodes.NEGATIVE .. nodePowerStr
1148-
end
1149-
if (pathPower > 0 and not displayStat.lowerIsBetter) or (pathPower < 0 and displayStat.lowerIsBetter) then
1150-
pathPowerStr = colorCodes.POSITIVE .. pathPowerStr
1151-
elseif (pathPower < 0 and not displayStat.lowerIsBetter) or (pathPower > 0 and displayStat.lowerIsBetter) then
1152-
pathPowerStr = colorCodes.NEGATIVE .. pathPowerStr
1153-
end
1154-
11551128
local effectLabelParts = isAlloc and not node.allMasteryOptions and node.sd or effect.stats or effect.sd
1156-
t_insert(report, {
1157-
name = effectLabelParts and node.dn..": "..t_concat(effectLabelParts, " / ") or node.dn,
1158-
power = nodePower,
1159-
powerStr = nodePowerStr,
1160-
pathPower = pathPower,
1161-
pathPowerStr = pathPowerStr,
1162-
allocated = isAlloc,
1163-
id = node.id,
1164-
x = node.x,
1165-
y = node.y,
1166-
type = node.type,
1167-
pathDist = pathDist
1168-
})
1129+
local name = effectLabelParts and node.dn..": "..t_concat(effectLabelParts, " / ") or node.dn
1130+
local nodePower = (effectPower.singleStat or 0) * powerMultiplier
1131+
local pathPower = ((effectPower.pathPower or effectPower.singleStat or 0) / pathDist) * powerMultiplier
1132+
addReportEntry(node, name, nodePower, pathPower, pathDist, isAlloc)
11691133
end
11701134
end
11711135
end
@@ -1175,28 +1139,8 @@ function TreeTabClass:BuildPowerReportList(currentStat)
11751139
for nodeName, node in pairs(self.build.spec.tree.clusterNodeMap) do
11761140
local isAlloc = node.alloc
11771141
if not isAlloc then
1178-
local nodePower = (node.power and node.power.singleStat or 0) * ((displayStat.pc or displayStat.mod) and 100 or 1)
1179-
local nodePowerStr = s_format("%"..displayStat.fmt, nodePower)
1180-
1181-
nodePowerStr = formatNumSep(nodePowerStr)
1182-
1183-
if (nodePower > 0 and not displayStat.lowerIsBetter) or (nodePower < 0 and displayStat.lowerIsBetter) then
1184-
nodePowerStr = colorCodes.POSITIVE .. nodePowerStr
1185-
elseif (nodePower < 0 and not displayStat.lowerIsBetter) or (nodePower > 0 and displayStat.lowerIsBetter) then
1186-
nodePowerStr = colorCodes.NEGATIVE .. nodePowerStr
1187-
end
1188-
1189-
t_insert(report, {
1190-
name = node.dn,
1191-
power = nodePower,
1192-
powerStr = nodePowerStr,
1193-
pathPower = 0,
1194-
pathPowerStr = "--",
1195-
id = node.id,
1196-
type = node.type,
1197-
sd = node.sd,
1198-
pathDist = "Cluster"
1199-
})
1142+
local nodePower = (node.power and node.power.singleStat or 0) * powerMultiplier
1143+
addReportEntry(node, node.dn, nodePower, 0, "Cluster", isAlloc, "--")
12001144
end
12011145
end
12021146

0 commit comments

Comments
 (0)