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