comparison Modules/Queue.lua @ 209:1ed7ce9b1c5d

Cleaned up Queue; errors should now stop a queue all loop rather than occur at every single group.
author Zerotorescue
date Sat, 05 Feb 2011 20:09:03 +0100
parents 5d6b3d116b80
children 2e4e52a589e5
comparison
equal deleted inserted replaced
208:8cecfea6a254 209:1ed7ce9b1c5d
25 }, 25 },
26 ["LOW_VALUE"] = { 26 ["LOW_VALUE"] = {
27 "|cffff6633Underpriced|r", -- orange 27 "|cffff6633Underpriced|r", -- orange
28 "The recorded auction value of this item is below your price threshold.", 28 "The recorded auction value of this item is below your price threshold.",
29 15, 29 15,
30 },
31 ["NO_ITEMCOUNT_ADDON"] = {
32 "|cffff0000No itemcount addon|r", -- red
33 "No compatible item count could be found.",
34 20,
35 }, 30 },
36 ["REMOVED"] = { -- because this is updated realtime, it is most useful around the top of the list 31 ["REMOVED"] = { -- because this is updated realtime, it is most useful around the top of the list
37 "|cffff0000Removed|r", -- red 32 "|cffff0000Removed|r", -- red
38 "You manually removed this item from the queue.", 33 "You manually removed this item from the queue.",
39 45, 34 45,
417 412
418 function mod:QueueAll() 413 function mod:QueueAll()
419 -- Prepare a table with all possible tradeskill craftables 414 -- Prepare a table with all possible tradeskill craftables
420 local craftables = self:GetTradeskillCraftables(); 415 local craftables = self:GetTradeskillCraftables();
421 416
422 if not craftables then
423 addon:Print("No tradeskill window detected. Please open a profession before trying to queue.", addon.Colors.Red);
424 return;
425 end
426
427 -- Forget old queue 417 -- Forget old queue
428 twipe(queue); 418 twipe(queue);
429 twipe(skipped); 419 twipe(skipped);
430 420
431 local playerName = UnitName("player"); 421 local playerName = UnitName("player");
433 -- Go through all groups 423 -- Go through all groups
434 for groupName, values in pairs(addon.db.profile.groups) do 424 for groupName, values in pairs(addon.db.profile.groups) do
435 local trackAt = addon:GetOptionByKey(groupName, "trackAtCharacters"); 425 local trackAt = addon:GetOptionByKey(groupName, "trackAtCharacters");
436 426
437 if trackAt[playerName] then 427 if trackAt[playerName] then
438 self:QueueGroup(groupName, craftables); 428 if not self:QueueGroup(groupName, craftables) then
429 return;
430 end
439 end 431 end
440 end 432 end
441 433
442 mod:BuildQueue(); 434 mod:BuildQueue();
443 end 435 end
448 craftables = self:GetTradeskillCraftables(); -- nil when no tradeskill window is open 440 craftables = self:GetTradeskillCraftables(); -- nil when no tradeskill window is open
449 end 441 end
450 442
451 if not craftables then 443 if not craftables then
452 addon:Print("No tradeskill window detected. Please open a profession before trying to queue.", addon.Colors.Red); 444 addon:Print("No tradeskill window detected. Please open a profession before trying to queue.", addon.Colors.Red);
453 return; 445 return false; -- exit
454 elseif not addon.db.profile.groups[groupName] then 446 elseif not addon.db.profile.groups[groupName] then
455 addon:Print(sformat("Tried to queue items from a group named \"%s\", but no such group exists.", groupName), addon.Colors.Red); 447 addon:Print(sformat("Tried to queue items from a group named \"%s\", but no such group exists.", groupName), addon.Colors.Red);
456 return; 448 return false; -- exit
457 elseif not addon.db.profile.groups[groupName].items then 449 elseif not addon.db.profile.groups[groupName].items then
458 addon:Debug("This group (%s) has no items.", groupName); 450 addon:Debug("This group (%s) has no items.", groupName);
459 return; 451 return true; -- continue with next group
460 end 452 end
461 453
462 -- Retrieve group settings 454 -- Retrieve group settings
463 local restockTarget = addon:GetOptionByKey(groupName, "restockTarget"); 455 local restockTarget = addon:GetOptionByKey(groupName, "restockTarget");
464 local bonusQueue = addon:GetOptionByKey(groupName, "bonusQueue"); 456 local bonusQueue = addon:GetOptionByKey(groupName, "bonusQueue");
508 self:Skip(itemId, skipReasons.MIN_CRAFTING_QUEUE); 500 self:Skip(itemId, skipReasons.MIN_CRAFTING_QUEUE);
509 end 501 end
510 end 502 end
511 else 503 else
512 -- No item count addon 504 -- No item count addon
513 self:Skip(itemId, skipReasons.NO_ITEMCOUNT_ADDON); 505 addon:Print("No usable itemcount addon found.", addon.Colors.Red);
514 addon:Print("No usable itemcount addon found."); 506 return false; -- exit
515 return;
516 end 507 end
517 else 508 else
518 self:Skip(itemId, skipReasons.NOT_CRAFTABLE); 509 self:Skip(itemId, skipReasons.NOT_CRAFTABLE);
519 end 510 end
520 end 511 end
521 512
522 if displayQueue then 513 if displayQueue then
523 mod:BuildQueue(); 514 mod:BuildQueue();
524 end 515 end
516
517 return true; -- continue
525 end 518 end
526 519
527 function mod:Queue(itemId, amount, bonus, craft, groupName) 520 function mod:Queue(itemId, amount, bonus, craft, groupName)
528 tinsert(queue, { 521 tinsert(queue, {
529 ["itemId"] = itemId, -- needed to display the queued item in the queue window 522 ["itemId"] = itemId, -- needed to display the queued item in the queue window