Mercurial > wow > inventory
comparison Queue.lua @ 14:0fc8a54516d7
Altoholic is now marked as an optional dependency.
Fixed the queue button so it doesn?t get recreated when a widget is re-used from the pool.
Queue all button and queue single group buttons are now working.
Items within a group being queued that couldn?t be found in the current profession will be announced. The goal is to put these into a new window from which you can queue these.
author | Zerotorescue |
---|---|
date | Mon, 18 Oct 2010 19:31:52 +0200 |
parents | 5006cb0e97c6 |
children | 8f5c02113c5c |
comparison
equal
deleted
inserted
replaced
13:5006cb0e97c6 | 14:0fc8a54516d7 |
---|---|
264 function mod:OnEnable() | 264 function mod:OnEnable() |
265 -- Register our own slash commands | 265 -- Register our own slash commands |
266 addon:RegisterSlash(function() | 266 addon:RegisterSlash(function() |
267 self:QueueAll(); | 267 self:QueueAll(); |
268 end, "q", "que", "queue"); | 268 end, "q", "que", "queue"); |
269 | |
270 self:RegisterMessage("IM_QUEUE_ALL"); | |
271 self:RegisterMessage("IM_QUEUE_GROUP"); | |
272 end | |
273 | |
274 function mod:IM_QUEUE_ALL() | |
275 self:QueueAll(); | |
276 end | |
277 | |
278 function mod:IM_QUEUE_GROUP(event, groupName) | |
279 self:QueueGroup(groupName); | |
269 end | 280 end |
270 | 281 |
271 function mod:QueueAll() | 282 function mod:QueueAll() |
272 -- Go through all trade skills for the profession | 283 local playerName = UnitName("player"); |
273 for i = 1, GetNumTradeSkills() do | 284 |
274 -- Go through all groups | 285 -- Go through all groups |
275 for groupName, _ in pairs(addon.db.global.groups) do | 286 for groupName, values in pairs(addon.db.global.groups) do |
276 -- Process every single tradeskill | 287 local trackAt = (values.trackAtCharacters or (values.trackAtCharacters == nil and addon.db.global.defaults.trackAtCharacters)); |
277 self:ProcessTradeSkill(i, groupName); | 288 |
289 if trackAt[playerName] then | |
290 self:QueueGroup(groupName); | |
278 end | 291 end |
279 end | 292 end |
280 end | 293 end |
281 | 294 |
282 function mod:QueueGroup(groupName) | 295 function mod:QueueGroup(groupName) |
283 if not addon.db.global.groups[groupName] then return false; end | 296 if not addon.db.global.groups[groupName] then |
297 print(("Tried to queue items from a group named \"%s\", but no such group exists."):format(groupName)); | |
298 return; | |
299 end | |
300 | |
301 local temp = {}; | |
284 | 302 |
285 -- Go through all trade skills for the profession | 303 -- Go through all trade skills for the profession |
286 for i = 1, GetNumTradeSkills() do | 304 for i = 1, GetNumTradeSkills() do |
287 -- Process every single tradeskill | 305 -- Process every single tradeskill |
288 self:ProcessTradeSkill(i, groupName); | 306 self:ProcessTradeSkill(i, groupName, temp); |
289 end | 307 end |
290 end | 308 |
291 | 309 for itemId, _ in pairs(addon.db.global.groups[groupName].items) do |
292 function mod:ProcessTradeSkill(i, groupName) | 310 if not temp[itemId] then |
311 local itemLink = select(2, GetItemInfo(itemId)); | |
312 print("Couldn't queue " .. itemLink); | |
313 end | |
314 end | |
315 end | |
316 | |
317 function mod:ProcessTradeSkill(i, groupName, temp) | |
293 -- Try to retrieve the itemlink, this will be nil if current item is a group instead | 318 -- Try to retrieve the itemlink, this will be nil if current item is a group instead |
294 local itemLink = GetTradeSkillItemLink(i); | 319 local itemLink = GetTradeSkillItemLink(i); |
295 | 320 |
296 if itemLink then | 321 if itemLink then |
297 local itemId = addon:GetItemId(itemLink); | 322 local itemId = addon:GetItemId(itemLink); |
303 end | 328 end |
304 | 329 |
305 if addon.db.global.groups[groupName].items[itemId] then | 330 if addon.db.global.groups[groupName].items[itemId] then |
306 -- This item is in this group, queue it! | 331 -- This item is in this group, queue it! |
307 | 332 |
308 local amount = ( addon:GetOptionByKey(groupName, "restockTarget") - addon:GetItemCount(itemId) ); | 333 if temp then |
334 -- Remember which items have been processed | |
335 temp[itemId] = true; | |
336 end | |
309 | 337 |
310 if amount > 0 then | 338 local currentStock = addon:GetItemCount(itemId); |
311 self:Queue(i, amount); | 339 if currentStock >= 0 then |
340 -- Current stock will be -1 when no itemcount addon was found | |
341 local amount = ( addon:GetOptionByKey(groupName, "restockTarget") - currentStock ); | |
312 | 342 |
313 print("Queued " .. amount .. " of " .. itemLink); | 343 if amount > 0 then |
344 self:Queue(i, amount); | |
345 | |
346 print("Queued " .. amount .. " of " .. itemLink); | |
347 end | |
348 else | |
349 print("No usable itemcount addon found."); | |
314 end | 350 end |
315 end | 351 end |
316 end | 352 end |
317 end | 353 end |
318 | 354 |