vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | |
2 | assert( oRA, "oRA not found!") |
||
3 | |||
4 | ------------------------------ |
||
5 | -- Are you local? -- |
||
6 | ------------------------------ |
||
7 | |||
8 | local L = AceLibrary("AceLocale-2.2"):new("oRALDurability") |
||
9 | |||
10 | local compost = AceLibrary:HasInstance("Compost-2.0") and AceLibrary("Compost-2.0") |
||
11 | local function getnewtable() return compost and compost:Acquire() or {} end |
||
12 | local function reclaimtable(t) if compost then compost:Reclaim(t) end end |
||
13 | |||
14 | ---------------------------- |
||
15 | -- Localization -- |
||
16 | ---------------------------- |
||
17 | |||
18 | L:RegisterTranslations("enUS", function() return { |
||
19 | ["durabilityleader"] = true, |
||
20 | ["durability"] = true, |
||
21 | ["Durability"] = true, |
||
22 | ["Leader/Durability"] = true, |
||
23 | ["Options for durability checks."] = true, |
||
24 | ["check"] = true, |
||
25 | ["Perform durability check"] = true, |
||
26 | ["Check the raid's durability."] = true, |
||
27 | ["Name"] = true, |
||
28 | ["Percent"] = true, |
||
29 | ["Broken"] = true, |
||
30 | ["Perc"] = true, |
||
31 | ["Close"] = true, |
||
32 | ["Refresh"] = true, |
||
33 | } end ) |
||
34 | |||
35 | L:RegisterTranslations("koKR", function() return { |
||
36 | |||
37 | ["Durability"] = "내구도", |
||
38 | ["Leader/Durability"] = "공격대장/내구도", |
||
39 | ["Options for durability checks."] = "내구도 확인 설정", |
||
40 | ["Perform durability check"] = "내구도 확인 실시", |
||
41 | ["Check the raid's durability."] = "공격대원의 아이템의 내구도를 확인합니다", |
||
42 | ["Name"] = "이름", |
||
43 | ["Percent"] = "백분률", |
||
44 | ["Broken"] = "파손", |
||
45 | ["Perc"] = "백분률", |
||
46 | ["Close"] = "닫기", |
||
47 | ["Refresh"] = "갱신", |
||
48 | } end ) |
||
49 | |||
50 | L:RegisterTranslations("zhCN", function() return { |
||
51 | ["durabilityleader"] = "durabilityleader", |
||
52 | ["durability"] = "装备耐久度", |
||
53 | ["Durability"] = "装备耐久度", |
||
54 | ["Leader/Durability"] = "Leader/Durability", |
||
55 | ["Options for durability checks."] = "耐久度选项", |
||
56 | ["check"] = "检查", |
||
57 | ["Perform durability check"] = "执行耐久度检查", |
||
58 | ["Check the raid's durability."] = "检查团队耐久度", |
||
59 | ["Name"] = "姓名", |
||
60 | ["Percent"] = "百分比", |
||
61 | ["Broken"] = "损坏", |
||
62 | ["Perc"] = "百分比", |
||
63 | ["Close"] = "关闭", |
||
64 | ["Refresh"] = "刷新", |
||
65 | } end ) |
||
66 | |||
67 | L:RegisterTranslations("zhTW", function() return { |
||
68 | ["durabilityleader"] = "durabilityleader", |
||
69 | ["durability"] = "裝備耐久度", |
||
70 | ["Durability"] = "裝備耐久度", |
||
71 | ["Leader/Durability"] = "領隊/裝備耐久度", |
||
72 | ["Options for durability checks."] = "耐久度選項", |
||
73 | ["check"] = "檢查", |
||
74 | ["Perform durability check"] = "執行耐久度檢查", |
||
75 | ["Check the raid's durability."] = "檢查團隊耐久度", |
||
76 | ["Name"] = "姓名", |
||
77 | ["Percent"] = "百分比", |
||
78 | ["Broken"] = "損壞", |
||
79 | ["Perc"] = "百分比", |
||
80 | ["Close"] = "關閉", |
||
81 | ["Refresh"] = "更新", |
||
82 | } end ) |
||
83 | |||
84 | L:RegisterTranslations("frFR", function() return { |
||
85 | --["durabilityleader"] = true, |
||
86 | --["durability"] = true, |
||
87 | ["Durability"] = "Durabilit\195\169", |
||
88 | ["Leader/Durability"] = "Chef/Durabilit\195\169", |
||
89 | ["Options for durability checks."] = "Options concernant les v\195\169rifications des durabilit\195\169s.", |
||
90 | --["check"] = true, |
||
91 | ["Perform durability check"] = "V\195\169rifier les durabilit\195\169s", |
||
92 | ["Check the raid's durability."] = "V\195\169rifie les durabilit\195\169s du raid.", |
||
93 | ["Name"] = "Nom", |
||
94 | ["Percent"] = "Pourcent", |
||
95 | ["Broken"] = "Cass\195\169(s)", |
||
96 | ["Perc"] = "Pourc", |
||
97 | ["Close"] = "Fermer", |
||
98 | ["Refresh"] = "Rafra\195\174chir", |
||
99 | } end ) |
||
100 | |||
101 | ---------------------------------- |
||
102 | -- Module Declaration -- |
||
103 | ---------------------------------- |
||
104 | |||
105 | oRALDurability = oRA:NewModule(L["durabilityleader"]) |
||
106 | oRALDurability.defaults = { |
||
107 | } |
||
108 | oRALDurability.leader = true |
||
109 | oRALDurability.name = L["Leader/Durability"] |
||
110 | oRALDurability.consoleCmd = L["durability"] |
||
111 | oRALDurability.consoleOptions = { |
||
112 | type = "group", |
||
113 | desc = L["Options for durability checks."], |
||
114 | name = L["Durability"], |
||
115 | args = { |
||
116 | [L["check"]] = { |
||
117 | type="execute", name = L["Perform durability check"], |
||
118 | desc = L["Check the raid's durability."], |
||
119 | func = function() |
||
120 | oRALDurability:PerformDurabilityCheck() |
||
121 | end, |
||
122 | disabled = function() return not oRA:IsModuleActive(oRALDurability) or not oRALDurability:IsValidRequest() end, |
||
123 | }, |
||
124 | } |
||
125 | } |
||
126 | |||
127 | |||
128 | ------------------------------ |
||
129 | -- Initialization -- |
||
130 | ------------------------------ |
||
131 | |||
132 | function oRALDurability:OnEnable() |
||
133 | self.durability = getnewtable() |
||
134 | self.sorting = getnewtable() |
||
135 | |||
136 | self.sorting[1] = L["Name"] |
||
137 | self.sorting[2] = L["Percent"] |
||
138 | self.sorting[3] = L["Broken"] |
||
139 | |||
140 | self:SetupFrames() |
||
141 | self:RegisterCheck("DUR", "oRA_DurabilityResponse") |
||
142 | |||
143 | self:RegisterShorthand("radur", function(item) self:PerformDurabilityCheck() end ) |
||
144 | end |
||
145 | |||
146 | function oRALDurability:OnDisable() |
||
147 | self:UnregisterAllEvents() |
||
148 | |||
149 | self:UnregisterCheck("DUR") |
||
150 | |||
151 | self:UnregisterShorthand("radur") |
||
152 | |||
153 | reclaimtable( self.durability ) |
||
154 | self.durability = nil |
||
155 | reclaimtable( self.sorting ) |
||
156 | self.sorting = nil |
||
157 | end |
||
158 | |||
159 | |||
160 | -------------------- |
||
161 | -- Event Handlers -- |
||
162 | -------------------- |
||
163 | |||
164 | function oRALDurability:oRA_DurabilityResponse(msg, author) |
||
165 | if not self:IsValidRequest(author, true) then return end |
||
166 | msg = self:CleanMessage(msg) |
||
167 | local _,_,cur,max,broken,requestby = string.find(msg, "^DUR (%d+) (%d+) (%d+) ([^%s]+)$") |
||
168 | if cur and requestby and requestby == UnitName("player") then |
||
169 | local p = math.floor(cur / max * 100) |
||
170 | table.insert(self.durability, {author, p, broken}) |
||
171 | self:UpdateScrollBar() |
||
172 | end |
||
173 | end |
||
174 | |||
175 | ---------------------- |
||
176 | -- Command handlers -- |
||
177 | ---------------------- |
||
178 | |||
179 | function oRALDurability:PerformDurabilityCheck() |
||
180 | if not self:IsPromoted() then return end |
||
181 | |||
182 | reclaimtable(self.durability) |
||
183 | self.durability = nil |
||
184 | self.durability = getnewtable() |
||
185 | |||
186 | self:SendMessage("DURC") |
||
187 | |||
188 | self.frames.main:Show() |
||
189 | self:UpdateScrollBar() |
||
190 | end |
||
191 | |||
192 | ----------------------- |
||
193 | -- Utility Functions -- |
||
194 | ----------------------- |
||
195 | |||
196 | function oRALDurability:SetupFrames() |
||
197 | local f, t, sframe, i, j |
||
198 | |||
199 | f, _, _ = GameFontNormal:GetFont() |
||
200 | |||
201 | self.frames = {} |
||
202 | |||
203 | self.frames.main = CreateFrame("Frame", "oRADurReportFrame", UIParent) |
||
204 | self.frames.main:Hide() |
||
205 | self.frames.main:SetWidth(325) |
||
206 | self.frames.main:SetHeight(350) |
||
207 | self.frames.main:EnableMouse(true) |
||
208 | self.frames.main:SetMovable(true) |
||
209 | self.frames.main:RegisterForDrag("LeftButton") |
||
210 | self.frames.main:SetScript("OnDragStart", function() this:StartMoving() end) |
||
211 | self.frames.main:SetScript("OnDragStop", function() this:StopMovingOrSizing() end) |
||
212 | self.frames.main:SetBackdrop({ |
||
213 | bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16, |
||
214 | edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16, |
||
215 | insets = {left = 4, right = 4, top = 4, bottom = 4}, |
||
216 | }) |
||
217 | self.frames.main:SetBackdropBorderColor(.5, .5, .5) |
||
218 | self.frames.main:SetBackdropColor(0,0,0) |
||
219 | self.frames.main:ClearAllPoints() |
||
220 | self.frames.main:SetPoint("CENTER", WorldFrame, "CENTER", 0, 0) |
||
221 | |||
222 | self.frames.fade = self.frames.main:CreateTexture(nil, "BORDER") |
||
223 | self.frames.fade:SetWidth(319) |
||
224 | self.frames.fade:SetHeight(25) |
||
225 | self.frames.fade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
226 | self.frames.fade:SetPoint("TOP", self.frames.main, "TOP", 0, -4) |
||
227 | self.frames.fade:SetBlendMode("ADD") |
||
228 | self.frames.fade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1) |
||
229 | self.frames.main.Fade = self.frames.fade |
||
230 | |||
231 | self.frames.header = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
232 | self.frames.header:SetFont(f, 14) |
||
233 | self.frames.header:SetWidth(300) |
||
234 | self.frames.header:SetText(L["Durability"]) |
||
235 | self.frames.header:SetTextColor(1, .8, 0) |
||
236 | self.frames.header:ClearAllPoints() |
||
237 | self.frames.header:SetPoint("TOP", self.frames.main, "TOP", 0, -10) |
||
238 | |||
239 | self.frames.headername = CreateFrame("Button", nil, self.frames.main) |
||
240 | self.frames.headername.owner = self |
||
241 | self.frames.headername:SetWidth(150) |
||
242 | self.frames.headername:SetHeight(16) |
||
243 | self.frames.headername:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -35) |
||
244 | self.frames.headername:SetScript("OnClick", |
||
245 | function() |
||
246 | this.owner:Sort(self.durability, 1) |
||
247 | this.owner:UpdateScrollBar() |
||
248 | end) |
||
249 | |||
250 | self.frames.headernamehigh = self.frames.headername:CreateTexture(nil, "BORDER") |
||
251 | self.frames.headernamehigh:SetWidth(150) |
||
252 | self.frames.headernamehigh:SetHeight(16) |
||
253 | self.frames.headernamehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
254 | self.frames.headernamehigh:SetAllPoints(self.frames.headername) |
||
255 | self.frames.headernamehigh:SetBlendMode("ADD") |
||
256 | self.frames.headernamehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
257 | self.frames.headername:SetHighlightTexture(self.frames.headernamehigh) |
||
258 | |||
259 | self.frames.headernametext = self.frames.headername:CreateFontString(nil,"OVERLAY") |
||
260 | self.frames.headernametext.owner = self |
||
261 | self.frames.headernametext:SetFont(f, 14) |
||
262 | self.frames.headernametext:SetWidth(150) |
||
263 | self.frames.headernametext:SetText(L["Name"]) |
||
264 | self.frames.headernametext:SetTextColor(1, .8, 0) |
||
265 | self.frames.headernametext:ClearAllPoints() |
||
266 | self.frames.headernametext:SetJustifyH("LEFT") |
||
267 | self.frames.headernametext:SetAllPoints(self.frames.headername) |
||
268 | |||
269 | self.frames.headerperc = CreateFrame("Button", nil, self.frames.main) |
||
270 | self.frames.headerperc.owner = self |
||
271 | self.frames.headerperc:SetWidth(70) |
||
272 | self.frames.headerperc:SetHeight(16) |
||
273 | self.frames.headerperc:SetPoint("LEFT", self.frames.headername, "RIGHT") |
||
274 | self.frames.headerperc:SetScript("OnClick", |
||
275 | function() |
||
276 | this.owner:Sort(self.durability, 2) |
||
277 | this.owner:UpdateScrollBar() |
||
278 | end) |
||
279 | |||
280 | self.frames.headerperchigh = self.frames.headerperc:CreateTexture(nil, "BORDER") |
||
281 | self.frames.headerperchigh:SetWidth(70) |
||
282 | self.frames.headerperchigh:SetHeight(16) |
||
283 | self.frames.headerperchigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
284 | self.frames.headerperchigh:SetAllPoints(self.frames.headerperc) |
||
285 | self.frames.headerperchigh:SetBlendMode("ADD") |
||
286 | self.frames.headerperchigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
287 | self.frames.headerperc:SetHighlightTexture(self.frames.headerperchigh) |
||
288 | |||
289 | |||
290 | self.frames.headerperctext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
291 | self.frames.headerperctext:SetFont(f, 14) |
||
292 | self.frames.headerperctext:SetWidth(70) |
||
293 | self.frames.headerperctext:SetText(L["Perc"]) |
||
294 | self.frames.headerperctext:SetTextColor(1, .8, 0) |
||
295 | self.frames.headerperctext:ClearAllPoints() |
||
296 | self.frames.headerperctext:SetJustifyH("LEFT") |
||
297 | self.frames.headerperctext:SetAllPoints(self.frames.headerperc) |
||
298 | |||
299 | self.frames.headerbroken = CreateFrame("Button", nil, self.frames.main) |
||
300 | self.frames.headerbroken.owner = self |
||
301 | self.frames.headerbroken:SetWidth(60) |
||
302 | self.frames.headerbroken:SetHeight(16) |
||
303 | self.frames.headerbroken:SetPoint("LEFT", self.frames.headerperc, "RIGHT") |
||
304 | self.frames.headerbroken:SetScript("OnClick", |
||
305 | function() |
||
306 | this.owner:Sort(self.durability, 3) |
||
307 | this.owner:UpdateScrollBar() |
||
308 | end) |
||
309 | |||
310 | self.frames.headerbrokenhigh = self.frames.headerbroken:CreateTexture(nil, "BORDER") |
||
311 | self.frames.headerbrokenhigh:SetWidth(60) |
||
312 | self.frames.headerbrokenhigh:SetHeight(16) |
||
313 | self.frames.headerbrokenhigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
314 | self.frames.headerbrokenhigh:SetAllPoints(self.frames.headerbroken) |
||
315 | self.frames.headerbrokenhigh:SetBlendMode("ADD") |
||
316 | self.frames.headerbrokenhigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
317 | self.frames.headerbroken:SetHighlightTexture(self.frames.headerbrokenhigh) |
||
318 | |||
319 | |||
320 | self.frames.headerbrokentext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
321 | self.frames.headerbrokentext.owner = self |
||
322 | self.frames.headerbrokentext:SetFont(f, 14) |
||
323 | self.frames.headerbrokentext:SetWidth(60) |
||
324 | self.frames.headerbrokentext:SetText(L["Broken"]) |
||
325 | self.frames.headerbrokentext:SetTextColor(1, .8, 0) |
||
326 | self.frames.headerbrokentext:ClearAllPoints() |
||
327 | self.frames.headerbrokentext:SetJustifyH("LEFT") |
||
328 | self.frames.headerbrokentext:SetAllPoints(self.frames.headerbroken) |
||
329 | |||
330 | |||
331 | |||
332 | |||
333 | self.frames.leftbutton = CreateFrame("Button", nil, self.frames.main) |
||
334 | self.frames.leftbutton.owner = self |
||
335 | self.frames.leftbutton:SetWidth(125) |
||
336 | self.frames.leftbutton:SetHeight(32) |
||
337 | self.frames.leftbutton:SetPoint("BOTTOMRIGHT", self.frames.main, "BOTTOM", -10, 10) |
||
338 | |||
339 | t = self.frames.leftbutton:CreateTexture() |
||
340 | t:SetWidth(125) |
||
341 | t:SetHeight(32) |
||
342 | t:SetPoint("CENTER", self.frames.leftbutton, "CENTER") |
||
343 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
344 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
345 | self.frames.leftbutton:SetNormalTexture(t) |
||
346 | |||
347 | t = self.frames.leftbutton:CreateTexture(nil, "BACKGROUND") |
||
348 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
349 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
350 | t:SetAllPoints(self.frames.leftbutton) |
||
351 | self.frames.leftbutton:SetPushedTexture(t) |
||
352 | |||
353 | t = self.frames.leftbutton:CreateTexture() |
||
354 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
355 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
356 | t:SetAllPoints(self.frames.leftbutton) |
||
357 | t:SetBlendMode("ADD") |
||
358 | self.frames.leftbutton:SetHighlightTexture(t) |
||
359 | self.frames.leftbuttontext = self.frames.leftbutton:CreateFontString(nil,"OVERLAY") |
||
360 | self.frames.leftbuttontext:SetFontObject(GameFontHighlight) |
||
361 | self.frames.leftbuttontext:SetText(L["Refresh"]) |
||
362 | self.frames.leftbuttontext:SetAllPoints(self.frames.leftbutton) |
||
363 | |||
364 | self.frames.leftbutton:SetScript("OnClick", |
||
365 | function() |
||
366 | this.owner:PerformDurabilityCheck() |
||
367 | end) |
||
368 | |||
369 | |||
370 | |||
371 | self.frames.rightbutton = CreateFrame("Button", nil, self.frames.main) |
||
372 | self.frames.rightbutton.owner = self |
||
373 | self.frames.rightbutton:SetWidth(125) |
||
374 | self.frames.rightbutton:SetHeight(32) |
||
375 | self.frames.rightbutton:SetPoint("BOTTOMLEFT", self.frames.main, "BOTTOM", 10, 10) |
||
376 | |||
377 | t = self.frames.rightbutton:CreateTexture() |
||
378 | t:SetWidth(125) |
||
379 | t:SetHeight(32) |
||
380 | t:SetPoint("CENTER", self.frames.rightbutton, "CENTER") |
||
381 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
382 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
383 | self.frames.rightbutton:SetNormalTexture(t) |
||
384 | |||
385 | t = self.frames.rightbutton:CreateTexture(nil, "BACKGROUND") |
||
386 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
387 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
388 | t:SetAllPoints(self.frames.rightbutton) |
||
389 | self.frames.rightbutton:SetPushedTexture(t) |
||
390 | |||
391 | t = self.frames.rightbutton:CreateTexture() |
||
392 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
393 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
394 | t:SetAllPoints(self.frames.rightbutton) |
||
395 | t:SetBlendMode("ADD") |
||
396 | self.frames.rightbutton:SetHighlightTexture(t) |
||
397 | self.frames.rightbuttontext = self.frames.rightbutton:CreateFontString(nil,"OVERLAY") |
||
398 | self.frames.rightbuttontext:SetFontObject(GameFontHighlight) |
||
399 | self.frames.rightbuttontext:SetText(L["Close"]) |
||
400 | self.frames.rightbuttontext:SetAllPoints(self.frames.rightbutton) |
||
401 | |||
402 | self.frames.rightbutton:SetScript("OnClick", |
||
403 | function() |
||
404 | this.owner.frames.main:Hide() |
||
405 | end) |
||
406 | |||
407 | |||
408 | self.frames.entry = {} |
||
409 | self.frames.entry[1] = self:ScrollEntryFrame(1) |
||
410 | self.frames.entry[1]:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -55 ) |
||
411 | |||
412 | for i=2, 15 do |
||
413 | j = i - 1 |
||
414 | self.frames.entry[i] = self:ScrollEntryFrame() |
||
415 | self.frames.entry[i]:SetPoint("TOPLEFT", self.frames.entry[j], "BOTTOMLEFT") |
||
416 | end |
||
417 | |||
418 | |||
419 | self.frames.sframe = CreateFrame("ScrollFrame", "oRADurabilityScrollFrame", self.frames.main, "FauxScrollFrameTemplate") |
||
420 | self.frames.sframe.owner = self |
||
421 | self.frames.sframe:SetParent(self.frames.main) |
||
422 | self.frames.sframe:SetWidth(285) |
||
423 | self.frames.sframe:SetHeight(240) |
||
424 | self.frames.sframe:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 5, -55) |
||
425 | |||
426 | self.frames.sframe:SetScript("OnVerticalScroll", |
||
427 | function() |
||
428 | FauxScrollFrame_OnVerticalScroll(16, function() this.owner:UpdateScrollBar() end) |
||
429 | end ) |
||
430 | |||
431 | end |
||
432 | |||
433 | function oRALDurability:ScrollEntryFrame() |
||
434 | local f = CreateFrame("Button", nil, self.frames.main ) |
||
435 | f:SetWidth(240) |
||
436 | f:SetHeight(16) |
||
437 | |||
438 | f.textname = f:CreateFontString(nil,"ARTWORK") |
||
439 | f.textname:SetFontObject(GameFontHighlight) |
||
440 | f.textname:SetWidth(150) |
||
441 | f.textname:SetHeight(16) |
||
442 | f.textname:SetJustifyH("LEFT") |
||
443 | f.textname:SetNonSpaceWrap(false) |
||
444 | f.textname:ClearAllPoints() |
||
445 | f.textname:SetPoint( "LEFT", f, "LEFT") |
||
446 | f.textname:SetTextColor(1,1,1) |
||
447 | f.textname:SetText("Name") |
||
448 | |||
449 | f.textperc = f:CreateFontString(nil,"ARTWORK") |
||
450 | f.textperc:SetFontObject(GameFontHighlight) |
||
451 | f.textperc:SetWidth(70) |
||
452 | f.textperc:SetHeight(16) |
||
453 | f.textperc:SetJustifyH("LEFT") |
||
454 | f.textperc:SetNonSpaceWrap(false) |
||
455 | f.textperc:ClearAllPoints() |
||
456 | f.textperc:SetPoint("LEFT", f.textname, "RIGHT") |
||
457 | f.textperc:SetTextColor(1,1,1) |
||
458 | f.textperc:SetText("12%") |
||
459 | |||
460 | f.textbroken = f:CreateFontString(nil,"ARTWORK") |
||
461 | f.textbroken:SetFontObject(GameFontHighlight) |
||
462 | f.textbroken:SetWidth(60) |
||
463 | f.textbroken:SetHeight(16) |
||
464 | f.textbroken:SetJustifyH("LEFT") |
||
465 | f.textbroken:SetNonSpaceWrap(false) |
||
466 | f.textbroken:ClearAllPoints() |
||
467 | f.textbroken:SetPoint("LEFT", f.textperc, "RIGHT") |
||
468 | f.textbroken:SetTextColor(1,1,1) |
||
469 | f.textbroken:SetText("3") |
||
470 | |||
471 | return f |
||
472 | end |
||
473 | |||
474 | function oRALDurability:UpdateScrollBar() |
||
475 | local i,j |
||
476 | local entries = table.getn(self.durability) |
||
477 | FauxScrollFrame_Update(self.frames.sframe, entries, 15, 16) |
||
478 | |||
479 | for i = 1, 15 do |
||
480 | j = i + FauxScrollFrame_GetOffset(self.frames.sframe) |
||
481 | |||
482 | if j <= entries then |
||
483 | self.frames.entry[i].textname:SetText(self.durability[j][1]) |
||
484 | self.frames.entry[i].textperc:SetText(self.durability[j][2].."%") |
||
485 | self.frames.entry[i].textbroken:SetText(self.durability[j][3]) |
||
486 | self.frames.entry[i]:Show() |
||
487 | else |
||
488 | self.frames.entry[i]:Hide() |
||
489 | end |
||
490 | end |
||
491 | |||
492 | end |
||
493 | |||
494 | |||
495 | |||
496 | function oRALDurability:Sort(tbl, sortBy) |
||
497 | if( sortBy == 2 or sortBy == 1 ) then |
||
498 | --percent, lowest to highest |
||
499 | table.sort(tbl, |
||
500 | function(t1, t2) |
||
501 | if (t1[sortBy] == t2[sortBy] ) then |
||
502 | return t1[1] > t2[1] |
||
503 | else |
||
504 | return t1[sortBy] < t2[sortBy] |
||
505 | end |
||
506 | end |
||
507 | ) |
||
508 | else |
||
509 | --broken, highest to lowest |
||
510 | table.sort(tbl, |
||
511 | function(t1, t2) |
||
512 | if (t1[sortBy] == t2[sortBy] ) then |
||
513 | return t1[1] < t2[1] |
||
514 | else |
||
515 | return t1[sortBy] > t2[sortBy] |
||
516 | end |
||
517 | end |
||
518 | ) |
||
519 | end |
||
520 | end |