comparison ui/GemTab.lua @ 0:ec731d2fe6ba

Version 1.2.12.0
author Adam tegen <adam.tegen@gmail.com>
date Tue, 20 May 2014 21:43:23 -0500
parents
children ece9167c0d1c
comparison
equal deleted inserted replaced
-1:000000000000 0:ec731d2fe6ba
1 local _, AskMrRobot = ...
2
3 StaticPopupDialogs["AUTOGEM_FINISHED"] = {
4 text = "Mr. Robot finished auto-gemming. \rIf some items aren't gemmed, you may need to acquire more gems. \rIf your belt isn't gemmed, you may still need to buy a belt buckle.",
5 button1 = "Ok",
6 timeout = 0,
7 whileDead = true,
8 hideOnEscape = true,
9 preferredIndex = 3, -- avoid some UI taint, see http://www.wowace.com/announcements/how-to-avoid-some-ui-taint/
10 }
11
12 StaticPopupDialogs["AUTOGEM_ONCE"] = {
13 text = "Autogemming already in progress.",
14 button1 = "Ok",
15 timeout = 0,
16 whileDead = true,
17 hideOnEscape = true,
18 preferredIndex = 3, -- avoid some UI taint, see http://www.wowace.com/announcements/how-to-avoid-some-ui-taint/
19 }
20
21 -- initialize the GemTab class
22 AskMrRobot.GemTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame)
23
24 local MAX_SLOTS = 4
25
26 -- GemTab contructor
27 function AskMrRobot.GemTab:new(name, parent)
28 -- create a new frame (if one isn't supplied)
29 local tab = AskMrRobot.Frame:new(name, parent)
30 tab:SetPoint("TOPLEFT")
31 tab:SetPoint("BOTTOMRIGHT")
32 -- use the GemTab class
33 setmetatable(tab, { __index = AskMrRobot.GemTab })
34 tab:Hide()
35
36 local text = tab:CreateFontString("AmrGemsText1", "ARTWORK", "GameFontNormalLarge")
37 text:SetPoint("TOPLEFT", 0, -5)
38 text:SetText("Gems")
39
40 tab.stamp = AskMrRobot.RobotStamp:new(nil, tab)
41 tab.stamp:Hide()
42 tab.stamp.smallText:SetText("Your gems are 100% optimal! You are truly, truly outrageous.")
43 tab.stamp:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 2, -15)
44 tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0)
45
46 text = tab:CreateFontString("AmrGemsText2", "ARTWORK", "GameFontWhite")
47 text:SetText("You have X gems to optimize")
48 text:SetPoint("TOPLEFT", "AmrGemsText1", "BOTTOMLEFT", 0, -20)
49 text:SetWidth(200)
50 text:SetJustifyH("LEFT")
51 tab.gemsTextToOptimize = text
52
53 -- autogem button
54 tab.button = CreateFrame("Button", "AmrAutoGemButton", tab, "UIPanelButtonTemplate")
55 tab.button:SetPoint("TOP", "AmrGemsText1", "BOTTOM", 0, -16)
56 tab.button:SetPoint("RIGHT", -40, 0)
57 tab.button:SetText("Auto Gem! (BETA)")
58 tab.button:SetWidth(150)
59 tab.button:SetHeight(20)
60 tab.button:SetScript("OnClick", function() tab:startAutoGem() end)
61 tab.button:Hide()
62
63 -- autogem checkbox button
64 tab.usePerfectButton = CreateFrame("CheckButton", "AmrUsePerfectButton", tab, "ChatConfigCheckButtonTemplate")
65 tab.preferPerfects = true
66 tab.usePerfectButton:SetChecked(tab.preferPerfects)
67 tab.usePerfectButton:SetPoint("TOPLEFT", "AmrAutoGemButton", "BOTTOMLEFT", 0, -4)
68 tab.usePerfectButton:SetScript("OnClick", function () tab.preferPerfects = tab.usePerfectButton:GetChecked() end)
69 local text3 = getglobal(tab.usePerfectButton:GetName() .. 'Text')
70 text3:SetText("Prefer Perfect")
71 text3:SetWidth(150)
72 text3:SetPoint("TOPLEFT", tab.usePerfectButton, "TOPRIGHT", 2, -4)
73 tab.usePerfectButton:Hide()
74
75 tab.gemSlotHeader = tab:CreateFontString("AmrBadGemSlot0", "ARTWORK", "GameFontNormal")
76 tab.gemSlotHeader:SetPoint("TOPLEFT", "AmrGemsText2", "BOTTOMLEFT", 0, -20)
77 tab.gemSlotHeader:SetText("Slot")
78 tab.gemSlotHeader:SetWidth(90)
79 tab.gemSlotHeader:SetJustifyH("LEFT")
80 tab.gemSlotHeader:Hide()
81 tab.gemCurrentHeader = tab:CreateFontString("AmrBadGemCurrent0_1", "ARTWORK", "GameFontNormal")
82 tab.gemCurrentHeader:SetPoint("TOPLEFT", "AmrBadGemSlot0", "TOPLEFT", 88, 0)
83 tab.gemCurrentHeader:SetWidth(110)
84 tab.gemCurrentHeader:SetText("Current")
85 tab.gemCurrentHeader:SetJustifyH("LEFT")
86 tab.gemCurrentHeader:Hide()
87 tab.gemOptimizedHeader = tab:CreateFontString("AmrBadGemOptimized0_1", "ARTWORK", "GameFontNormal")
88 tab.gemOptimizedHeader:SetPoint("TOPLEFT", "AmrBadGemCurrent0_1", "TOPLEFT", 70, 0)
89 tab.gemOptimizedHeader:SetPoint("RIGHT", -30, 0)
90 tab.gemOptimizedHeader:SetText("Optimized")
91 tab.gemOptimizedHeader:SetJustifyH("LEFT")
92 tab.gemOptimizedHeader:Hide()
93
94 tab.fauxScroll = CreateFrame("ScrollFrame", "testme", tab, "FauxScrollFrameTemplate")
95 tab.fauxScroll:SetPoint("BOTTOMRIGHT", -40, 15)
96 tab.fauxScroll:SetPoint("TOPLEFT", "AmrBadGemSlot0", "BOTTOMLEFT", -12, -5)
97 tab.fauxScroll.parent = tab
98 tab.fauxScroll:SetScript("OnVerticalScroll", AskMrRobot.GemTab.OnVerticalScroll)
99
100 tab.jewelPanels = {}
101 for i = 1, MAX_SLOTS do
102
103 tab.jewelPanels[i] = AskMrRobot.JewelPanel:new("AmrBadGemSlot" .. i, tab)
104 if i == 1 then
105 tab.jewelPanels[i]:SetPoint("TOPLEFT", "AmrBadGemSlot" .. (i-1), "BOTTOMLEFT", -12, -5)
106 --tab.jewelPanels[i]:SetPoint("TOPLEFT")
107 else
108 tab.jewelPanels[i]:SetPoint("TOPLEFT", "AmrBadGemSlot" .. (i-1), "BOTTOMLEFT", 0, -5)
109 end
110 tab.jewelPanels[i]:SetPoint("RIGHT", -40, 0)
111 end
112
113 return tab
114 end
115
116 function AskMrRobot.GemTab:startAutoGem()
117 if AskMrRobot.AutoGem(self.preferPerfects) == false then
118 StaticPopup_Show("AUTOGEM_ONCE")
119 end
120 end
121
122 function AskMrRobot.GemTab:Update()
123 self.count = 0
124
125 local i = 1
126 local badGemTotal = 0
127
128 if AskMrRobot.itemDiffs.gems then
129 for slotNum, badGems in AskMrRobot.sortSlots(AskMrRobot.itemDiffs.gems) do
130 self.count = self.count + 1
131 if i <= MAX_SLOTS then
132 self.jewelPanels[i]:Show()
133 end
134 for k, v in pairs(badGems.badGems) do
135 badGemTotal = badGemTotal + 1
136 end
137 i = i + 1
138 end
139 end
140
141 self.gemsTextToOptimize:SetFormattedText("You have %d \1244gem:gems; to optimize", badGemTotal)
142
143 --hide/show the headers, depending on if we have any bad gems
144 if self.count == 0 then
145 self.gemSlotHeader:Hide()
146 self.gemCurrentHeader:Hide()
147 self.gemOptimizedHeader:Hide()
148 self.gemsTextToOptimize:Hide()
149 self.button:Hide()
150 self.usePerfectButton:Hide()
151 self.stamp:Show()
152 else
153 self.gemSlotHeader:Show()
154 self.gemCurrentHeader:Show()
155 self.gemOptimizedHeader:Show()
156 self.gemsTextToOptimize:Show()
157 self.button:Show()
158 self.usePerfectButton:Show()
159 self.stamp:Hide()
160 end
161
162 for i = self.count + 1, MAX_SLOTS do
163 self.jewelPanels[i]:Hide()
164 i = i + 1
165 end
166
167 AskMrRobot.GemTab.OnUpdate(self.fauxScroll, self.count, #self.jewelPanels, self.jewelPanels[1]:GetHeight())
168 end
169
170 function AskMrRobot.GemTab.OnVerticalScroll(scrollframe, offset)
171 local self = scrollframe.parent
172 FauxScrollFrame_OnVerticalScroll(self.fauxScroll, offset, self.jewelPanels[1]:GetHeight(), AskMrRobot.GemTab.OnUpdate)
173 end
174
175 function AskMrRobot.GemTab.OnUpdate(scrollframe)
176 local self = scrollframe.parent
177 FauxScrollFrame_Update(self.fauxScroll, self.count, #self.jewelPanels, self.jewelPanels[1]:GetHeight())
178 local offset = FauxScrollFrame_GetOffset(scrollframe)
179
180 local i = 1
181 for slotNum, badGems in AskMrRobot.sortSlots(AskMrRobot.itemDiffs.gems) do
182 if offset > 0 then
183 offset = offset - 1
184 else
185
186 if i > MAX_SLOTS then
187 break
188 end
189
190 self.jewelPanels[i]:SetItemLink(_G[strupper(AskMrRobot.slotNames[slotNum])], badGems.current.link )
191 self.jewelPanels[i]:SetOptimizedGems(badGems.optimized, badGems.badGems)
192 i = i + 1
193 end
194 end
195 end