Nenue@0
|
1 --- ${PACKAGE_NAME}
|
Nenue@0
|
2 -- @file-author@
|
Nenue@0
|
3 -- @project-revision@ @project-hash@
|
Nenue@0
|
4 -- @file-revision@ @file-hash@
|
Nenue@0
|
5 -- Created: 3/29/2016 7:07 PM
|
Nenue@0
|
6 local B = select(2,...).frame
|
Nenue@0
|
7 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
|
Nenue@0
|
8 local print = B.print('Objectives')
|
Nenue@0
|
9 local Tracker, AutoQuest, Quest, Cheevs = mod.Tracker, mod.AutoQuest, mod.Quest, mod.Cheevs
|
Nenue@0
|
10
|
Nenue@0
|
11 --------------------------------------------------------------------
|
Nenue@0
|
12 --- Tracker-specific widget functions
|
Nenue@0
|
13 --------------------------------------------------------------------
|
Nenue@0
|
14
|
Nenue@0
|
15 Tracker.Select = function(self) end
|
Nenue@0
|
16 Tracker.Open = function(self) end
|
Nenue@0
|
17 Tracker.Remove = function(self) end
|
Nenue@0
|
18 Tracker.Report = function(self)
|
Nenue@0
|
19 print('Stats:', self.numWatched,'items tracked,', self.numBlocks,'blocks assigned.')
|
Nenue@0
|
20 end
|
Nenue@0
|
21
|
Nenue@0
|
22 Tracker.OnMouseUp = function(self, button)
|
Nenue@1
|
23
|
Nenue@1
|
24 if self.initialButton == 'LeftButton' then
|
Nenue@0
|
25 self:Select()
|
Nenue@0
|
26 mod.UpdateWrapper()
|
Nenue@1
|
27 if self.modShift then
|
Nenue@1
|
28 self:Remove()
|
Nenue@1
|
29 end
|
Nenue@0
|
30 elseif button == 'RightButton' then
|
Nenue@0
|
31 self:Open()
|
Nenue@0
|
32 end
|
Nenue@1
|
33 self.initialButton = nil
|
Nenue@1
|
34 self.modShift = nil
|
Nenue@0
|
35 print('|cFFFF8800'..tostring(self:GetName())..':MouseUp()|r ->',self.info.trackingID)
|
Nenue@0
|
36 end
|
Nenue@0
|
37
|
Nenue@0
|
38 Tracker.OnMouseDown = function(self, button)
|
Nenue@1
|
39 self.initialButton = button
|
Nenue@1
|
40 self.modShift = IsShiftKeyDown()
|
Nenue@0
|
41 if button == 'LeftButton' then
|
Nenue@0
|
42 self:SetStyle('Active')
|
Nenue@0
|
43 end
|
Nenue@0
|
44 print(self.info.title)
|
Nenue@0
|
45 end
|
Nenue@0
|
46
|
Nenue@0
|
47 -----------------------------
|
Nenue@0
|
48 --- AUTO_QUEST
|
Nenue@0
|
49 AutoQuest.name = "Remote Quests"
|
Nenue@0
|
50 AutoQuest.GetNumWatched = GetNumAutoQuestPopUps
|
Nenue@0
|
51
|
Nenue@0
|
52 -----------------------------
|
Nenue@0
|
53 --- QUEST
|
Nenue@0
|
54 Quest.name = "Quests"
|
Nenue@0
|
55 Quest.Select = function(self)
|
Nenue@0
|
56 SetSuperTrackedQuestID(self.info.questID)
|
Nenue@0
|
57 end
|
Nenue@0
|
58 Quest.Open = function(self)
|
Nenue@1
|
59 QuestMapFrame_OpenToQuestDetails(self.info.questID)
|
Nenue@1
|
60 end
|
Nenue@1
|
61
|
Nenue@1
|
62 Quest.Remove = function(self)
|
Nenue@1
|
63 RemoveQuestWatch(self.info.questIndex)
|
Nenue@1
|
64 QuestPOIUpdateIcons()
|
Nenue@0
|
65 end
|
Nenue@0
|
66
|
Nenue@0
|
67
|
Nenue@0
|
68 -----------------------------
|
Nenue@0
|
69 --- CHEEVS
|
Nenue@0
|
70 Cheevs.Select = function(self)
|
Nenue@0
|
71 end
|
Nenue@0
|
72
|
Nenue@0
|
73 Cheevs.Open = function(self)
|
Nenue@0
|
74 end
|
Nenue@0
|
75
|
Nenue@1
|
76 ----------------------------------------------------------------------------------------
|
Nenue@1
|
77 --- frame template and scripts lifted from "QuestKing 2" by Barjack
|
Nenue@1
|
78 --- url: http://mods.curse.com/addons/wow/questking
|
Nenue@1
|
79 ----------------------------------------------------------------------------------------
|
Nenue@1
|
80 local usedButtons = mod.Quest.itemButtons
|
Nenue@1
|
81 local freeButtons = mod.Quest.freeButtons
|
Nenue@1
|
82 mod.SetItemButton = function(block, info)
|
Nenue@1
|
83 local itemInfo = info.specialItem
|
Nenue@1
|
84 if not itemInfo then
|
Nenue@1
|
85 return
|
Nenue@1
|
86 end
|
Nenue@1
|
87 --- .specialItem :: {link = link, charges = charges, icon = icon, start = start, duration = duration, enable = enable}
|
Nenue@1
|
88
|
Nenue@1
|
89
|
Nenue@1
|
90 local itemButton
|
Nenue@1
|
91 if not info.itemButton then
|
Nenue@1
|
92 if #freeButtons >= 1 then
|
Nenue@2
|
93 print(' |cFF00FFFFfound a free button')
|
Nenue@1
|
94 itemButton = freeButtons[#freeButtons]
|
Nenue@1
|
95 freeButtons[#freeButtons] = nil
|
Nenue@2
|
96 if itemButton.block then
|
Nenue@2
|
97 itemButton.block.itemButton = nil
|
Nenue@2
|
98 itemButton.block = nil
|
Nenue@2
|
99 end
|
Nenue@1
|
100 else
|
Nenue@2
|
101 print(' |cFFFF4400starting new button')
|
Nenue@1
|
102 local buttonIndex = mod.Quest.numButtons + #freeButtons + 1
|
Nenue@1
|
103 itemButton = CreateFrame('Button', 'VeneerQuestItemButton' .. buttonIndex, UIParent, 'VeneerItemButtonTemplate')
|
Nenue@1
|
104 itemButton.buttonIndex = buttonIndex
|
Nenue@1
|
105 itemButton:SetSize(48, 48)
|
Nenue@1
|
106 itemButton:GetNormalTexture():SetSize(80,80)
|
Nenue@1
|
107 end
|
Nenue@1
|
108 mod.Quest.numButtons = mod.Quest.numButtons + 1
|
Nenue@1
|
109 else
|
Nenue@2
|
110 print(' |cFF00FF00found assigned button')
|
Nenue@1
|
111 itemButton = info.itemButton
|
Nenue@2
|
112 if itemButton.block then
|
Nenue@2
|
113 print(' - moving from old block')
|
Nenue@2
|
114 itemButton.block.itemButton = nil
|
Nenue@2
|
115 end
|
Nenue@2
|
116
|
Nenue@1
|
117 end
|
Nenue@1
|
118 -- set values
|
Nenue@2
|
119
|
Nenue@2
|
120
|
Nenue@1
|
121 info.itemButton = itemButton
|
Nenue@1
|
122 block.itemButton = itemButton
|
Nenue@2
|
123 usedButtons[info.questID] = itemButton
|
Nenue@1
|
124
|
Nenue@1
|
125 itemButton:SetAttribute("type", "item")
|
Nenue@1
|
126 itemButton:SetAttribute("item", itemInfo.link)
|
Nenue@1
|
127
|
Nenue@2
|
128 itemButton.questID = info.questID
|
Nenue@1
|
129 itemButton.questLogIndex = info.questLogIndex
|
Nenue@1
|
130 itemButton.charges = itemInfo.charges
|
Nenue@1
|
131 itemButton.rangeTimer = -1
|
Nenue@1
|
132 itemButton.block = block
|
Nenue@1
|
133
|
Nenue@1
|
134 SetItemButtonTexture(itemButton, itemInfo.icon)
|
Nenue@1
|
135 SetItemButtonCount(itemButton, itemInfo.charges)
|
Nenue@1
|
136 Veneer_QuestObjectiveItem_UpdateCooldown(itemButton);
|
Nenue@1
|
137
|
Nenue@1
|
138 return itemButton
|
Nenue@1
|
139 end
|
Nenue@1
|
140 --- Clear an itemButton from the given block
|
Nenue@2
|
141 mod.FreeItemButtons = function(block)
|
Nenue@2
|
142
|
Nenue@2
|
143 if block.itemButton then
|
Nenue@2
|
144 local itemButton = block.itemButton
|
Nenue@2
|
145 itemButton.block = nil
|
Nenue@2
|
146 itemButton:Hide()
|
Nenue@2
|
147
|
Nenue@2
|
148 usedButtons[itemButton.questID] = nil
|
Nenue@2
|
149 freeButtons[#freeButtons + 1] = itemButton
|
Nenue@2
|
150 mod.Quest.numButtons = mod.Quest.numButtons - 1
|
Nenue@2
|
151 print('|cFFFF0088released', itemButton:GetName(),'and', block:GetName())
|
Nenue@1
|
152 end
|
Nenue@1
|
153 end
|
Nenue@1
|
154
|
Nenue@1
|
155 function Veneer_QuestObjectiveItem_OnUpdate (self, elapsed)
|
Nenue@1
|
156 -- Handle range indicator
|
Nenue@1
|
157 local rangeTimer = self.rangeTimer
|
Nenue@1
|
158 if (rangeTimer) then
|
Nenue@1
|
159 rangeTimer = rangeTimer - elapsed
|
Nenue@1
|
160 if (rangeTimer <= 0) then
|
Nenue@1
|
161 local link, item, charges, showItemWhenComplete = GetQuestLogSpecialItemInfo(self.questLogIndex)
|
Nenue@1
|
162 if ((not charges) or (charges ~= self.charges)) then
|
Nenue@2
|
163 mod.UpdateWrapper()
|
Nenue@1
|
164 return
|
Nenue@1
|
165 end
|
Nenue@1
|
166
|
Nenue@1
|
167 local count = self.HotKey
|
Nenue@1
|
168 local valid = IsQuestLogSpecialItemInRange(self.questLogIndex)
|
Nenue@1
|
169 if (valid == 0) then
|
Nenue@1
|
170 count:Show()
|
Nenue@1
|
171 count:SetVertexColor(1.0, 0.1, 0.1)
|
Nenue@1
|
172 elseif (valid == 1) then
|
Nenue@1
|
173 count:Show()
|
Nenue@1
|
174 count:SetVertexColor(0.6, 0.6, 0.6)
|
Nenue@1
|
175 else
|
Nenue@1
|
176 count:Hide()
|
Nenue@1
|
177 end
|
Nenue@1
|
178 rangeTimer = TOOLTIP_UPDATE_TIME
|
Nenue@1
|
179 end
|
Nenue@1
|
180
|
Nenue@1
|
181 self.rangeTimer = rangeTimer
|
Nenue@1
|
182 end
|
Nenue@1
|
183 end
|
Nenue@1
|
184
|
Nenue@1
|
185 function Veneer_QuestObjectiveItem_UpdateCooldown (itemButton)
|
Nenue@1
|
186 local start, duration, enable = GetQuestLogSpecialItemCooldown(itemButton.questLogIndex)
|
Nenue@1
|
187 if (start) then
|
Nenue@1
|
188 CooldownFrame_SetTimer(itemButton.Cooldown, start, duration, enable)
|
Nenue@1
|
189 if (duration > 0 and enable == 0) then
|
Nenue@1
|
190 SetItemButtonTextureVertexColor(itemButton, 0.4, 0.4, 0.4)
|
Nenue@1
|
191 else
|
Nenue@1
|
192 SetItemButtonTextureVertexColor(itemButton, 1, 1, 1)
|
Nenue@1
|
193 end
|
Nenue@1
|
194 end
|
Nenue@1
|
195 end |