Asa@64
|
1 local ItemAuditor = select(2, ...)
|
Asa@64
|
2
|
Asa@64
|
3 local Crafting = ItemAuditor:GetModule("Crafting")
|
Asa@64
|
4
|
Asa@64
|
5 IAapi = {}
|
Asa@64
|
6
|
Asa@64
|
7 --[[
|
Asa@64
|
8 You can register a callback here to influence which items will get crafted and how many.
|
Asa@64
|
9 The decider function needs to return the number of items the user should have in their
|
Asa@64
|
10 inventory. If the number owned is less than the highest decided number, that item will
|
Asa@64
|
11 be queued to be crafted unless any decider vetos the item.
|
Asa@64
|
12
|
Asa@64
|
13 There is no way to unregister your decider but it can be overwritten with a function that simply returns 0.
|
Asa@64
|
14
|
Asa@64
|
15 Please make sure your decider runs as fast as possible, It will be called at least once
|
Asa@64
|
16 for every tradeskill being considered.
|
Asa@64
|
17
|
Asa@64
|
18 I find the (non) word "Decider" to be amusing, so I used it.
|
Asa@64
|
19
|
Asa@64
|
20 ItemAuditor will veto any item that costs more to create than it will sell for, It will also
|
Asa@64
|
21 queue one of every item that is profitable. If you simply wanted to increase that to 5 of every
|
Asa@64
|
22 profitable item you could use this:
|
Asa@64
|
23
|
Asa@64
|
24 IAapi.RegisterCraftingDecider('Five', function() return 5 end)
|
Asa@64
|
25 ]]
|
Asa@73
|
26 function IAapi.RegisterCraftingDecider(name, decider, optionsTable)
|
Asa@70
|
27 assert(type(name) == 'string', 'name must be a string to identify your addon. This will be displayed to the user.')
|
Asa@73
|
28 assert(type(decider) == 'function', 'decider must be a function.')
|
Asa@73
|
29 assert(optionsTable == nil or type(optionsTable) == 'table')
|
Asa@73
|
30 Crafting.RegisterCraftingDecider(name, decider, optionsTable)
|
Asa@64
|
31 end
|
Asa@64
|
32
|
Asa@70
|
33 function IAapi.RegisterQueueDestination(name, destination)
|
Asa@70
|
34 assert(type(name) == 'string', 'name must be a string to identify your addon. This will be displayed to the user.')
|
Asa@70
|
35 assert(type(destination) == 'function', 'destination must be a function that will be called for each item when exporting the queue.')
|
Asa@70
|
36
|
Asa@70
|
37 Crafting.RegisterQueueDestination(name, destination)
|
Asa@70
|
38 end
|
Asa@64
|
39
|
Asa@70
|
40 function IAapi.UnRegisterQueueDestination(name)
|
Asa@70
|
41 assert(type(name) == 'string', 'name must be the string that was used to register your addon.')
|
Asa@70
|
42 Crafting.UnRegisterQueueDestination(name)
|
Asa@70
|
43 end
|
Asa@70
|
44
|
Asa@95
|
45 local function registerLoadedAddons()
|
Asa@95
|
46 return ItemAuditor_RegisterAPI and ItemAuditor_RegisterAPI()
|
Asa@95
|
47 end
|
Asa@95
|
48 registerLoadedAddons()
|
Asa@95
|
49
|
Asa@95
|
50
|
Asa@95
|
51 -- This is here so I have a second option in the menu and to serve as an example of
|
Asa@95
|
52 -- how to register your addon with ItemAuditor.
|
Asa@70
|
53 --@debug@
|
Asa@95
|
54 local function RegisterWithItemAuditor()
|
Asa@95
|
55 local function testDestination(data)
|
Asa@95
|
56 -- Replace this with a call to the methods you need in your addon
|
Asa@95
|
57 ItemAuditor:Print('queue: '..data.recipeLink)
|
Asa@95
|
58 end
|
Asa@95
|
59 -- Replace Echo with the name of your addon so it can be selected from /ia options
|
Asa@95
|
60 IAapi.RegisterQueueDestination('Echo', testDestination)
|
Asa@70
|
61 end
|
Asa@70
|
62
|
Asa@95
|
63 if IAapi then
|
Asa@95
|
64 RegisterWithItemAuditor()
|
Asa@95
|
65 else
|
Asa@95
|
66 -- make sure to save any other addon's function
|
Asa@95
|
67 local original = ItemAuditor_RegisterAPI
|
Asa@95
|
68 -- this should not be local so it replaces (or creates) the global function
|
Asa@95
|
69 function ItemAuditor_RegisterAPI()
|
Asa@95
|
70 RegisterWithItemAuditor()
|
Asa@95
|
71 -- if original has a value (function), this will run it
|
Asa@95
|
72 return original and original()
|
Asa@95
|
73 end
|
Asa@95
|
74 end
|
Asa@95
|
75
|
Asa@95
|
76
|
Asa@95
|
77
|
Asa@95
|
78
|
Asa@70
|
79 --@end-debug@
|