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