Mercurial > wow > buffalo2
comparison ObjectiveTracker/Achievements.lua @ 38:1f8f9cc3d956
- module integration brought up to speed with current frame management structure
author | Nenue |
---|---|
date | Thu, 21 Apr 2016 11:36:41 -0400 |
parents | e84d645c8ab8 |
children | 03ed70f846de |
comparison
equal
deleted
inserted
replaced
37:e84d645c8ab8 | 38:1f8f9cc3d956 |
---|---|
16 | 16 |
17 --- Data retrieval | 17 --- Data retrieval |
18 Cheevs.GetNumWatched = function(self, targetID, isNew) | 18 Cheevs.GetNumWatched = function(self, targetID, isNew) |
19 local trackedList = {GetTrackedAchievements() } | 19 local trackedList = {GetTrackedAchievements() } |
20 local numWatched, numAll = #trackedList, #self.WatchList | 20 local numWatched, numAll = #trackedList, #self.WatchList |
21 print(' |cFF00FF88GetNumWatched:|r',self.name, numWatched, ' ('..numAll..' recorded)') | 21 print(' |cFF'..self.internalColor..'GetNumWatched:|r',self.name, numWatched, ' ('..numAll..' recorded)') |
22 local start = 1 | 22 local start = 1 |
23 local limit = max(numAll, #trackedList) | 23 local limit = max(numAll, #trackedList) |
24 if targetID then | 24 if targetID then |
25 if not isNew and self.Info[targetID] then | 25 if not isNew and self.Info[targetID] then |
26 -- if it's only an update, we can limit the scope | 26 -- if it's only an update, we can limit the scope |
27 start = self.Info[targetID].watchIndex | 27 start = self.Info[targetID].watchIndex |
28 print(' |cFF0088FFGetNumWatched: limit selection to['..start..'-'..limit..']') | 28 print(' |cFF'..self.internalColor..'GetNumWatched: limit selection to['..start..'-'..limit..']') |
29 if self.InfoBlock[targetID] then | 29 if self.InfoBlock[targetID] then |
30 self.InfoBlock[targetID]:Hide() | 30 self.InfoBlock[targetID]:Hide() |
31 end | 31 end |
32 | 32 |
33 end | 33 end |
40 else | 40 else |
41 local cheevID = trackedList[index] | 41 local cheevID = trackedList[index] |
42 if not self.Info[cheevID] then | 42 if not self.Info[cheevID] then |
43 self.Info[cheevID] = self:GetInfo(cheevID, index) | 43 self.Info[cheevID] = self:GetInfo(cheevID, index) |
44 else | 44 else |
45 print(' |cFF00FFBBGetInfo:', cheevID, 'already pulled') | 45 print(' |cFF'..self.internalColor..'GetInfo:', cheevID, 'already pulled') |
46 end | 46 end |
47 self:GetObjectives(cheevID) | 47 self:GetObjectives(cheevID) |
48 | 48 |
49 local info = self.Info[cheevID] | 49 local info = self.Info[cheevID] |
50 local watchBlock = self.WatchBlock[cheevID] | 50 local watchBlock = self.WatchBlock[cheevID] |
60 Cheevs.GetInfo = function(self, cheevID, watchIndex) | 60 Cheevs.GetInfo = function(self, cheevID, watchIndex) |
61 --- step 1: confirm primary data and begin an entry if needed | 61 --- step 1: confirm primary data and begin an entry if needed |
62 local id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy = GetAchievementInfo(cheevID) | 62 local id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy = GetAchievementInfo(cheevID) |
63 if not id then return nil end | 63 if not id then return nil end |
64 | 64 |
65 print(' |cFF44AAFFGetInfo: pulling', id..',', name, earnedBy) | 65 print(' |cFF'..self.internalColor..'GetInfo: pulling', id..',', name, earnedBy) |
66 | 66 |
67 | 67 |
68 self.Info[cheevID] = self.Info[cheevID] or {} | 68 self.Info[cheevID] = self.Info[cheevID] or {} |
69 local c = self.Info[cheevID] | 69 local c = self.Info[cheevID] |
70 local rewards = {} | 70 local rewards = {} |
116 line.assetID = assetID | 116 line.assetID = assetID |
117 line.quantityString = quantityString | 117 line.quantityString = quantityString |
118 line.criteriaID = criteriaID | 118 line.criteriaID = criteriaID |
119 c.objectives[i] = line | 119 c.objectives[i] = line |
120 | 120 |
121 print(' |cFF44FFDDGetObjectives:|r', i, type, description, quantityString) | 121 print(' |cFF'..self.internalColor..'GetObjectives:|r', i, format('|cFF0088FF%02X|r(%d)', type, type), format('|cFF88FF00%01X|r', flags or 0), '|cFF00FF00'..tostring(quantity)..'|r/|cFF00FF00'.. tostring(requiredQuantity)..'|r', '"|cFF88FF00'..tostring(description)..'|r"') |
122 end | 122 end |
123 end | 123 end |
124 | 124 |
125 --- Content handlers | 125 Cheevs.UpdateObjectives = function(handler, block, block_schema) |
126 Cheevs.UpdateLine = function(handler, block, line, data) | 126 Default.UpdateObjectives(handler, block, block_schema) |
127 local print = B.print('CheevsLine') | 127 return block_schema |
128 end | |
129 | |
130 --- assemble line info | |
131 Cheevs.UpdateLine = function(handler, block, data) | |
132 local print = lprint | |
128 local attachment | 133 local attachment |
129 local text | 134 local text |
130 line.progress = 0 | 135 local lineSchema = 'default' |
131 print(' ', data.objectiveIndex,'|cFF0088FF-|r', data.objectiveType, data.text) | 136 print(' ', data.objectiveIndex,'|cFF'..handler.internalColor..'-|r', data.objectiveType, data.text) |
132 if data.flags then | 137 if data.type == CRITERIA_TYPE_ACHIEVEMENT then |
133 if band(data.flags, 0x00000001) > 0 then | 138 if data.value == 1 then |
134 line.format = "%d/%d" | 139 return nil, nil |
135 attachment = T.SetWidget(line, data, 'ProgressBar', data.criteriaID) | 140 end |
136 attachment.value = data.value | |
137 attachment.maxValue = data.maxValue | |
138 attachment:SetParent(handler.frame) | |
139 | 141 |
140 print(attachment:GetNumPoints()) | 142 text = data.text |
141 for i = 1, attachment:GetNumPoints() do | 143 lineSchema = (data.quantity == 1) and 'achievement_complete' or 'achievement' |
142 print(' ',attachment:GetPoint(i)) | 144 elseif band(data.flags, 0x00000001) > 0 then |
143 end | 145 attachment = T.GetWidget(data, 'StatusBar', data.criteriaID) |
144 attachment.status:SetFormattedText("%d/%d", data.value, data.maxValue) | 146 attachment.format = "%d/%d" |
145 attachment:SetPoint('TOP', line, 'TOP') | 147 attachment.value = data.value |
146 line.height = attachment.height | 148 attachment.maxValue = data.maxValue |
147 elseif band(data.flags, 0x00000002) then | 149 attachment:SetParent(block) |
148 line.widget = nil | |
149 text = line.text | |
150 else | |
151 line.widget = nil | |
152 line.displayColor = 'FFFFFF' | |
153 text = line.text | |
154 | 150 |
151 print(attachment:GetNumPoints()) | |
152 for i = 1, attachment:GetNumPoints() do | |
153 print(' ',attachment:GetPoint(i)) | |
155 end | 154 end |
155 attachment.status:SetFormattedText("%d/%d", data.value, data.maxValue) | |
156 attachment:SetPoint('TOP', line, 'TOP') | |
157 lineSchema = 'progressbar' | |
156 else | 158 else |
157 | 159 text = data.quantityString .. ' ' .. data.text |
158 line.displayText = data.text | 160 lineSchema = 'default' |
159 end | 161 end |
160 print(' |cFF00DD22UpdateLine:|r', data.type, data.quantityString, 'qty:', data.quantity, 'assetID:', data.assetID) | 162 print(' |cFF'..handler.internalColor..'UpdateLine:|r', data.type, data.quantityString, 'qty:', data.quantity, 'assetID:', data.assetID) |
161 return text, attachment, 'default' | 163 return text, attachment, lineSchema |
162 end | 164 end |
163 | 165 |
164 Cheevs.Select = function(self, block) | 166 Cheevs.Select = function(self, block) |
165 Cheevs.Link(self, block) | 167 Cheevs.Link(self, block) |
166 T:Update(self.updateReasonModule, block.info.cheevID) | 168 T:Update(self.updateReasonModule, block.info.cheevID) |