annotate 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
rev   line source
Zerotorescue@13 1 local addon = LibStub("AceAddon-3.0"):GetAddon("Inventorium");
Zerotorescue@13 2 local mod = addon:NewModule("Queue", "AceEvent-3.0", "AceTimer-3.0");
Zerotorescue@13 3
Zerotorescue@13 4 local scrollIds = {
Zerotorescue@13 5 [27951] = 37603,
Zerotorescue@13 6 [7418] = 38679,
Zerotorescue@13 7 [7420] = 38766,
Zerotorescue@13 8 [7426] = 38767,
Zerotorescue@13 9 [7428] = 38768,
Zerotorescue@13 10 [7443] = 38769,
Zerotorescue@13 11 [7454] = 38770,
Zerotorescue@13 12 [7457] = 38771,
Zerotorescue@13 13 [7745] = 38772,
Zerotorescue@13 14 [7748] = 38773,
Zerotorescue@13 15 [7766] = 38774,
Zerotorescue@13 16 [7771] = 38775,
Zerotorescue@13 17 [7776] = 38776,
Zerotorescue@13 18 [7779] = 38777,
Zerotorescue@13 19 [7782] = 38778,
Zerotorescue@13 20 [7786] = 38779,
Zerotorescue@13 21 [7788] = 38780,
Zerotorescue@13 22 [7793] = 38781,
Zerotorescue@13 23 [7857] = 38782,
Zerotorescue@13 24 [7859] = 38783,
Zerotorescue@13 25 [7861] = 38784,
Zerotorescue@13 26 [7863] = 38785,
Zerotorescue@13 27 [7867] = 38786,
Zerotorescue@13 28 [13378] = 38787,
Zerotorescue@13 29 [13380] = 38788,
Zerotorescue@13 30 [13419] = 38789,
Zerotorescue@13 31 [13421] = 38790,
Zerotorescue@13 32 [13464] = 38791,
Zerotorescue@13 33 [13485] = 38792,
Zerotorescue@13 34 [13501] = 38793,
Zerotorescue@13 35 [13503] = 38794,
Zerotorescue@13 36 [13522] = 38795,
Zerotorescue@13 37 [13529] = 38796,
Zerotorescue@13 38 [13536] = 38797,
Zerotorescue@13 39 [13538] = 38798,
Zerotorescue@13 40 [13607] = 38799,
Zerotorescue@13 41 [13612] = 38800,
Zerotorescue@13 42 [13617] = 38801,
Zerotorescue@13 43 [13620] = 38802,
Zerotorescue@13 44 [13622] = 38803,
Zerotorescue@13 45 [13626] = 38804,
Zerotorescue@13 46 [13631] = 38805,
Zerotorescue@13 47 [13635] = 38806,
Zerotorescue@13 48 [13637] = 38807,
Zerotorescue@13 49 [13640] = 38808,
Zerotorescue@13 50 [13642] = 38809,
Zerotorescue@13 51 [13644] = 38810,
Zerotorescue@13 52 [13646] = 38811,
Zerotorescue@13 53 [13648] = 38812,
Zerotorescue@13 54 [13653] = 38813,
Zerotorescue@13 55 [13655] = 38814,
Zerotorescue@13 56 [13657] = 38815,
Zerotorescue@13 57 [13659] = 38816,
Zerotorescue@13 58 [13661] = 38817,
Zerotorescue@13 59 [13663] = 38818,
Zerotorescue@13 60 [13687] = 38819,
Zerotorescue@13 61 [13689] = 38820,
Zerotorescue@13 62 [13693] = 38821,
Zerotorescue@13 63 [13695] = 38822,
Zerotorescue@13 64 [13698] = 38823,
Zerotorescue@13 65 [13700] = 38824,
Zerotorescue@13 66 [13746] = 38825,
Zerotorescue@13 67 [13794] = 38826,
Zerotorescue@13 68 [13815] = 38827,
Zerotorescue@13 69 [13817] = 38828,
Zerotorescue@13 70 [13822] = 38829,
Zerotorescue@13 71 [13836] = 38830,
Zerotorescue@13 72 [13841] = 38831,
Zerotorescue@13 73 [13846] = 38832,
Zerotorescue@13 74 [13858] = 38833,
Zerotorescue@13 75 [13868] = 38834,
Zerotorescue@13 76 [13882] = 38835,
Zerotorescue@13 77 [13887] = 38836,
Zerotorescue@13 78 [13890] = 38837,
Zerotorescue@13 79 [13898] = 38838,
Zerotorescue@13 80 [13905] = 38839,
Zerotorescue@13 81 [13915] = 38840,
Zerotorescue@13 82 [13917] = 38841,
Zerotorescue@13 83 [13931] = 38842,
Zerotorescue@13 84 [13933] = 38843,
Zerotorescue@13 85 [13935] = 38844,
Zerotorescue@13 86 [13937] = 38845,
Zerotorescue@13 87 [13939] = 38846,
Zerotorescue@13 88 [13941] = 38847,
Zerotorescue@13 89 [13943] = 38848,
Zerotorescue@13 90 [13945] = 38849,
Zerotorescue@13 91 [13947] = 38850,
Zerotorescue@13 92 [13948] = 38851,
Zerotorescue@13 93 [20008] = 38852,
Zerotorescue@13 94 [20009] = 38853,
Zerotorescue@13 95 [20010] = 38854,
Zerotorescue@13 96 [20011] = 38855,
Zerotorescue@13 97 [20012] = 38856,
Zerotorescue@13 98 [20013] = 38857,
Zerotorescue@13 99 [20014] = 38858,
Zerotorescue@13 100 [20015] = 38859,
Zerotorescue@13 101 [20016] = 38860,
Zerotorescue@13 102 [20017] = 38861,
Zerotorescue@13 103 [20020] = 38862,
Zerotorescue@13 104 [20023] = 38863,
Zerotorescue@13 105 [20024] = 38864,
Zerotorescue@13 106 [20025] = 38865,
Zerotorescue@13 107 [20026] = 38866,
Zerotorescue@13 108 [20028] = 38867,
Zerotorescue@13 109 [20029] = 38868,
Zerotorescue@13 110 [20030] = 38869,
Zerotorescue@13 111 [20031] = 38870,
Zerotorescue@13 112 [20032] = 38871,
Zerotorescue@13 113 [20033] = 38872,
Zerotorescue@13 114 [20034] = 38873,
Zerotorescue@13 115 [20035] = 38874,
Zerotorescue@13 116 [20036] = 38875,
Zerotorescue@13 117 [21931] = 38876,
Zerotorescue@13 118 [22749] = 38877,
Zerotorescue@13 119 [22750] = 38878,
Zerotorescue@13 120 [23799] = 38879,
Zerotorescue@13 121 [23800] = 38880,
Zerotorescue@13 122 [23801] = 38881,
Zerotorescue@13 123 [23802] = 38882,
Zerotorescue@13 124 [23803] = 38883,
Zerotorescue@13 125 [23804] = 38884,
Zerotorescue@13 126 [25072] = 38885,
Zerotorescue@13 127 [25073] = 38886,
Zerotorescue@13 128 [25074] = 38887,
Zerotorescue@13 129 [25078] = 38888,
Zerotorescue@13 130 [25079] = 38889,
Zerotorescue@13 131 [25080] = 38890,
Zerotorescue@13 132 [25081] = 38891,
Zerotorescue@13 133 [25082] = 38892,
Zerotorescue@13 134 [25083] = 38893,
Zerotorescue@13 135 [25084] = 38894,
Zerotorescue@13 136 [25086] = 38895,
Zerotorescue@13 137 [27837] = 38896,
Zerotorescue@13 138 [27899] = 38897,
Zerotorescue@13 139 [27905] = 38898,
Zerotorescue@13 140 [27906] = 38899,
Zerotorescue@13 141 [27911] = 38900,
Zerotorescue@13 142 [27913] = 38901,
Zerotorescue@13 143 [27914] = 38902,
Zerotorescue@13 144 [27917] = 38903,
Zerotorescue@13 145 [27944] = 38904,
Zerotorescue@13 146 [27945] = 38905,
Zerotorescue@13 147 [27946] = 38906,
Zerotorescue@13 148 [27947] = 38907,
Zerotorescue@13 149 [27948] = 38908,
Zerotorescue@13 150 [27950] = 38909,
Zerotorescue@13 151 [27954] = 38910,
Zerotorescue@13 152 [27957] = 38911,
Zerotorescue@13 153 [27958] = 38912,
Zerotorescue@13 154 [27960] = 38913,
Zerotorescue@13 155 [27961] = 38914,
Zerotorescue@13 156 [27962] = 38915,
Zerotorescue@13 157 [27967] = 38917,
Zerotorescue@13 158 [27968] = 38918,
Zerotorescue@13 159 [27971] = 38919,
Zerotorescue@13 160 [27972] = 38920,
Zerotorescue@13 161 [27975] = 38921,
Zerotorescue@13 162 [27977] = 38922,
Zerotorescue@13 163 [27981] = 38923,
Zerotorescue@13 164 [27982] = 38924,
Zerotorescue@13 165 [27984] = 38925,
Zerotorescue@13 166 [28003] = 38926,
Zerotorescue@13 167 [28004] = 38927,
Zerotorescue@13 168 [33990] = 38928,
Zerotorescue@13 169 [33991] = 38929,
Zerotorescue@13 170 [33992] = 38930,
Zerotorescue@13 171 [33993] = 38931,
Zerotorescue@13 172 [33994] = 38932,
Zerotorescue@13 173 [33995] = 38933,
Zerotorescue@13 174 [33996] = 38934,
Zerotorescue@13 175 [33997] = 38935,
Zerotorescue@13 176 [33999] = 38936,
Zerotorescue@13 177 [34001] = 38937,
Zerotorescue@13 178 [34002] = 38938,
Zerotorescue@13 179 [34003] = 38939,
Zerotorescue@13 180 [34004] = 38940,
Zerotorescue@13 181 [34005] = 38941,
Zerotorescue@13 182 [34006] = 38942,
Zerotorescue@13 183 [34007] = 38943,
Zerotorescue@13 184 [34008] = 38944,
Zerotorescue@13 185 [34009] = 38945,
Zerotorescue@13 186 [34010] = 38946,
Zerotorescue@13 187 [42620] = 38947,
Zerotorescue@13 188 [42974] = 38948,
Zerotorescue@13 189 [44383] = 38949,
Zerotorescue@13 190 [44483] = 38950,
Zerotorescue@13 191 [44484] = 38951,
Zerotorescue@13 192 [44488] = 38953,
Zerotorescue@13 193 [44489] = 38954,
Zerotorescue@13 194 [44492] = 38955,
Zerotorescue@13 195 [44494] = 38956,
Zerotorescue@13 196 [44500] = 38959,
Zerotorescue@13 197 [44506] = 38960,
Zerotorescue@13 198 [44508] = 38961,
Zerotorescue@13 199 [44509] = 38962,
Zerotorescue@13 200 [44510] = 38963,
Zerotorescue@13 201 [44513] = 38964,
Zerotorescue@13 202 [44524] = 38965,
Zerotorescue@13 203 [44528] = 38966,
Zerotorescue@13 204 [44529] = 38967,
Zerotorescue@13 205 [44555] = 38968,
Zerotorescue@13 206 [44556] = 38969,
Zerotorescue@13 207 [60616] = 38971,
Zerotorescue@13 208 [44576] = 38972,
Zerotorescue@13 209 [44582] = 38973,
Zerotorescue@13 210 [44584] = 38974,
Zerotorescue@13 211 [44588] = 38975,
Zerotorescue@13 212 [44589] = 38976,
Zerotorescue@13 213 [44590] = 38977,
Zerotorescue@13 214 [44591] = 38978,
Zerotorescue@13 215 [44592] = 38979,
Zerotorescue@13 216 [44593] = 38980,
Zerotorescue@13 217 [44595] = 38981,
Zerotorescue@13 218 [44596] = 38982,
Zerotorescue@13 219 [44598] = 38984,
Zerotorescue@13 220 [60623] = 38986,
Zerotorescue@13 221 [44616] = 38987,
Zerotorescue@13 222 [44621] = 38988,
Zerotorescue@13 223 [44623] = 38989,
Zerotorescue@13 224 [44625] = 38990,
Zerotorescue@13 225 [44629] = 38991,
Zerotorescue@13 226 [44630] = 38992,
Zerotorescue@13 227 [44631] = 38993,
Zerotorescue@13 228 [44633] = 38995,
Zerotorescue@13 229 [44635] = 38997,
Zerotorescue@13 230 [46578] = 38998,
Zerotorescue@13 231 [46594] = 38999,
Zerotorescue@13 232 [47051] = 39000,
Zerotorescue@13 233 [47672] = 39001,
Zerotorescue@13 234 [47766] = 39002,
Zerotorescue@13 235 [47898] = 39003,
Zerotorescue@13 236 [47899] = 39004,
Zerotorescue@13 237 [47900] = 39005,
Zerotorescue@13 238 [47901] = 39006,
Zerotorescue@13 239 [59625] = 43987,
Zerotorescue@13 240 [60606] = 44449,
Zerotorescue@13 241 [60621] = 44453,
Zerotorescue@13 242 [60653] = 44455,
Zerotorescue@13 243 [60609] = 44456,
Zerotorescue@13 244 [60663] = 44457,
Zerotorescue@13 245 [60668] = 44458,
Zerotorescue@13 246 [60691] = 44463,
Zerotorescue@13 247 [60692] = 44465,
Zerotorescue@13 248 [60707] = 44466,
Zerotorescue@13 249 [60714] = 44467,
Zerotorescue@13 250 [60763] = 44469,
Zerotorescue@13 251 [60767] = 44470,
Zerotorescue@13 252 [59621] = 44493,
Zerotorescue@13 253 [59619] = 44497,
Zerotorescue@13 254 [44575] = 44815,
Zerotorescue@13 255 [62256] = 44947,
Zerotorescue@13 256 [62948] = 45056,
Zerotorescue@13 257 [62959] = 45060,
Zerotorescue@13 258 [63746] = 45628,
Zerotorescue@13 259 [64441] = 46026,
Zerotorescue@13 260 [64579] = 46098,
Zerotorescue@13 261 [71692] = 50816,
Zerotorescue@13 262 };--enchantId=scrollId
Zerotorescue@13 263
Zerotorescue@13 264 function mod:OnEnable()
Zerotorescue@13 265 -- Register our own slash commands
Zerotorescue@13 266 addon:RegisterSlash(function()
Zerotorescue@13 267 self:QueueAll();
Zerotorescue@13 268 end, "q", "que", "queue");
Zerotorescue@14 269
Zerotorescue@14 270 self:RegisterMessage("IM_QUEUE_ALL");
Zerotorescue@14 271 self:RegisterMessage("IM_QUEUE_GROUP");
Zerotorescue@14 272 end
Zerotorescue@14 273
Zerotorescue@14 274 function mod:IM_QUEUE_ALL()
Zerotorescue@14 275 self:QueueAll();
Zerotorescue@14 276 end
Zerotorescue@14 277
Zerotorescue@14 278 function mod:IM_QUEUE_GROUP(event, groupName)
Zerotorescue@14 279 self:QueueGroup(groupName);
Zerotorescue@13 280 end
Zerotorescue@13 281
Zerotorescue@13 282 function mod:QueueAll()
Zerotorescue@14 283 local playerName = UnitName("player");
Zerotorescue@14 284
Zerotorescue@14 285 -- Go through all groups
Zerotorescue@14 286 for groupName, values in pairs(addon.db.global.groups) do
Zerotorescue@14 287 local trackAt = (values.trackAtCharacters or (values.trackAtCharacters == nil and addon.db.global.defaults.trackAtCharacters));
Zerotorescue@14 288
Zerotorescue@14 289 if trackAt[playerName] then
Zerotorescue@14 290 self:QueueGroup(groupName);
Zerotorescue@13 291 end
Zerotorescue@13 292 end
Zerotorescue@13 293 end
Zerotorescue@13 294
Zerotorescue@13 295 function mod:QueueGroup(groupName)
Zerotorescue@14 296 if not addon.db.global.groups[groupName] then
Zerotorescue@14 297 print(("Tried to queue items from a group named \"%s\", but no such group exists."):format(groupName));
Zerotorescue@14 298 return;
Zerotorescue@14 299 end
Zerotorescue@14 300
Zerotorescue@14 301 local temp = {};
Zerotorescue@13 302
Zerotorescue@13 303 -- Go through all trade skills for the profession
Zerotorescue@13 304 for i = 1, GetNumTradeSkills() do
Zerotorescue@13 305 -- Process every single tradeskill
Zerotorescue@14 306 self:ProcessTradeSkill(i, groupName, temp);
Zerotorescue@14 307 end
Zerotorescue@14 308
Zerotorescue@14 309 for itemId, _ in pairs(addon.db.global.groups[groupName].items) do
Zerotorescue@14 310 if not temp[itemId] then
Zerotorescue@14 311 local itemLink = select(2, GetItemInfo(itemId));
Zerotorescue@14 312 print("Couldn't queue " .. itemLink);
Zerotorescue@14 313 end
Zerotorescue@13 314 end
Zerotorescue@13 315 end
Zerotorescue@13 316
Zerotorescue@14 317 function mod:ProcessTradeSkill(i, groupName, temp)
Zerotorescue@13 318 -- Try to retrieve the itemlink, this will be nil if current item is a group instead
Zerotorescue@13 319 local itemLink = GetTradeSkillItemLink(i);
Zerotorescue@13 320
Zerotorescue@13 321 if itemLink then
Zerotorescue@13 322 local itemId = addon:GetItemId(itemLink);
Zerotorescue@13 323 if not itemId then
Zerotorescue@13 324 -- If this isn't an item, it can only be an enchant instead
Zerotorescue@13 325 itemId = tonumber(itemLink:match("|Henchant:([-0-9]+)|h"));
Zerotorescue@13 326
Zerotorescue@13 327 itemId = scrollIds[itemId]; -- change enchantIds into scrollIds
Zerotorescue@13 328 end
Zerotorescue@13 329
Zerotorescue@13 330 if addon.db.global.groups[groupName].items[itemId] then
Zerotorescue@13 331 -- This item is in this group, queue it!
Zerotorescue@13 332
Zerotorescue@14 333 if temp then
Zerotorescue@14 334 -- Remember which items have been processed
Zerotorescue@14 335 temp[itemId] = true;
Zerotorescue@14 336 end
Zerotorescue@13 337
Zerotorescue@14 338 local currentStock = addon:GetItemCount(itemId);
Zerotorescue@14 339 if currentStock >= 0 then
Zerotorescue@14 340 -- Current stock will be -1 when no itemcount addon was found
Zerotorescue@14 341 local amount = ( addon:GetOptionByKey(groupName, "restockTarget") - currentStock );
Zerotorescue@13 342
Zerotorescue@14 343 if amount > 0 then
Zerotorescue@14 344 self:Queue(i, amount);
Zerotorescue@14 345
Zerotorescue@14 346 print("Queued " .. amount .. " of " .. itemLink);
Zerotorescue@14 347 end
Zerotorescue@14 348 else
Zerotorescue@14 349 print("No usable itemcount addon found.");
Zerotorescue@13 350 end
Zerotorescue@13 351 end
Zerotorescue@13 352 end
Zerotorescue@13 353 end
Zerotorescue@13 354
Zerotorescue@13 355 function mod:Queue(tradeSkillIndex, amount)
Zerotorescue@13 356 tradeSkillIndex = tonumber(tradeSkillIndex);
Zerotorescue@13 357 amount = tonumber(amount);
Zerotorescue@13 358
Zerotorescue@13 359 if not tradeSkillIndex or not amount then return; end
Zerotorescue@13 360
Zerotorescue@13 361 if addon.supportedAddons.crafting[addon.db.global.defaults.craftingAddon] then
Zerotorescue@13 362 -- Try to use the default auction pricing addon
Zerotorescue@13 363
Zerotorescue@13 364 return addon.supportedAddons.crafting[addon.db.global.defaults.craftingAddon].Queue(tradeSkillIndex, amount);
Zerotorescue@13 365 else
Zerotorescue@13 366 -- Default not available, get the first one then
Zerotorescue@13 367
Zerotorescue@13 368 for name, value in pairs(addon.supportedAddons.crafting) do
Zerotorescue@13 369 if value.IsEnabled() then
Zerotorescue@13 370 return value.Queue(tradeSkillIndex, amount);
Zerotorescue@13 371 end
Zerotorescue@13 372 end
Zerotorescue@13 373 end
Zerotorescue@13 374
Zerotorescue@13 375 return -2;
Zerotorescue@13 376 end