Quantcast

Added debugging info to figure out why some items appear blank in the queue.

pschifferer [02-24-09 - 04:02]
Added debugging info to figure out why some items appear blank in the queue.
Wrote the code to get a potential craft count for a skill.
Filename
CauldronMain.lua
CauldronMainUI.lua
CauldronUtil.lua
diff --git a/CauldronMain.lua b/CauldronMain.lua
index e500c50..4d9da63 100644
--- a/CauldronMain.lua
+++ b/CauldronMain.lua
@@ -25,6 +25,9 @@ Cauldron.libs.PT = LibStub("LibPeriodicTable-3.1");

 -- Cauldron:ToggleDebugLog(false);
 Cauldron:SetLogLevel(Cauldron.logLevels.INFO);
+--@alpha@
+Cauldron:SetLogLevel(Cauldron.logLevels.DEBUG);
+--@end-alpha@

 CURRENT_TRADESKILL = "";

diff --git a/CauldronMainUI.lua b/CauldronMainUI.lua
index cee4aba..ff3b429 100644
--- a/CauldronMainUI.lua
+++ b/CauldronMainUI.lua
@@ -591,6 +591,10 @@ function Cauldron:UpdateQueue()
 	CauldronQueueFrameScrollFrameQueueSectionsMainItems:SetHeight(#itemQueue * itemFrameHeight);

 	for i, queueInfo in ipairs(itemQueue) do
+--@alpha@
+		self:debug("queueInfo: name="..queueInfo.name);
+--@end-alpha@
+
 		local queueItemFrame = _G["CauldronQueueItem"..i];

 		-- check if we have a frame for this position
@@ -618,7 +622,7 @@ function Cauldron:UpdateQueue()
 		local skillInfo = Cauldron:GetSkillInfo(queueInfo.tradeskill, queueInfo.name);
 		if not skillInfo then
 			-- the skill isn't available (character doesn't know it?)
-			-- TODO
+			self:warn("No skill available for "..queueInfo.name.." ("..queueInfo.tradeskill..")");
 		end

 		-- initialize the frame object
@@ -638,6 +642,7 @@ function Cauldron:UpdateQueue()
 			end
 		else
 			-- TODO: default color info
+			self:debug("Using default color info.");
 		end

 		-- set quantity info
@@ -695,6 +700,8 @@ function Cauldron:UpdateQueue()
 		frame:Hide();
 		frame:SetHeight(0);

+		frame = nil;
+
 		j = j + 1;
 	end

@@ -722,6 +729,10 @@ function Cauldron:UpdateQueue()
 		local intHeight = 0;

 		for i, queueInfo in ipairs(intQueue) do
+--@alpha@
+			self:debug("intQueue: name="..queueInfo.name);
+--@end-alpha@
+
 			local queueItemFrame = _G["CauldronQueueIntItem"..i];

 			-- check if we have a frame for this position
@@ -833,7 +844,7 @@ function Cauldron:UpdateQueue()
 	end

 	-- hide any remaining frames
-	local j = #intQueue + 1;
+	j = #intQueue + 1;
 	while true do
 		local frame = _G["CauldronQueueIntItem"..j];
 		if not frame then
@@ -845,6 +856,8 @@ function Cauldron:UpdateQueue()
 		frame:Hide();
 		frame:SetHeight(0);

+		frame = nil;
+
 		j = j + 1;
 	end

@@ -856,6 +869,10 @@ function Cauldron:UpdateQueue()
 	local reagentHeight = 0;

 	for i, queueInfo in ipairs(reagentList) do
+--@alpha@
+		self:debug("reagentList: "..queueInfo.name);
+--@end-alpha@
+
 		local queueItemFrame = _G["CauldronQueueReagentItem"..i];

 		-- check if we have a frame for this position
@@ -966,7 +983,7 @@ function Cauldron:UpdateQueue()
 	end

 	-- hide any remaining frames
-	local j = #reagentList + 1;
+	j = #reagentList + 1;
 	while true do
 		local frame = _G["CauldronQueueReagentItem"..j];
 		if not frame then
@@ -978,6 +995,8 @@ function Cauldron:UpdateQueue()
 		frame:Hide();
 		frame:SetHeight(0);

+		frame = nil;
+
 		j = j + 1;
 	end
 --]]
diff --git a/CauldronUtil.lua b/CauldronUtil.lua
index 37280ac..68cd2a8 100644
--- a/CauldronUtil.lua
+++ b/CauldronUtil.lua
@@ -14,11 +14,17 @@ function Cauldron:GetPotentialCraftCount(skillInfo)

 	local count = 0;

-	-- get reagent list
---	local reagents = Cauldron:GetReagentsForSkill(skillInfo);
+	-- iterate over the reagent list and find out how many can be made for each reagent count;
+	-- the lowest value is the potential amount craftable
+	for i,rinfo in ipairs(skillInfo.reagents) do
+		local counts = Cauldron:ReagentCount(rinfo.name);
+		local makeable = math.floor(counts.total / rinfo.numRequired);
+
+		if (makeable > 0) and (count > 0) and (makeable < count) then
+			count = makeable;
+		end
+	end

-	-- TODO
-
 	self:debug("GetPotentialCraftCount exit");

 	return count;
@@ -32,6 +38,7 @@ function Cauldron:ReagentCount(reagent)
 		guildBank = 0,
 		mail = 0,
 		altHas = {},
+		total = 0,
 	}

 	-- sanity checks
@@ -42,6 +49,12 @@ function Cauldron:ReagentCount(reagent)

 	count.has = GetItemCount(reagent, false);
 	count.bank = GetItemCount(reagent, true) - count.has;
+
+	-- total up
+	count.total = count.has + count.bank + count.guildBank + count.mail;
+	for alt,altCount in pairs(count.altHas) do
+		count.total = count.total + altCount;
+	end

 	return count;
 end