Quantcast

Added an option to show zero scores (now hidden by default)

Kevin Lyles [09-01-10 - 08:07]
Added an option to show zero scores (now hidden by default)
Version 1.4r6
Also, the rest of the tooltip items only show if at least one weight would normally be shown
Filename
Locales/enUS/base.lua
Upgrade.lua
WeightsWatcher.lua
WeightsWatcher.toc
config.xml
defaults.lua
diff --git a/Locales/enUS/base.lua b/Locales/enUS/base.lua
index 9666eea..ebfe4ba 100644
--- a/Locales/enUS/base.lua
+++ b/Locales/enUS/base.lua
@@ -58,6 +58,8 @@ L["HIDE_HINTS"] = "Hide tooltip hints"
 L["SHOW_CLASS"] = "Show class names:"
 L["SHOW_DIFF"] = "Show differences to current gear"
 L["SHOW_DIFF_TT"] = "Shows the change in score compared to the currently equipped gear"
+L["SHOW_ZEROES"] = "Show zero scores"
+L["SHOW_ZEROES_TT"] = "Shows scores for weights that are zero (or negative)"

 -- weights.xml
 L["WEIGHTS_TITLE"] = "WeightsWatcher Weight Values"
diff --git a/Upgrade.lua b/Upgrade.lua
index f9d50cf..d7a2e08 100644
--- a/Upgrade.lua
+++ b/Upgrade.lua
@@ -55,6 +55,15 @@ local function noop_major_up(vars)
 	return vars
 end

+local function UpgradeAccountToShowZeroScores(vars)
+	if vars.options.tooltip.showZeroScores == nil then
+		vars.options.tooltip.showZeroScores = false
+	end
+
+	vars.dataMinorVersion = 25
+	return vars
+end
+
 local function upgradeAccountToCataclysmGems(vars)
 	if vars.options.gems.qualityLimit == 7 then
 		vars.options.gems.qualityLimit = 10
@@ -1049,6 +1058,7 @@ local upgradeAccountFunctions = {
 		[21] = upgradeAccountToMastery,
 		[22] = upgradeAccountToMeleeCrit,
 		[23] = upgradeAccountToCataclysmGems,
+		[24] = UpgradeAccountToShowZeroScores,
 	},
 }

@@ -1090,6 +1100,7 @@ local downgradeAccountFunctions = {
 		[22] = noop_down,
 		[23] = noop_down,
 		[24] = noop_down,
+		[25] = noop_down,
 	},
 }

diff --git a/WeightsWatcher.lua b/WeightsWatcher.lua
index a3408ca..1ab5fdc 100644
--- a/WeightsWatcher.lua
+++ b/WeightsWatcher.lua
@@ -479,16 +479,37 @@ function WeightsWatcher.displayItemStats(tooltip, ttname)

 	_, _, _, _, _, itemType, _, stackSize = GetItemInfo(link)
 	if (IsEquippableItem(link) and itemType ~= L["Container"] and itemType ~= L["Quiver"]) or (itemType == L["Gem"] and stackSize == 1) or (itemType == L["Consumable"]) or (itemType == L["Recipe"]) then
-		bareLink = splitItemLink(link)
-		local bareItemInfo = ww_bareItemCache[bareLink]
+		local weightsShown = false
+		for _, class in ipairs(ww_charVars.activeWeights) do
+			if ww_vars.weightsList[class] then
+				for _, weight in pairs(ww_charVars.activeWeights[class]) do
+					if ww_vars.weightsList[class][weight] then
+						if ww_vars.options.tooltip.showZeroScores or ww_weightCache[class][weight][link] > 0 then
+							weightsShown = true
+							break
+						end
+					end
+				end
+			end
+			if weightsShown then
+				break
+			end
+		end

 		local showDebugInfo = ww_keyDetectors[ww_vars.options.tooltip.showDebugInfo]()
+		if not weightsShown and not showDebugInfo then
+			return
+		end
+
 		local showWeights = ww_keyDetectors[ww_vars.options.tooltip.showWeights]()
 		local showIdealWeights = ww_keyDetectors[ww_vars.options.tooltip.showIdealWeights]()
 		local showIdealGems = ww_keyDetectors[ww_vars.options.tooltip.showIdealGems]()
 		local showIdealGemStats = ww_keyDetectors[ww_vars.options.tooltip.showIdealGemStats]()
 		local showAlternateGems = ww_keyDetectors[ww_vars.options.tooltip.showAlternateGems]()

+		bareLink = splitItemLink(link)
+		local bareItemInfo = ww_bareItemCache[bareLink]
+
 		if ttname ~= "ShoppingTooltip1" and ttname ~= "ShoppingTooltip2" and ww_vars.options.tooltip.showDifferences then
 			local currentSlot, compareSlot, compareSlot2, currentSubslot, compareSubslot, compareSubslot2
 			currentSlot = bareItemInfo.nonStats["slot"]
@@ -638,59 +659,61 @@ function WeightsWatcher.displayItemStats(tooltip, ttname)
 					for _, weight in pairs(ww_charVars.activeWeights[class]) do
 						if ww_vars.weightsList[class][weight] then
 							local currentScore = ww_weightCache[class][weight][link]
-							local compareScore, compareScore2, compareBareScore, compareBareScore2
-							str = weight
-							if ww_vars.options.tooltip.showClassNames == "Always" or (ww_vars.options.tooltip.showClassNames == "Others" and class ~= WeightsWatcher.playerClass) then
-								str = string.format(L["WEIGHT_CLASS_FORMAT"], str, ww_classDisplayNames[class])
-							end
-							if compareLink then
-								compareScore = ww_weightCache[class][weight][compareLink]
-								if showIdealWeights and #(bareItemInfo.sockets) == 0 then
-									compareBareScore = ww_weightIdealCache[class][weight][compareBareLink].score
-									if compareScore < compareBareScore then
-										compareScore = compareBareScore
-									end
+							if ww_vars.options.tooltip.showZeroScores or currentScore > 0 then
+								local compareScore, compareScore2, compareBareScore, compareBareScore2
+								str = weight
+								if ww_vars.options.tooltip.showClassNames == "Always" or (ww_vars.options.tooltip.showClassNames == "Others" and class ~= WeightsWatcher.playerClass) then
+									str = string.format(L["WEIGHT_CLASS_FORMAT"], str, ww_classDisplayNames[class])
 								end
-							end
-							if compareLink2 then
-								compareScore2 = ww_weightCache[class][weight][compareLink2]
-								if showIdealWeights and #(bareItemInfo.sockets) == 0 then
-									compareBareScore2 = ww_weightIdealCache[class][weight][compareBareLink2].score
-									if compareScore2 < compareBareScore2 then
-										compareScore2 = compareBareScore2
+								if compareLink then
+									compareScore = ww_weightCache[class][weight][compareLink]
+									if showIdealWeights and #(bareItemInfo.sockets) == 0 then
+										compareBareScore = ww_weightIdealCache[class][weight][compareBareLink].score
+										if compareScore < compareBareScore then
+											compareScore = compareBareScore
+										end
 									end
 								end
-							end
-							compareScore = computeDifference(compareMethod, compareScore, compareScore2, currentScore)
-							tooltip:AddDoubleLine(str, string.format(colorizeDifferences(compareScore), currentScore, compareScore))
-							if #(bareItemInfo.sockets) > 0 and showIdealWeights then
-								local currentScore = ww_weightIdealCache[class][weight][bareLink].score
-								local compareScore, compareScore2
-								if compareBareLink then
-									compareScore = ww_weightIdealCache[class][weight][compareBareLink].score
-								end
-								if compareBareLink2 then
-									compareScore2 = ww_weightIdealCache[class][weight][compareBareLink2].score
+								if compareLink2 then
+									compareScore2 = ww_weightCache[class][weight][compareLink2]
+									if showIdealWeights and #(bareItemInfo.sockets) == 0 then
+										compareBareScore2 = ww_weightIdealCache[class][weight][compareBareLink2].score
+										if compareScore2 < compareBareScore2 then
+											compareScore2 = compareBareScore2
+										end
+									end
 								end
 								compareScore = computeDifference(compareMethod, compareScore, compareScore2, currentScore)
-								tooltip:AddDoubleLine(L["  Ideally-gemmed:"], string.format(colorizeDifferences(compareScore), currentScore, compareScore))
-								if showIdealGems then
-									gemStats = ww_weightIdealCache[class][weight][bareLink].gemStats
-									for _, gems in ipairs(gemStats) do
-										for i, gem in ipairs(gems) do
-											if #(gems) > 1 then
-												tooltip:AddDoubleLine(string.format(L["MULTIPLE_GEM_FORMAT"], i, #(gems), ww_gemDisplayNames[gem[2]], ww_gemColorDisplayNames[gem[1]]), " ")
-												alternateGemsExist = true
-											else
-												tooltip:AddDoubleLine(string.format(L["SINGLE_GEM_FORMAT"], ww_gemDisplayNames[gem[2]], ww_gemColorDisplayNames[gem[1]]), " ")
-											end
-											if showIdealGemStats then
-												for stat, value in pairs(gem[3]) do
-													tooltip:AddDoubleLine(string.format(L["TREBLY_INDENTED_STRING_FORMAT"], ww_statDisplayNames[stat]), value)
+								tooltip:AddDoubleLine(str, string.format(colorizeDifferences(compareScore), currentScore, compareScore))
+								if #(bareItemInfo.sockets) > 0 and showIdealWeights then
+									local currentScore = ww_weightIdealCache[class][weight][bareLink].score
+									local compareScore, compareScore2
+									if compareBareLink then
+										compareScore = ww_weightIdealCache[class][weight][compareBareLink].score
+									end
+									if compareBareLink2 then
+										compareScore2 = ww_weightIdealCache[class][weight][compareBareLink2].score
+									end
+									compareScore = computeDifference(compareMethod, compareScore, compareScore2, currentScore)
+									tooltip:AddDoubleLine(L["  Ideally-gemmed:"], string.format(colorizeDifferences(compareScore), currentScore, compareScore))
+									if showIdealGems then
+										gemStats = ww_weightIdealCache[class][weight][bareLink].gemStats
+										for _, gems in ipairs(gemStats) do
+											for i, gem in ipairs(gems) do
+												if #(gems) > 1 then
+													tooltip:AddDoubleLine(string.format(L["MULTIPLE_GEM_FORMAT"], i, #(gems), ww_gemDisplayNames[gem[2]], ww_gemColorDisplayNames[gem[1]]), " ")
+													alternateGemsExist = true
+												else
+													tooltip:AddDoubleLine(string.format(L["SINGLE_GEM_FORMAT"], ww_gemDisplayNames[gem[2]], ww_gemColorDisplayNames[gem[1]]), " ")
+												end
+												if showIdealGemStats then
+													for stat, value in pairs(gem[3]) do
+														tooltip:AddDoubleLine(string.format(L["TREBLY_INDENTED_STRING_FORMAT"], ww_statDisplayNames[stat]), value)
+													end
+												end
+												if not showAlternateGems then
+													break
 												end
-											end
-											if not showAlternateGems then
-												break
 											end
 										end
 									end
diff --git a/WeightsWatcher.toc b/WeightsWatcher.toc
index 7a8794b..ab55aec 100644
--- a/WeightsWatcher.toc
+++ b/WeightsWatcher.toc
@@ -2,7 +2,7 @@
 ## Title: Weights Watcher
 ## Notes: Ranks gear according to customizable stat weights
 ## Author: The Flying Squirrels
-## Version: 1.4r5
+## Version: 1.4r6
 ## OptionalDeps: AtlasLoot
 ## SavedVariables: ww_vars
 ## SavedVariablesPerCharacter: ww_charVars
diff --git a/config.xml b/config.xml
index 7db1080..a2fe9b6 100644
--- a/config.xml
+++ b/config.xml
@@ -118,10 +118,12 @@
 	</FontString>
 	<Frame name="ww_config" parent="UIParent" hidden="true" frameStrata="HIGH">
 		<Size>
-			<AbsDimension x="600" y="425"/>
+			<AbsDimension x="600" y="450"/>
 		</Size>
 		<Anchors>
-			<Anchor point="CENTER"/>
+			<Anchor point="CENTER">
+				<Offset y="50"/>
+			</Anchor>
 		</Anchors>
 		<Layers>
 			<Layer level="OVERLAY">
@@ -668,13 +670,32 @@
 							</OnLoad>
 						</Scripts>
 					</Frame>
-					<CheckButton name="$parentShowDifference" parentKey="showDifference" inherits="ww_checkButton">
+					<CheckButton name="$parentShowZeroScores" parentKey="showZeroScores" inherits="ww_checkButton">
 						<Anchors>
 							<Anchor point="TOP" relativePoint="BOTTOM" relativeTo="$parentShowClassNames"/>
 						</Anchors>
 						<Scripts>
 							<OnClick>
 								if self:GetChecked() then
+									ww_vars.options.tooltip.showZeroScores = true
+								else
+									ww_vars.options.tooltip.showZeroScores = false
+								end
+							</OnClick>
+							<OnLoad>
+								self.shouldBeChecked = function() return ww_vars.options.tooltip.showZeroScores end
+								self.ttText = ww_localization["SHOW_ZEROES_TT"]
+								self:SetText(ww_localization["SHOW_ZEROES"])
+							</OnLoad>
+						</Scripts>
+					</CheckButton>
+					<CheckButton name="$parentShowDifference" parentKey="showDifference" inherits="ww_checkButton">
+						<Anchors>
+							<Anchor point="TOP" relativePoint="BOTTOM" relativeTo="$parentShowZeroScores"/>
+						</Anchors>
+						<Scripts>
+							<OnClick>
+								if self:GetChecked() then
 									ww_vars.options.tooltip.showDifferences = true
 								else
 									ww_vars.options.tooltip.showDifferences = false
diff --git a/defaults.lua b/defaults.lua
index 47a605c..cfc5a33 100644
--- a/defaults.lua
+++ b/defaults.lua
@@ -192,7 +192,7 @@ ww_classNameOptions = {

 ww_defaultVars = {
 	dataMajorVersion = 1,
-	dataMinorVersion = 24,
+	dataMinorVersion = 25,
 	weightsList = {
 		"DEATHKNIGHT",
 		"DRUID",
@@ -741,6 +741,7 @@ ww_defaultVars = {
 			showIdealGemStats = "Always",
 			showIdealWeights = "Shift",
 			showWeights = "Always",
+			showZeroScores = false,
 		},
 		useEffects = {
 			uptimeRatio = 0.8,