Asa@28
|
1 local addonName, addonTable = ...;
|
Asa@3
|
2 local addon = _G[addonName]
|
Asa@3
|
3
|
Asa@13
|
4 local currentFaction = UnitFactionGroup("player")
|
Asa@13
|
5 local AHFactions = { currentFaction, 'Neutral' }
|
Asa@13
|
6
|
Asa@20
|
7 local craftingThresholds = {5000, 10000, 50000}
|
Asa@20
|
8 local craftingThresholdsDisplay = {}
|
Asa@20
|
9
|
Asa@20
|
10 for key, value in pairs(craftingThresholds) do
|
Asa@20
|
11 craftingThresholdsDisplay[key] = addon:FormatMoney(value, '', true)
|
Asa@20
|
12 -- craftingThresholdsDisplay[key] = value
|
Asa@20
|
13 end
|
Asa@20
|
14
|
Asa@3
|
15 local options = {
|
Asa@13
|
16 handler = addon,
|
Asa@3
|
17 name = "ItemAuditor",
|
Asa@3
|
18 type = 'group',
|
Asa@3
|
19 args = {
|
Asa@13
|
20 prices = {
|
Asa@13
|
21 name = "Prices",
|
Asa@13
|
22 desc = "Control how your minimum price is calculated.",
|
Asa@13
|
23 type = 'group',
|
Asa@13
|
24 args = {
|
Asa@13
|
25 auction_house = {
|
Asa@13
|
26 type = "select",
|
Asa@13
|
27 name = "Auction House",
|
Asa@13
|
28 desc = "",
|
Asa@13
|
29 values = { currentFaction, 'Neutral' },
|
Asa@13
|
30 get = 'GetAH',
|
Asa@13
|
31 set = 'SetAH',
|
Asa@13
|
32 },
|
Asa@13
|
33 },
|
Asa@3
|
34 },
|
Asa@13
|
35
|
Asa@13
|
36
|
Asa@13
|
37 messages = {
|
Asa@13
|
38 name = "Messages",
|
Asa@13
|
39 desc = "Control which messages display in your chat window.",
|
Asa@13
|
40 type = 'group',
|
Asa@13
|
41 args = {
|
Asa@20
|
42
|
Asa@20
|
43 item_cost = {
|
Asa@20
|
44 type = "toggle",
|
Asa@20
|
45 name = "Item Cost",
|
Asa@20
|
46 desc = "Shows a message every time an item's cost changes",
|
Asa@20
|
47 get = function() return ItemAuditor.db.profile.messages.cost_updates end,
|
Asa@20
|
48 set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end,
|
Asa@20
|
49 order = 0,
|
Asa@20
|
50 },
|
Asa@20
|
51 queue_skip = {
|
Asa@20
|
52 type = "toggle",
|
Asa@20
|
53 name = "Queue Skip",
|
Asa@20
|
54 desc = "Displays a message when an item is excluded from the queue.",
|
Asa@20
|
55 get = function() return ItemAuditor.db.profile.messages.queue_skip end,
|
Asa@20
|
56 set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end,
|
Asa@20
|
57 disabled = 'IsQADisabled',
|
Asa@20
|
58 order = 1,
|
Asa@20
|
59 },
|
Asa@13
|
60 },
|
Asa@3
|
61 },
|
Asa@13
|
62
|
Asa@13
|
63 qa_options = {
|
Asa@13
|
64 name = "QA Options",
|
Asa@13
|
65 desc = "Control how ItemAuditor integrates with QuickAuctions",
|
Asa@13
|
66 type = 'group',
|
Asa@13
|
67 -- disabled = (not addon.QA_compatibile),
|
Asa@13
|
68 disabled = function() return not ItemAuditor:IsQACompatible() end,
|
Asa@13
|
69 args = {
|
Asa@13
|
70 toggle_qa = {
|
Asa@13
|
71 type = "toggle",
|
Asa@13
|
72 name = "Enable Quick Auctions",
|
Asa@13
|
73 desc = "This will enable or disable Quick Auctions integration",
|
Asa@13
|
74 get = "IsQAEnabled",
|
Asa@13
|
75 set = "SetQAEnabled",
|
Asa@13
|
76 order = 0,
|
Asa@13
|
77 },
|
Asa@13
|
78 --[[
|
Asa@13
|
79 add_mail = {
|
Asa@13
|
80 type = "toggle",
|
Asa@13
|
81 name = "Add mail cost to QA Threshold",
|
Asa@13
|
82 get = "IsQAEnabled",
|
Asa@13
|
83 set = "SetQAEnabled",
|
Asa@13
|
84 order = 1,
|
Asa@13
|
85 },
|
Asa@13
|
86 ]]
|
Asa@20
|
87 auction_threshold = {
|
Asa@20
|
88 type = "range",
|
Asa@20
|
89 name = "Auction Threshold",
|
Asa@20
|
90 desc = "Don't create items that will make less than this amount of profit",
|
Asa@20
|
91 min = 0.0,
|
Asa@20
|
92 max = 1.0,
|
Asa@20
|
93 isPercent = true,
|
Asa@20
|
94 get = function() return ItemAuditor.db.char.auction_threshold end,
|
Asa@21
|
95 set = function(info, value)
|
Asa@21
|
96 ItemAuditor.db.char.auction_threshold = value
|
Asa@21
|
97 ItemAuditor:RefreshQAGroups()
|
Asa@21
|
98 end,
|
Asa@20
|
99 disabled = 'IsQADisabled',
|
Asa@20
|
100 order = 1,
|
Asa@20
|
101 },
|
Asa@13
|
102 refresh_qa = {
|
Asa@13
|
103 type = "execute",
|
Asa@13
|
104 name = "Refresh QA Thresholds",
|
Asa@13
|
105 desc = "Resets all Quick Auctions thresholds",
|
Asa@13
|
106 func = "RefreshQAGroups",
|
Asa@13
|
107 disabled = 'IsQADisabled',
|
Asa@20
|
108 order = 9,
|
Asa@13
|
109 },
|
Asa@21
|
110 }
|
Asa@21
|
111 },
|
Asa@21
|
112 crafting_options = {
|
Asa@21
|
113 name = "Crafting with Skillet",
|
Asa@21
|
114 desc = "/ia queue",
|
Asa@21
|
115 type = 'group',
|
Asa@21
|
116 disabled = function() return Skillet == nil end,
|
Asa@21
|
117 args = {
|
Asa@20
|
118 crafting_threshold = {
|
Asa@20
|
119 type = "select",
|
Asa@20
|
120 name = "Crafting Threshold",
|
Asa@20
|
121 desc = "Don't create items that will make less than this amount of profit",
|
Asa@20
|
122 values = craftingThresholdsDisplay,
|
Asa@20
|
123 get = function() return ItemAuditor.db.char.crafting_threshold end,
|
Asa@20
|
124 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
|
Asa@20
|
125 order = 11,
|
Asa@20
|
126 },
|
Asa@21
|
127 },
|
Asa@12
|
128 },
|
Asa@3
|
129 options = {
|
Asa@3
|
130 type = "execute",
|
Asa@3
|
131 name = "options",
|
Asa@3
|
132 desc = "Show Blizzard's options GUI",
|
Asa@3
|
133 func = "ShowOptionsGUI",
|
Asa@3
|
134 guiHidden = true,
|
Asa@3
|
135 },
|
Asa@18
|
136 queue = {
|
Asa@18
|
137 type = "execute",
|
Asa@18
|
138 name = "queue",
|
Asa@18
|
139 desc = "Queue",
|
Asa@18
|
140 func = "Queue",
|
Asa@18
|
141 guiHidden = true,
|
Asa@18
|
142 },
|
Asa@22
|
143 debug = {
|
Asa@22
|
144 type = "execute",
|
Asa@22
|
145 name = "debug",
|
Asa@22
|
146 desc = "Shows the debug frame",
|
Asa@22
|
147 func = function() ItemAuditor_DebugFrame:Show() end,
|
Asa@22
|
148 guiHidden = true,
|
Asa@28
|
149 },
|
Asa@28
|
150 invested = {
|
Asa@28
|
151 type = "execute",
|
Asa@28
|
152 name = "invested",
|
Asa@28
|
153 desc = "Shows what you have invested in",
|
Asa@28
|
154 func = "CreateFrames",
|
Asa@28
|
155 guiHidden = false,
|
Asa@28
|
156 },
|
Asa@38
|
157 suspend = {
|
Asa@38
|
158 type = "toggle",
|
Asa@38
|
159 name = "suspend",
|
Asa@38
|
160 desc = "Suspends ItemAuditor",
|
Asa@38
|
161 get = "IsEnabled",
|
Asa@38
|
162 set = "SetEnabled",
|
Asa@38
|
163 guiHidden = true,
|
Asa@38
|
164 },
|
Asa@3
|
165 },
|
Asa@3
|
166 }
|
Asa@3
|
167
|
Asa@38
|
168 function addon:SetEnabled(info, enable)
|
Asa@38
|
169 self.db.profile.addon_enabled = enable
|
Asa@38
|
170 if enable == self:IsEnabled() then
|
Asa@38
|
171 -- do nothing
|
Asa@38
|
172 elseif enable then
|
Asa@38
|
173 self:Enable()
|
Asa@38
|
174 self:Print('ItemAuditor is enabled.')
|
Asa@38
|
175 else
|
Asa@38
|
176 self:Disable()
|
Asa@38
|
177 self:Print('ItemAuditor is supended and will not watch for any events. Use "/ia suspend" to turn it back on.')
|
Asa@38
|
178 end
|
Asa@38
|
179 end
|
Asa@38
|
180
|
Asa@3
|
181 function addon:RegisterOptions()
|
Asa@3
|
182 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor")
|
Asa@3
|
183 LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"})
|
Asa@3
|
184 end
|
Asa@3
|
185
|
Asa@7
|
186 local function pairsByKeys (t, f)
|
Asa@7
|
187 local a = {}
|
Asa@7
|
188 for n in pairs(t) do table.insert(a, n) end
|
Asa@7
|
189 table.sort(a, f)
|
Asa@7
|
190 local i = 0 -- iterator variable
|
Asa@7
|
191 local iter = function () -- iterator function
|
Asa@7
|
192 i = i + 1
|
Asa@7
|
193 if a[i] == nil then return nil
|
Asa@7
|
194 else return a[i], t[a[i]]
|
Asa@7
|
195 end
|
Asa@7
|
196 end
|
Asa@7
|
197 return iter
|
Asa@7
|
198 end
|
Asa@7
|
199
|
Asa@20
|
200 function addon:GetCraftingThreshold()
|
Asa@20
|
201 local key = ItemAuditor.db.char.crafting_threshold
|
Asa@20
|
202 return craftingThresholds[key]
|
Asa@20
|
203 end
|
Asa@20
|
204
|
Asa@20
|
205 function addon:GetAuctionThreshold()
|
Asa@20
|
206 return ItemAuditor.db.char.auction_threshold
|
Asa@20
|
207 end
|
Asa@20
|
208
|
Asa@13
|
209 function addon:GetAH()
|
Asa@13
|
210 return ItemAuditor.db.char.ah
|
Asa@13
|
211 end
|
Asa@13
|
212
|
Asa@13
|
213 function addon:SetAH(info, value)
|
Asa@13
|
214 ItemAuditor.db.char.ah = value
|
Asa@13
|
215 end
|
Asa@13
|
216
|
Asa@13
|
217 function addon:GetAHCut()
|
Asa@13
|
218 if ItemAuditor.db.char.ah == 1 then
|
Asa@13
|
219 return 0.05
|
Asa@13
|
220 end
|
Asa@13
|
221 return 0.15
|
Asa@13
|
222 end
|
Asa@13
|
223
|
Asa@13
|
224 function addon:GetAHFaction()
|
Asa@13
|
225 return AHFactions[ItemAuditor.db.char.ah]
|
Asa@13
|
226 end
|
Asa@13
|
227
|
Asa@3
|
228 function addon:ShowOptionsGUI()
|
Asa@3
|
229 InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
|
Asa@3
|
230 end
|
Asa@3
|
231
|
Asa@3
|
232
|