Mercurial > wow > askmrrobot
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 |
