adam@0
|
1 local _, AskMrRobot = ...
|
adam@0
|
2
|
adam@0
|
3 local showImportDetailsError = nil
|
adam@0
|
4 local showImportErrorTab = nil
|
adam@0
|
5
|
adam@0
|
6 AskMrRobot.AmrUI = AskMrRobot.inheritsFrom(AskMrRobot.Frame)
|
adam@0
|
7
|
adam@0
|
8 function AskMrRobot.AmrUI:swapSimilarSlotsIfNeeded(slotName1, slotName2)
|
adam@0
|
9 local slotId1 = GetInventorySlotInfo(slotName1)
|
adam@0
|
10 local slotId2 = GetInventorySlotInfo(slotName2)
|
adam@0
|
11 local slotNum1 = AskMrRobot.slotIdToSlotNum[slotId1]
|
adam@0
|
12 local slotNum2 = AskMrRobot.slotIdToSlotNum[slotId2]
|
adam@0
|
13
|
adam@0
|
14 local itemLink1 = GetInventoryItemLink("player", slotId1)
|
adam@0
|
15 local itemLink2 = GetInventoryItemLink("player", slotId2)
|
adam@0
|
16
|
adam@0
|
17 -- see how bad the items are in the original order
|
adam@0
|
18 AskMrRobot.populateItemDiffs(self.importedItems[slotNum1], itemLink1, slotNum1)
|
adam@0
|
19 AskMrRobot.populateItemDiffs(self.importedItems[slotNum2], itemLink2, slotNum2)
|
adam@0
|
20
|
adam@0
|
21 local badCountOriginalOrder = 0
|
adam@0
|
22 if AskMrRobot.itemDiffs.items[slotNum1] then badCountOriginalOrder = badCountOriginalOrder + 1 end
|
adam@0
|
23 if AskMrRobot.itemDiffs.items[slotNum2] then badCountOriginalOrder = badCountOriginalOrder + 1 end
|
adam@0
|
24
|
adam@0
|
25 -- try the order swapped
|
adam@0
|
26 AskMrRobot.populateItemDiffs(self.importedItems[slotNum1], itemLink2, slotNum1)
|
adam@0
|
27 AskMrRobot.populateItemDiffs(self.importedItems[slotNum2], itemLink1, slotNum2)
|
adam@0
|
28
|
adam@0
|
29 local badCountNewOrder = 0
|
adam@0
|
30 if AskMrRobot.itemDiffs.items[slotNum1] then badCountNewOrder = badCountNewOrder + 1 end
|
adam@0
|
31 if AskMrRobot.itemDiffs.items[slotNum2] then badCountNewOrder = badCountNewOrder + 1 end
|
adam@0
|
32
|
adam@0
|
33 -- if the items were less bad in the new order, swap the imported items
|
adam@0
|
34 if badCountNewOrder < badCountOriginalOrder then
|
adam@0
|
35 local tempItem = self.importedItems[slotNum1]
|
adam@0
|
36 self.importedItems[slotNum1] = self.importedItems[slotNum2]
|
adam@0
|
37 self.importedItems[slotNum2] = tempItem
|
adam@0
|
38 end
|
adam@0
|
39 end
|
adam@0
|
40
|
adam@0
|
41 function AskMrRobot.AmrUI:displayImportItems()
|
adam@0
|
42 if not self.importedItems then
|
adam@0
|
43 return false
|
adam@0
|
44 end
|
adam@0
|
45
|
adam@0
|
46 --see if rings or trinkets are swapped, and alter self.importedItems accordingly
|
adam@0
|
47 self:swapSimilarSlotsIfNeeded("Finger0Slot", "Finger1Slot")
|
adam@0
|
48 self:swapSimilarSlotsIfNeeded("Trinket0Slot", "Trinket1Slot")
|
adam@0
|
49
|
adam@0
|
50 for slotNum = 1, #AskMrRobot.slotIds do
|
adam@0
|
51 if AskMrRobot.OptimizationSlots[slotNum] then
|
adam@0
|
52 local slotId = AskMrRobot.slotIds[slotNum]
|
adam@0
|
53 local itemLink = GetInventoryItemLink("player", slotId)
|
adam@0
|
54 AskMrRobot.populateItemDiffs(self.importedItems[slotNum], itemLink, slotNum)
|
adam@0
|
55 end
|
adam@0
|
56 end
|
adam@0
|
57
|
adam@0
|
58 self.summaryTab:showBadItems()
|
adam@0
|
59
|
adam@0
|
60 -- if there are incorrect items equiped, display errors on other tabs
|
adam@0
|
61 if AskMrRobot.itemDiffs and AskMrRobot.itemDiffs.items then
|
adam@0
|
62 for k,v in pairs(AskMrRobot.itemDiffs.items) do
|
adam@0
|
63 if not v.needsUpgrade then
|
adam@0
|
64 self.hasImportError = true
|
adam@0
|
65 end
|
adam@0
|
66 end
|
adam@0
|
67 end
|
adam@0
|
68
|
adam@0
|
69 if self.hasImportError then
|
adam@0
|
70 showImportDetailsError()
|
adam@0
|
71 else
|
adam@0
|
72 self.gemTab:Update()
|
adam@0
|
73 self.enchantTab:showBadEnchants()
|
adam@0
|
74 self.reforgeTab:Render()
|
adam@0
|
75 self.shoppingTab:Update()
|
adam@0
|
76 end
|
adam@0
|
77 end
|
adam@0
|
78
|
adam@0
|
79 function AskMrRobot.AmrUI:showImportError(text, ...)
|
adam@0
|
80 self.summaryTab:showImportError(text, ...)
|
adam@0
|
81 if text then
|
adam@0
|
82 self.hasImportError = true
|
adam@0
|
83 showImportDetailsError()
|
adam@0
|
84 else
|
adam@0
|
85 self.hasImportError = false
|
adam@0
|
86 end
|
adam@0
|
87 end
|
adam@0
|
88
|
adam@0
|
89 function AskMrRobot.AmrUI:showImportWarning(text, ...)
|
adam@0
|
90 self.summaryTab:showImportWarning(text, ...)
|
adam@0
|
91 self.hasImportError = false
|
adam@0
|
92 if text then
|
adam@0
|
93 showImportDetailsError()
|
adam@0
|
94 end
|
adam@0
|
95 end
|
adam@0
|
96
|
adam@0
|
97 function AskMrRobot.AmrUI:validateInput(input)
|
adam@0
|
98
|
adam@0
|
99 self.importedItems = nil
|
adam@0
|
100 self.mostlySuccess = false
|
adam@0
|
101
|
adam@0
|
102 local parsed = AskMrRobot.parseAmr(input)
|
adam@0
|
103
|
adam@0
|
104 if not parsed.realm then
|
adam@0
|
105 self:showImportError("Oops, you didn't have proper import text", "Please go back to AskMrRobot.com and grab optimizations for this character")
|
adam@0
|
106 elseif not AskMrRobot.validateCharacterName(parsed.name) then
|
adam@0
|
107 self:showImportError("Oops, you've imported optimizations for " .. parsed.name, "Please go back to AskMrRobot.com and grab optimizations for this character, who is much better looking anyway!")
|
adam@0
|
108 elseif not AskMrRobot.validateRace(parsed.race) then
|
adam@0
|
109 self:showImportError("It looks like your race may have changed, which affects the optimizations.", "Right now, Mr. Robot thinks you are a " .. parsed.race)
|
adam@0
|
110 elseif not AskMrRobot.validateFaction(parsed.faction) then
|
adam@0
|
111 self:showImportError("It looks like your faction may have changed.", "Right now, Mr. Robot thinks you belong to the " .. parsed.faction)
|
adam@0
|
112 elseif not AskMrRobot.validateProfessions(parsed.professions) then
|
adam@0
|
113 self:showImportError("Your professions have changed, which affects the optimizations.", "You will need to make sure your in-game professions match the professions on AskMrRobot.com when importing.")
|
adam@0
|
114 elseif not AskMrRobot.validateSpec(parsed.spec) then
|
adam@0
|
115 if parsed.spec and parsed.spec ~= 'nil' then
|
adam@0
|
116 local _, specName = GetSpecializationInfoByID(parsed.spec)
|
adam@0
|
117 self:showImportError("WARNING! Please check your character before proceeding:", "Change your spec to " .. specName .. ".")
|
adam@0
|
118 else
|
adam@0
|
119 self:showImportError("WARNING! Please check your character before proceeding:", "AskMrRobot.com did not expect to see a specialization.")
|
adam@0
|
120 end
|
adam@0
|
121 self.mostlySuccess = true
|
adam@0
|
122 self.summaryTab.badRealm = nil
|
adam@0
|
123 self.summaryTab.badTalents = nil
|
adam@0
|
124 self.summaryTab.badGlyphs = nil
|
adam@0
|
125 AmrImportString = input
|
adam@0
|
126 else
|
adam@0
|
127 self.summaryTab.badRealm = not AskMrRobot.validateRealm(parsed.realm) and parsed.realm
|
adam@0
|
128 self.summaryTab.badTalents = not AskMrRobot.validateTalents(parsed.talents)
|
adam@0
|
129 self.summaryTab.badGlyphs = not AskMrRobot.validateGlyphs(parsed.glyphs)
|
adam@0
|
130 self.mostlySuccess = true
|
adam@0
|
131 self:showImportError(nil)
|
adam@0
|
132 AmrImportString = input
|
adam@0
|
133 self.importedItems = parsed.items
|
adam@0
|
134 return self:displayImportItems()
|
adam@0
|
135 end
|
adam@0
|
136 return false
|
adam@0
|
137 end
|
adam@0
|
138
|
adam@0
|
139 local function createImportDetailsErrorTab(reforgeFrame)
|
adam@0
|
140 local tab = CreateFrame("Frame", nil, reforgeFrame)
|
adam@0
|
141 tab:SetPoint("TOPLEFT")
|
adam@0
|
142 tab:SetPoint("BOTTOMRIGHT")
|
adam@0
|
143 tab:Hide()
|
adam@0
|
144
|
adam@0
|
145 local text = tab:CreateFontString("AmrImportDetailsText1", "ARTWORK", "GameFontNormalLarge")
|
adam@0
|
146 text:SetPoint("TOPLEFT", 0, -5)
|
adam@0
|
147 text:SetText("Help")
|
adam@0
|
148
|
adam@0
|
149 local errorText1 = tab:CreateFontString("AmrImportDetailsText2", "ARTWORK", "GameFontRed")
|
adam@0
|
150 errorText1:SetPoint("TOPLEFT", "AmrImportDetailsText1", "BOTTOMLEFT", 0, -20)
|
adam@0
|
151 errorText1:SetText('You have no optimizations imported. Click the "Import" tab to get started.')
|
adam@0
|
152 errorText1:SetPoint("RIGHT", -10, 0)
|
adam@0
|
153 errorText1:SetWidth(errorText1:GetWidth())
|
adam@0
|
154 errorText1:SetJustifyH("LEFT")
|
adam@0
|
155
|
adam@0
|
156 showImportDetailsError = function()
|
adam@0
|
157 errorText1:SetText("I can't optimize yet. Please go to the summary tab for more information.")
|
adam@0
|
158 end
|
adam@0
|
159
|
adam@0
|
160 showImportErrorTab = function(tabName)
|
adam@0
|
161 if not tabName then
|
adam@0
|
162 tab:Hide()
|
adam@0
|
163 else
|
adam@0
|
164 text:SetText(tabName)
|
adam@0
|
165 tab:Show()
|
adam@0
|
166 end
|
adam@0
|
167 end
|
adam@0
|
168
|
adam@0
|
169 return tab
|
adam@0
|
170 end
|
adam@0
|
171
|
adam@0
|
172 function AskMrRobot.AmrUI:createTabButtons()
|
adam@0
|
173 local importTabButton = CreateFrame("Button", "AmrImportTabButton", self, "OptionsListButtonTemplate")
|
adam@0
|
174
|
adam@0
|
175 local buttons = {}
|
adam@0
|
176 self.hasImportError = true
|
adam@0
|
177
|
adam@0
|
178 local function onTabButtonClick(clickedButton, event, ...)
|
adam@0
|
179 showImportErrorTab(nil)
|
adam@0
|
180 for i = 1, #buttons do
|
adam@0
|
181 local button = buttons[i]
|
adam@0
|
182 if clickedButton == button then
|
adam@0
|
183 button.highlight:SetVertexColor(1, 1, 0)
|
adam@0
|
184 button:LockHighlight()
|
adam@0
|
185 if self.hasImportError and button.isImportDetails then
|
adam@0
|
186 showImportErrorTab(button:GetText())
|
adam@0
|
187 elseif button.element then
|
adam@0
|
188 button.element:Show()
|
adam@0
|
189 end
|
adam@0
|
190 else
|
adam@0
|
191 button.highlight:SetVertexColor(.196, .388, .8)
|
adam@0
|
192 button:UnlockHighlight()
|
adam@0
|
193 if button.element then
|
adam@0
|
194 button.element:Hide()
|
adam@0
|
195 end
|
adam@0
|
196 end
|
adam@0
|
197 end
|
adam@0
|
198 end
|
adam@0
|
199
|
adam@0
|
200 local function createButton(text, spacing, isImportDetails)
|
adam@0
|
201 local lastButton = #buttons
|
adam@0
|
202 local i = lastButton + 1
|
adam@0
|
203 local tabButton = CreateFrame("Button", "AmrTabButton" .. i, self, "OptionsListButtonTemplate")
|
adam@0
|
204 tabButton.isImportDetails = isImportDetails
|
adam@0
|
205 tabButton:SetText(text)
|
adam@0
|
206 tabText = tabButton:GetFontString()
|
adam@0
|
207 tabText:SetPoint("LEFT", 6, 0)
|
adam@0
|
208 if i == 1 then
|
adam@0
|
209 tabButton:SetPoint("TOPLEFT", 2, spacing)
|
adam@0
|
210 else
|
adam@0
|
211 tabButton:SetPoint("TOPLEFT", "AmrTabButton" .. lastButton, "BOTTOMLEFT", 0, spacing)
|
adam@0
|
212 end
|
adam@0
|
213 tabButton:SetWidth(125)
|
adam@0
|
214 tabButton:SetHeight(20)
|
adam@0
|
215 tinsert(buttons, tabButton)
|
adam@0
|
216 tabButton:SetScript("OnClick", onTabButtonClick)
|
adam@0
|
217 end
|
adam@0
|
218
|
adam@0
|
219 createButton("Import", -35, false)
|
adam@0
|
220 createButton("Summary", -20, false)
|
adam@0
|
221 createButton("Gems", 0, true)
|
adam@0
|
222 createButton("Enchants", 0, true)
|
adam@0
|
223 createButton("Reforges", 0, true)
|
adam@0
|
224 createButton("Shopping List", 0, true)
|
adam@0
|
225 createButton("Best in Bags", -20, false)
|
adam@0
|
226 createButton("Combat Log", 0, false)
|
adam@0
|
227 createButton("Help", -20, false)
|
adam@0
|
228
|
adam@0
|
229 return buttons
|
adam@0
|
230 end
|
adam@0
|
231
|
adam@0
|
232 function AskMrRobot.AmrUI:new()
|
adam@0
|
233 local o = AskMrRobot.Frame:new("AskMrRobot_Dialog", nil, "BasicFrameTemplateWithInset")
|
adam@0
|
234
|
adam@0
|
235 -- use the AmrUI class
|
adam@0
|
236 setmetatable(o, { __index = AskMrRobot.AmrUI })
|
adam@0
|
237
|
adam@0
|
238 o:RegisterForDrag("LeftButton");
|
adam@0
|
239 o:SetWidth(600)
|
adam@0
|
240 o:SetHeight(530)
|
adam@0
|
241 o.InsetBg:SetPoint("TOPLEFT", 125, -24)
|
adam@0
|
242
|
adam@0
|
243 o:SetParent("UIParent")
|
adam@0
|
244 o:SetPoint("CENTER")
|
adam@0
|
245 o:Hide()
|
adam@0
|
246 o:EnableMouse(true)
|
adam@0
|
247 o:EnableKeyboard(true)
|
adam@0
|
248 o.hideOnEscape = 1
|
adam@0
|
249 o:SetMovable(true)
|
adam@0
|
250 o:SetToplevel(true)
|
adam@0
|
251
|
adam@0
|
252 --o:SetScript("OnEscapePressed", function)
|
adam@0
|
253 o:SetScript("OnDragStart", AskMrRobot.AmrUI.OnDragStart)
|
adam@0
|
254 o:SetScript("OnDragStop", AskMrRobot.AmrUI.OnDragStop)
|
adam@0
|
255 o:SetScript("OnHide", AskMrRobot.AmrUI.OnHide)
|
adam@0
|
256 -- make the UI show the first tab when its opened
|
adam@0
|
257 o:SetScript("OnShow", AskMrRobot.AmrUI.OnShow)
|
adam@0
|
258
|
adam@0
|
259 o:RegisterEvent("AUCTION_HOUSE_CLOSED")
|
adam@0
|
260 o:RegisterEvent("AUCTION_HOUSE_SHOW")
|
adam@0
|
261 o:RegisterEvent("FORGE_MASTER_OPENED")
|
adam@0
|
262 o:RegisterEvent("FORGE_MASTER_CLOSED")
|
adam@0
|
263 o:RegisterEvent("SOCKET_INFO_UPDATE")
|
adam@0
|
264 o:RegisterEvent("SOCKET_INFO_CLOSE")
|
adam@0
|
265
|
adam@0
|
266 o:SetScript("OnEvent", function(...)
|
adam@0
|
267 o:OnEvent(...)
|
adam@0
|
268 end)
|
adam@0
|
269
|
adam@0
|
270 tinsert(UISpecialFrames, o:GetName())
|
adam@0
|
271
|
adam@0
|
272 -- title
|
adam@0
|
273 o.TitleText:SetText("Ask Mr. Robot " .. GetAddOnMetadata(AskMrRobot.AddonName, "Version"))
|
adam@0
|
274
|
adam@0
|
275 -- create the tab buttons
|
adam@0
|
276 o.buttons = o:createTabButtons()
|
adam@0
|
277
|
adam@0
|
278 local tabArea = AskMrRobot.Frame:new(nil, o)
|
adam@0
|
279 tabArea:SetPoint("TOPLEFT", 140, -30)
|
adam@0
|
280 tabArea:SetPoint("BOTTOMRIGHT")
|
adam@0
|
281
|
adam@0
|
282 createImportDetailsErrorTab(tabArea)
|
adam@0
|
283
|
adam@0
|
284 -- create the import tab and associated it with the import tab button
|
adam@0
|
285 o.importTab = AskMrRobot.ImportTab:new(tabArea)
|
adam@0
|
286 o.buttons[1].element = o.importTab
|
adam@0
|
287 o.importTab.scrollFrame.EditBox:SetScript("OnEscapePressed", function()
|
adam@0
|
288 o:Hide()
|
adam@0
|
289 end)
|
adam@0
|
290
|
adam@0
|
291 o.importTab.button:SetScript("OnClick", function(...)
|
adam@0
|
292 o.summaryTab.importDate = date()
|
adam@0
|
293 AmrImportDate = o.summaryTab.importDate
|
adam@0
|
294 o:OnUpdate()
|
adam@0
|
295 if o.mostlySuccess then
|
adam@0
|
296 -- save import between sessions
|
adam@0
|
297 AmrImportString = o.importTab.scrollFrame.EditBox:GetText()
|
adam@0
|
298 AmrImportDate = o.summaryTab.importDate
|
adam@0
|
299 end
|
adam@0
|
300 o:ShowTab("summary")
|
adam@0
|
301 end)
|
adam@0
|
302
|
adam@0
|
303 o.summaryTab = AskMrRobot.SummaryTab:new(tabArea)
|
adam@0
|
304 o.buttons[2].element = o.summaryTab
|
adam@0
|
305
|
adam@0
|
306 o.gemTab = AskMrRobot.GemTab:new(nil, tabArea)
|
adam@0
|
307 o.buttons[3].element = o.gemTab
|
adam@0
|
308
|
adam@0
|
309 o.enchantTab = AskMrRobot.EnchantTab:new(tabArea)
|
adam@0
|
310 o.buttons[4].element = o.enchantTab
|
adam@0
|
311
|
adam@0
|
312 o.reforgeTab = AskMrRobot.ReforgesTab:new(tabArea)
|
adam@0
|
313 o.buttons[5].element = o.reforgeTab
|
adam@0
|
314
|
adam@0
|
315 o.shoppingTab = AskMrRobot.ShoppingListTab:new(tabArea)
|
adam@0
|
316 o.buttons[6].element = o.shoppingTab
|
adam@0
|
317
|
adam@0
|
318 o.shoppingTab.sendTo:SetScript("OnEscapePressed", function()
|
adam@0
|
319 o:Hide()
|
adam@0
|
320 end)
|
adam@0
|
321
|
adam@0
|
322 o.exportTab = AskMrRobot.ExportTab:new(tabArea)
|
adam@0
|
323 o.buttons[7].element = o.exportTab
|
adam@0
|
324
|
adam@0
|
325 o.combatLogTab = AskMrRobot.CombatLogTab:new(tabArea)
|
adam@0
|
326 o.buttons[8].element = o.combatLogTab
|
adam@0
|
327
|
adam@0
|
328 o.helpTab = AskMrRobot.HelpTab:new(tabArea)
|
adam@0
|
329 o.buttons[9].element = o.helpTab
|
adam@0
|
330
|
adam@0
|
331 o.isSocketWindowVisible = false
|
adam@0
|
332 o.isReforgeVisible = false
|
adam@0
|
333 o.isAuctionHouseVisible = false
|
adam@0
|
334
|
adam@0
|
335 --hide the UI
|
adam@0
|
336 o:Hide()
|
adam@0
|
337
|
adam@0
|
338 o:ShowTab("import")
|
adam@0
|
339
|
adam@0
|
340 o.initialize = false
|
adam@0
|
341
|
adam@0
|
342 return o
|
adam@0
|
343 end
|
adam@0
|
344
|
adam@0
|
345 function AskMrRobot.AmrUI:OnUpdate()
|
adam@0
|
346 local input = self.importTab.scrollFrame.EditBox:GetText()
|
adam@0
|
347 if input and input:len() > 0 then
|
adam@0
|
348 self:validateInput(input)
|
adam@0
|
349 end
|
adam@0
|
350 end
|
adam@0
|
351
|
adam@0
|
352 function AskMrRobot.AmrUI:OnShow()
|
adam@0
|
353
|
adam@0
|
354 if not self.initialized then
|
adam@0
|
355 -- remember the import settings between sessions
|
adam@0
|
356 self.importTab.scrollFrame.EditBox:SetText(AmrImportString or "")
|
adam@0
|
357 self.initialized = true
|
adam@0
|
358 end
|
adam@0
|
359
|
adam@0
|
360 self:OnUpdate()
|
adam@0
|
361 end
|
adam@0
|
362
|
adam@0
|
363 function AskMrRobot.AmrUI:OnDragStart()
|
adam@0
|
364 if not self.isLocked then
|
adam@0
|
365 self:StartMoving();
|
adam@0
|
366 end
|
adam@0
|
367 end
|
adam@0
|
368
|
adam@0
|
369 function AskMrRobot.AmrUI:OnDragStop()
|
adam@0
|
370 self:StopMovingOrSizing()
|
adam@0
|
371 end
|
adam@0
|
372
|
adam@0
|
373 function AskMrRobot.AmrUI:OnHide()
|
adam@0
|
374 self.visible = false
|
adam@0
|
375 self:StopMovingOrSizing()
|
adam@0
|
376 end
|
adam@0
|
377
|
adam@0
|
378 function AskMrRobot.AmrUI:ShowReforgeFrame()
|
adam@0
|
379 self.visible = true
|
adam@0
|
380 self:Show()
|
adam@0
|
381 end
|
adam@0
|
382
|
adam@0
|
383 function AskMrRobot.AmrUI:Toggle()
|
adam@0
|
384 if self.visible then
|
adam@0
|
385 self:Hide()
|
adam@0
|
386 else
|
adam@0
|
387 self:ShowReforgeFrame()
|
adam@0
|
388 end
|
adam@0
|
389 end
|
adam@0
|
390
|
adam@0
|
391 local nameToButtonNumber = {
|
adam@0
|
392 import = 1,
|
adam@0
|
393 summary = 2,
|
adam@0
|
394 gems = 3,
|
adam@0
|
395 enchants = 4,
|
adam@0
|
396 reforges = 5,
|
adam@0
|
397 shopping = 6,
|
adam@0
|
398 export = 7,
|
adam@0
|
399 combatLog = 8,
|
adam@0
|
400 help = 9
|
adam@0
|
401 }
|
adam@0
|
402
|
adam@0
|
403 function AskMrRobot.AmrUI:ShowTab(tabName)
|
adam@0
|
404 local buttonNumber = nameToButtonNumber[tabName]
|
adam@0
|
405 if buttonNumber then
|
adam@0
|
406 self.buttons[buttonNumber]:Click()
|
adam@0
|
407 end
|
adam@0
|
408 end
|
adam@0
|
409
|
adam@0
|
410 function AskMrRobot.AmrUI:OnEvent(frame, event, ...)
|
adam@0
|
411 local handler = self["On_" .. event]
|
adam@0
|
412 if handler then
|
adam@0
|
413 handler(self, ...)
|
adam@0
|
414 end
|
adam@0
|
415 end
|
adam@0
|
416
|
adam@0
|
417 function AskMrRobot.AmrUI:On_AUCTION_HOUSE_SHOW()
|
adam@0
|
418 self.isAuctionHouseVisible = true
|
adam@0
|
419 if self.mostlySuccess then
|
adam@0
|
420 local showTab = self.visible
|
adam@0
|
421 if not AmrOptions.manualShowShop and not self.visible then
|
adam@0
|
422
|
adam@0
|
423 -- show if there is anything to buy
|
adam@0
|
424 if self.shoppingTab:HasStuffToBuy() then
|
adam@0
|
425 self:Show()
|
adam@0
|
426 showTab = true
|
adam@0
|
427 end
|
adam@0
|
428 end
|
adam@0
|
429
|
adam@0
|
430 if showTab then
|
adam@0
|
431 self:ShowTab("shopping")
|
adam@0
|
432 end
|
adam@0
|
433 end
|
adam@0
|
434 end
|
adam@0
|
435
|
adam@0
|
436 function AskMrRobot.AmrUI:On_AUCTION_HOUSE_CLOSED()
|
adam@0
|
437 self.isAuctionHouseVisible = false
|
adam@0
|
438 if self.isReforgeVisible then
|
adam@0
|
439 self:ShowTab("reforges")
|
adam@0
|
440 elseif self.isSocketWindowVisible then
|
adam@0
|
441 self:ShowTab("gems")
|
adam@0
|
442 end
|
adam@0
|
443 end
|
adam@0
|
444
|
adam@0
|
445 function AskMrRobot.AmrUI:On_FORGE_MASTER_OPENED()
|
adam@0
|
446 self.isReforgeVisible = true
|
adam@0
|
447 if self.mostlySuccess then
|
adam@0
|
448 local showTab = self.visible
|
adam@0
|
449 if not AmrOptions.manualShowReforge and not self.visible then
|
adam@0
|
450
|
adam@0
|
451 -- see if there are any reforges to do
|
adam@0
|
452 local reforgeCount = 0
|
adam@0
|
453 for slotNum, badReforge in pairs(AskMrRobot.itemDiffs.reforges) do
|
adam@0
|
454 reforgeCount = reforgeCount + 1
|
adam@0
|
455 end
|
adam@0
|
456
|
adam@0
|
457 if reforgeCount > 0 then
|
adam@0
|
458 self:Show()
|
adam@0
|
459 showTab = true
|
adam@0
|
460 end
|
adam@0
|
461 end
|
adam@0
|
462
|
adam@0
|
463 if showTab then
|
adam@0
|
464 self:ShowTab("reforges")
|
adam@0
|
465 end
|
adam@0
|
466 end
|
adam@0
|
467 end
|
adam@0
|
468
|
adam@0
|
469 function AskMrRobot.AmrUI:On_FORGE_MASTER_CLOSED()
|
adam@0
|
470 self.isReforgeVisible = false
|
adam@0
|
471 if self.isAuctionHouseVisible then
|
adam@0
|
472 self:ShowTab("shopping")
|
adam@0
|
473 elseif self.isSocketWindowVisible then
|
adam@0
|
474 self:ShowTab("gems")
|
adam@0
|
475 end
|
adam@0
|
476 end
|
adam@0
|
477
|
adam@0
|
478 function AskMrRobot.AmrUI:On_SOCKET_INFO_UPDATE()
|
adam@0
|
479 self.isSocketWindowVisible = true
|
adam@0
|
480 if self.mostlySuccess then
|
adam@0
|
481 if not self.visible then
|
adam@0
|
482 self:Show()
|
adam@0
|
483 end
|
adam@0
|
484 self:ShowTab("gems")
|
adam@0
|
485 end
|
adam@0
|
486 end
|
adam@0
|
487
|
adam@0
|
488 function AskMrRobot.AmrUI:On_SOCKET_INFO_CLOSE()
|
adam@0
|
489 self.isSocketWindowVisible = false
|
adam@0
|
490 if self.isAuctionHouseVisible then
|
adam@0
|
491 self:ShowTab("shopping")
|
adam@0
|
492 elseif self.isReforgeVisible then
|
adam@0
|
493 self:ShowTab("reforges")
|
adam@0
|
494 end
|
adam@0
|
495 end |