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("oRALResist") |
||
9 | local compost = AceLibrary:HasInstance("Compost-2.0") and AceLibrary("Compost-2.0") |
||
10 | local function getnewtable() return compost and compost:Acquire() or {} end |
||
11 | local function reclaimtable(t) if compost then compost:Reclaim(t) end end |
||
12 | |||
13 | ---------------------------- |
||
14 | -- Localization -- |
||
15 | ---------------------------- |
||
16 | |||
17 | L:RegisterTranslations("enUS", function() return { |
||
18 | ["resist"] = true, |
||
19 | ["resistleader"] = true, |
||
20 | ["Options for resistance checks."] = true, |
||
21 | ["Leader/Resist"] = true, |
||
22 | ["Name"] = true, |
||
23 | ["Fire"] = true, |
||
24 | ["Nature"] = true, |
||
25 | ["Frost"] = true, |
||
26 | ["Shadow"] = true, |
||
27 | ["Arcane"] = true, |
||
28 | ["Resistance checks disabled."] = true, |
||
29 | ["Resistances"] = true, |
||
30 | ["Fr"] = true, |
||
31 | ["Ft"] = true, |
||
32 | ["N"] = true, |
||
33 | ["A"] = true, |
||
34 | ["S"] = true, |
||
35 | ["Refresh"] = true, |
||
36 | ["Close"] = true, |
||
37 | ["check"] = true, |
||
38 | ["Perform resistance check"] = true, |
||
39 | ["Check the raid's resistances."] = true, |
||
40 | } end ) |
||
41 | |||
42 | L:RegisterTranslations("koKR", function() return { |
||
43 | |||
44 | ["Options for resistance checks."] = "공격대원 저항 확인 설정", |
||
45 | ["Leader/Resist"] = "공격대장/저항", |
||
46 | ["Name"] = "이름", |
||
47 | ["Fire"] = "화염", |
||
48 | ["Nature"] = "자연", |
||
49 | ["Frost"] = "냉기", |
||
50 | ["Shadow"] = "암흑", |
||
51 | ["Arcane"] = "비전", |
||
52 | ["Resistance checks disabled."] = "저항확인이 불가능합니다", |
||
53 | ["Resistances"] = "저항", |
||
54 | ["Fr"] = "화", |
||
55 | ["Ft"] = "냉", |
||
56 | ["N"] = "자", |
||
57 | ["A"] = "비", |
||
58 | ["S"] = "암", |
||
59 | ["Refresh"] = "갱신", |
||
60 | ["Close"] = "닫기", |
||
61 | ["Perform resistance check"] = "저항 확인 실시", |
||
62 | ["Check the raid's resistances."] = "공격대원의 저항을 확인합니다.", |
||
63 | } end ) |
||
64 | |||
65 | L:RegisterTranslations("zhCN", function() return { |
||
66 | ["resist"] = "抗性", |
||
67 | ["resistleader"] = "resistleader", |
||
68 | ["Options for resistance checks."] = "抗性助手选项", |
||
69 | ["Leader/Resist"] = "Leader/Resist", |
||
70 | ["Name"] = "姓名", |
||
71 | ["Fire"] = "火焰", |
||
72 | ["Nature"] = "自然", |
||
73 | ["Frost"] = "冰霜", |
||
74 | ["Shadow"] = "暗影", |
||
75 | ["Arcane"] = "奥术", |
||
76 | ["Resistance checks disabled."] = "禁止抗性检查", |
||
77 | ["Resistances"] = "抗性", |
||
78 | ["Fr"] = "火", |
||
79 | ["Ft"] = "冰", |
||
80 | ["N"] = "自", |
||
81 | ["A"] = "奥", |
||
82 | ["S"] = "暗", |
||
83 | ["Refresh"] = "刷新", |
||
84 | ["Close"] = "关闭", |
||
85 | ["check"] = "检查", |
||
86 | ["Perform resistance check"] = "进行抗性检查", |
||
87 | ["Check the raid's resistances."] = "检查团队抗性", |
||
88 | } end ) |
||
89 | |||
90 | L:RegisterTranslations("zhTW", function() return { |
||
91 | ["resist"] = "抗性", |
||
92 | ["resistleader"] = "resistleader", |
||
93 | ["Options for resistance checks."] = "抗性助手選項", |
||
94 | ["Leader/Resist"] = "領隊/抗性", |
||
95 | ["Name"] = "姓名", |
||
96 | ["Fire"] = "火焰", |
||
97 | ["Nature"] = "自然", |
||
98 | ["Frost"] = "冰霜", |
||
99 | ["Shadow"] = "陰影", |
||
100 | ["Arcane"] = "祕法", |
||
101 | ["Resistance checks disabled."] = "已停用抗性檢查", |
||
102 | ["Resistances"] = "抗性", |
||
103 | ["Fr"] = "火", |
||
104 | ["Ft"] = "冰", |
||
105 | ["N"] = "自", |
||
106 | ["A"] = "祕", |
||
107 | ["S"] = "陰", |
||
108 | ["Refresh"] = "更新", |
||
109 | ["Close"] = "關閉", |
||
110 | ["check"] = "檢查", |
||
111 | ["Perform resistance check"] = "進行抗性檢查", |
||
112 | ["Check the raid's resistances."] = "檢查團隊抗性", |
||
113 | } end ) |
||
114 | |||
115 | L:RegisterTranslations("frFR", function() return { |
||
116 | --["resist"] = true, |
||
117 | --["resistleader"] = true, |
||
118 | ["Options for resistance checks."] = "Options concernant les v\195\169rifications des r\195\169sistances.", |
||
119 | ["Leader/Resist"] = "Chef/R\195\169sistances", |
||
120 | ["Name"] = "Nom", |
||
121 | ["Fire"] = "Feu", |
||
122 | --["Nature"] = true, |
||
123 | ["Frost"] = "Givre", |
||
124 | ["Shadow"] = "Ombre", |
||
125 | ["Arcane"] = "Arcanes", |
||
126 | ["Resistance checks disabled."] = "V\195\169rifications des r\195\169sistances désactiv\195\169es.", |
||
127 | ["Resistances"] = "R\195\169sistances", |
||
128 | ["Fr"] = "F", |
||
129 | ["Ft"] = "G", |
||
130 | --["N"] = true, |
||
131 | --["A"] = true, |
||
132 | ["S"] = "O", |
||
133 | ["Refresh"] = "Rafra\195\174chir", |
||
134 | ["Close"] = "Fermer", |
||
135 | --["check"] = true, |
||
136 | ["Perform resistance check"] = "V\195\169rifier les r\195\169sistances", |
||
137 | ["Check the raid's resistances."] = "V\195\169rifie les r\195\169sistances du raid.", |
||
138 | } end ) |
||
139 | |||
140 | ---------------------------------- |
||
141 | -- Module Declaration -- |
||
142 | ---------------------------------- |
||
143 | |||
144 | oRALResist = oRA:NewModule(L["resistleader"]) |
||
145 | oRALResist.defaults = { |
||
146 | } |
||
147 | oRALResist.participant = true |
||
148 | oRALResist.name = L["Leader/Resist"] |
||
149 | oRALResist.consoleCmd = L["resist"] |
||
150 | oRALResist.consoleOptions = { |
||
151 | type = "group", |
||
152 | desc = L["Options for resistance checks."], |
||
153 | name = L["Resistances"], |
||
154 | args = { |
||
155 | [L["check"]] = { |
||
156 | type="execute", name = L["Perform resistance check"], |
||
157 | desc = L["Check the raid's resistances."], |
||
158 | func = function() |
||
159 | oRALResist:PerformResistanceCheck() |
||
160 | end, |
||
161 | disabled = function() return not oRA:IsModuleActive(oRALResist) or not oRALResist:IsValidRequest() end, |
||
162 | }, |
||
163 | |||
164 | } |
||
165 | } |
||
166 | |||
167 | ------------------------------ |
||
168 | -- Initialization -- |
||
169 | ------------------------------ |
||
170 | |||
171 | function oRALResist:OnEnable() |
||
172 | self.resists = getnewtable() |
||
173 | self.sorting = getnewtable() |
||
174 | |||
175 | self.sorting[1] = L["Name"] |
||
176 | self.sorting[2] = L["Fire"] |
||
177 | self.sorting[3] = L["Nature"] |
||
178 | self.sorting[4] = L["Frost"] |
||
179 | self.sorting[5] = L["Shadow"] |
||
180 | self.sorting[6] = L["Arcane"] |
||
181 | |||
182 | self:RegisterCheck("RST", "oRA_ResistanceResponse") |
||
183 | self:RegisterShorthand("raresist", function() self:PerformResistanceCheck() end ) |
||
184 | self:SetupFrames() |
||
185 | end |
||
186 | |||
187 | function oRALResist:OnDisable() |
||
188 | reclaimtable(self.resists) |
||
189 | self.resists = nil |
||
190 | reclaimtable(self.sorting) |
||
191 | self.sorting = nil |
||
192 | self:UnregisterAllEvents() |
||
193 | self:UnregisterCheck("RST") |
||
194 | self:UnregisterShorthand("raresist") |
||
195 | end |
||
196 | |||
197 | |||
198 | ------------------------- |
||
199 | -- Event Handlers -- |
||
200 | ------------------------- |
||
201 | |||
202 | function oRALResist:oRA_ResistanceResponse( msg, author) |
||
203 | msg = self:CleanMessage(msg) |
||
204 | local _,_,requestby = string.find(msg, "^RST %-1 ([^%s]+)$") |
||
205 | if requestby and requestby == UnitName("player") then |
||
206 | self:Print( author .. " " .. L["Resistance checks disabled."]) |
||
207 | else |
||
208 | local _,_, fire, nature, frost, shadow, arcane, requestby = string.find(msg, "^RST (%d+) (%d+) (%d+) (%d+) (%d+) ([^%s]+)$") |
||
209 | if fire and requestby and requestby == UnitName("player") then |
||
210 | table.insert( self.resists, {author, tonumber(fire), tonumber(nature), tonumber(frost), tonumber(shadow), tonumber(arcane)}) |
||
211 | self:UpdateScrollBar() |
||
212 | end |
||
213 | end |
||
214 | end |
||
215 | |||
216 | ------------------------- |
||
217 | -- Utility Functions -- |
||
218 | ------------------------- |
||
219 | |||
220 | function oRALResist:SetupFrames() |
||
221 | local f, t, sframe, i, j |
||
222 | |||
223 | f, _, _ = GameFontNormal:GetFont() |
||
224 | |||
225 | self.frames = {} |
||
226 | |||
227 | self.frames.main = CreateFrame("Frame", "oRAResistReportFrame", UIParent) |
||
228 | self.frames.main:Hide() |
||
229 | self.frames.main:SetWidth(325) |
||
230 | self.frames.main:SetHeight(350) |
||
231 | self.frames.main:EnableMouse(true) |
||
232 | self.frames.main:SetMovable(true) |
||
233 | self.frames.main:RegisterForDrag("LeftButton") |
||
234 | self.frames.main:SetScript("OnDragStart", function() this:StartMoving() end) |
||
235 | self.frames.main:SetScript("OnDragStop", function() this:StopMovingOrSizing() end) |
||
236 | self.frames.main:SetBackdrop({ |
||
237 | bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16, |
||
238 | edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16, |
||
239 | insets = {left = 4, right = 4, top = 4, bottom = 4}, |
||
240 | }) |
||
241 | self.frames.main:SetBackdropBorderColor(.5, .5, .5) |
||
242 | self.frames.main:SetBackdropColor(0,0,0) |
||
243 | self.frames.main:ClearAllPoints() |
||
244 | self.frames.main:SetPoint("CENTER", WorldFrame, "CENTER", 0, 0) |
||
245 | |||
246 | self.frames.fade = self.frames.main:CreateTexture(nil, "BORDER") |
||
247 | self.frames.fade:SetWidth(319) |
||
248 | self.frames.fade:SetHeight(25) |
||
249 | self.frames.fade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
250 | self.frames.fade:SetPoint("TOP", self.frames.main, "TOP", 0, -4) |
||
251 | self.frames.fade:SetBlendMode("ADD") |
||
252 | self.frames.fade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1) |
||
253 | self.frames.main.Fade = self.frames.fade |
||
254 | |||
255 | self.frames.header = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
256 | self.frames.header:SetFont(f, 14) |
||
257 | self.frames.header:SetWidth(300) |
||
258 | self.frames.header:SetText(L["Resistances"]) |
||
259 | self.frames.header:SetTextColor(1, .8, 0) |
||
260 | self.frames.header:ClearAllPoints() |
||
261 | self.frames.header:SetPoint("TOP", self.frames.main, "TOP", 0, -10) |
||
262 | |||
263 | self.frames.headername = CreateFrame("Button", nil, self.frames.main) |
||
264 | self.frames.headername.owner = self |
||
265 | self.frames.headername:SetWidth(130) |
||
266 | self.frames.headername:SetHeight(16) |
||
267 | self.frames.headername:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -35) |
||
268 | self.frames.headername:SetScript("OnClick", |
||
269 | function() |
||
270 | this.owner:Sort(self.resists, 1) |
||
271 | this.owner:UpdateScrollBar() |
||
272 | end) |
||
273 | |||
274 | self.frames.headernamehigh = self.frames.headername:CreateTexture(nil, "BORDER") |
||
275 | self.frames.headernamehigh:SetWidth(130) |
||
276 | self.frames.headernamehigh:SetHeight(16) |
||
277 | self.frames.headernamehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
278 | self.frames.headernamehigh:SetAllPoints(self.frames.headername) |
||
279 | self.frames.headernamehigh:SetBlendMode("ADD") |
||
280 | self.frames.headernamehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
281 | self.frames.headername:SetHighlightTexture(self.frames.headernamehigh) |
||
282 | |||
283 | self.frames.headernametext = self.frames.headername:CreateFontString(nil,"OVERLAY") |
||
284 | self.frames.headernametext.owner = self |
||
285 | self.frames.headernametext:SetFont(f, 14) |
||
286 | self.frames.headernametext:SetWidth(130) |
||
287 | self.frames.headernametext:SetText(L["Name"]) |
||
288 | self.frames.headernametext:SetTextColor(1, .8, 0) |
||
289 | self.frames.headernametext:ClearAllPoints() |
||
290 | self.frames.headernametext:SetJustifyH("LEFT") |
||
291 | self.frames.headernametext:SetAllPoints(self.frames.headername) |
||
292 | |||
293 | self.frames.headerfire = CreateFrame("Button", nil, self.frames.main) |
||
294 | self.frames.headerfire.owner = self |
||
295 | self.frames.headerfire:SetWidth(30) |
||
296 | self.frames.headerfire:SetHeight(16) |
||
297 | self.frames.headerfire:SetPoint("LEFT", self.frames.headername, "RIGHT") |
||
298 | self.frames.headerfire:SetScript("OnClick", |
||
299 | function() |
||
300 | this.owner:Sort(self.resists, 2) |
||
301 | this.owner:UpdateScrollBar() |
||
302 | end) |
||
303 | |||
304 | self.frames.headerfirehigh = self.frames.headerfire:CreateTexture(nil, "BORDER") |
||
305 | self.frames.headerfirehigh:SetWidth(30) |
||
306 | self.frames.headerfirehigh:SetHeight(16) |
||
307 | self.frames.headerfirehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
308 | self.frames.headerfirehigh:SetAllPoints(self.frames.headerfire) |
||
309 | self.frames.headerfirehigh:SetBlendMode("ADD") |
||
310 | self.frames.headerfirehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
311 | self.frames.headerfire:SetHighlightTexture(self.frames.headerfirehigh) |
||
312 | |||
313 | |||
314 | self.frames.headerfiretext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
315 | self.frames.headerfiretext:SetFont(f, 14) |
||
316 | self.frames.headerfiretext:SetWidth(30) |
||
317 | self.frames.headerfiretext:SetText(L["Fr"]) |
||
318 | self.frames.headerfiretext:SetTextColor(1, 0, 0) |
||
319 | self.frames.headerfiretext:ClearAllPoints() |
||
320 | self.frames.headerfiretext:SetJustifyH("RIGHT") |
||
321 | self.frames.headerfiretext:SetAllPoints(self.frames.headerfire) |
||
322 | |||
323 | self.frames.headernature = CreateFrame("Button", nil, self.frames.main) |
||
324 | self.frames.headernature.owner = self |
||
325 | self.frames.headernature:SetWidth(30) |
||
326 | self.frames.headernature:SetHeight(16) |
||
327 | self.frames.headernature:SetPoint("LEFT", self.frames.headerfire, "RIGHT") |
||
328 | self.frames.headernature:SetScript("OnClick", |
||
329 | function() |
||
330 | this.owner:Sort(self.resists, 3) |
||
331 | this.owner:UpdateScrollBar() |
||
332 | end) |
||
333 | |||
334 | self.frames.headernaturehigh = self.frames.headernature:CreateTexture(nil, "BORDER") |
||
335 | self.frames.headernaturehigh:SetWidth(30) |
||
336 | self.frames.headernaturehigh:SetHeight(16) |
||
337 | self.frames.headernaturehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
338 | self.frames.headernaturehigh:SetAllPoints(self.frames.headernature) |
||
339 | self.frames.headernaturehigh:SetBlendMode("ADD") |
||
340 | self.frames.headernaturehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
341 | self.frames.headernature:SetHighlightTexture(self.frames.headernaturehigh) |
||
342 | |||
343 | |||
344 | self.frames.headernaturetext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
345 | self.frames.headernaturetext.owner = self |
||
346 | self.frames.headernaturetext:SetFont(f, 14) |
||
347 | self.frames.headernaturetext:SetWidth(60) |
||
348 | self.frames.headernaturetext:SetText(L["N"]) |
||
349 | self.frames.headernaturetext:SetTextColor(0, 1, 0) |
||
350 | self.frames.headernaturetext:ClearAllPoints() |
||
351 | self.frames.headernaturetext:SetJustifyH("RIGHT") |
||
352 | self.frames.headernaturetext:SetAllPoints(self.frames.headernature) |
||
353 | |||
354 | self.frames.headerfrost = CreateFrame("Button", nil, self.frames.main) |
||
355 | self.frames.headerfrost.owner = self |
||
356 | self.frames.headerfrost:SetWidth(30) |
||
357 | self.frames.headerfrost:SetHeight(16) |
||
358 | self.frames.headerfrost:SetPoint("LEFT", self.frames.headernature, "RIGHT") |
||
359 | self.frames.headerfrost:SetScript("OnClick", |
||
360 | function() |
||
361 | this.owner:Sort(self.resists, 4) |
||
362 | this.owner:UpdateScrollBar() |
||
363 | end) |
||
364 | |||
365 | self.frames.headerfrosthigh = self.frames.headerfrost:CreateTexture(nil, "BORDER") |
||
366 | self.frames.headerfrosthigh:SetWidth(30) |
||
367 | self.frames.headerfrosthigh:SetHeight(16) |
||
368 | self.frames.headerfrosthigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
369 | self.frames.headerfrosthigh:SetAllPoints(self.frames.headerfrost) |
||
370 | self.frames.headerfrosthigh:SetBlendMode("ADD") |
||
371 | self.frames.headerfrosthigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
372 | self.frames.headerfrost:SetHighlightTexture(self.frames.headerfrosthigh) |
||
373 | |||
374 | |||
375 | self.frames.headerfrosttext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
376 | self.frames.headerfrosttext.owner = self |
||
377 | self.frames.headerfrosttext:SetFont(f, 14) |
||
378 | self.frames.headerfrosttext:SetWidth(60) |
||
379 | self.frames.headerfrosttext:SetText(L["Ft"]) |
||
380 | self.frames.headerfrosttext:SetTextColor(.5, .5, 1) |
||
381 | self.frames.headerfrosttext:ClearAllPoints() |
||
382 | self.frames.headerfrosttext:SetJustifyH("RIGHT") |
||
383 | self.frames.headerfrosttext:SetAllPoints(self.frames.headerfrost) |
||
384 | |||
385 | self.frames.headershadow = CreateFrame("Button", nil, self.frames.main) |
||
386 | self.frames.headershadow.owner = self |
||
387 | self.frames.headershadow:SetWidth(30) |
||
388 | self.frames.headershadow:SetHeight(16) |
||
389 | self.frames.headershadow:SetPoint("LEFT", self.frames.headerfrost, "RIGHT") |
||
390 | self.frames.headershadow:SetScript("OnClick", |
||
391 | function() |
||
392 | this.owner:Sort(self.resists, 5) |
||
393 | this.owner:UpdateScrollBar() |
||
394 | end) |
||
395 | |||
396 | self.frames.headershadowhigh = self.frames.headershadow:CreateTexture(nil, "BORDER") |
||
397 | self.frames.headershadowhigh:SetWidth(30) |
||
398 | self.frames.headershadowhigh:SetHeight(16) |
||
399 | self.frames.headershadowhigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
400 | self.frames.headershadowhigh:SetAllPoints(self.frames.headershadow) |
||
401 | self.frames.headershadowhigh:SetBlendMode("ADD") |
||
402 | self.frames.headershadowhigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
403 | self.frames.headershadow:SetHighlightTexture(self.frames.headershadowhigh) |
||
404 | |||
405 | |||
406 | self.frames.headershadowtext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
407 | self.frames.headershadowtext.owner = self |
||
408 | self.frames.headershadowtext:SetFont(f, 14) |
||
409 | self.frames.headershadowtext:SetWidth(60) |
||
410 | self.frames.headershadowtext:SetText(L["S"]) |
||
411 | self.frames.headershadowtext:SetTextColor(.8, 0, 1) |
||
412 | self.frames.headershadowtext:ClearAllPoints() |
||
413 | self.frames.headershadowtext:SetJustifyH("RIGHT") |
||
414 | self.frames.headershadowtext:SetAllPoints(self.frames.headershadow) |
||
415 | |||
416 | self.frames.headerarcane = CreateFrame("Button", nil, self.frames.main) |
||
417 | self.frames.headerarcane.owner = self |
||
418 | self.frames.headerarcane:SetWidth(30) |
||
419 | self.frames.headerarcane:SetHeight(16) |
||
420 | self.frames.headerarcane:SetPoint("LEFT", self.frames.headershadow, "RIGHT") |
||
421 | self.frames.headerarcane:SetScript("OnClick", |
||
422 | function() |
||
423 | this.owner:Sort(self.resists, 6) |
||
424 | this.owner:UpdateScrollBar() |
||
425 | end) |
||
426 | |||
427 | self.frames.headerarcanehigh = self.frames.headerarcane:CreateTexture(nil, "BORDER") |
||
428 | self.frames.headerarcanehigh:SetWidth(30) |
||
429 | self.frames.headerarcanehigh:SetHeight(16) |
||
430 | self.frames.headerarcanehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
431 | self.frames.headerarcanehigh:SetAllPoints(self.frames.headerarcane) |
||
432 | self.frames.headerarcanehigh:SetBlendMode("ADD") |
||
433 | self.frames.headerarcanehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
434 | self.frames.headerarcane:SetHighlightTexture(self.frames.headerarcanehigh) |
||
435 | |||
436 | |||
437 | self.frames.headerarcanetext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
438 | self.frames.headerarcanetext.owner = self |
||
439 | self.frames.headerarcanetext:SetFont(f, 14) |
||
440 | self.frames.headerarcanetext:SetWidth(60) |
||
441 | self.frames.headerarcanetext:SetText(L["A"]) |
||
442 | self.frames.headerarcanetext:SetTextColor(1, 1, 1) |
||
443 | self.frames.headerarcanetext:ClearAllPoints() |
||
444 | self.frames.headerarcanetext:SetJustifyH("RIGHT") |
||
445 | self.frames.headerarcanetext:SetAllPoints(self.frames.headerarcane) |
||
446 | |||
447 | |||
448 | |||
449 | |||
450 | self.frames.leftbutton = CreateFrame("Button", nil, self.frames.main) |
||
451 | self.frames.leftbutton.owner = self |
||
452 | self.frames.leftbutton:SetWidth(125) |
||
453 | self.frames.leftbutton:SetHeight(32) |
||
454 | self.frames.leftbutton:SetPoint("BOTTOMRIGHT", self.frames.main, "BOTTOM", -10, 10) |
||
455 | |||
456 | t = self.frames.leftbutton:CreateTexture() |
||
457 | t:SetWidth(125) |
||
458 | t:SetHeight(32) |
||
459 | t:SetPoint("CENTER", self.frames.leftbutton, "CENTER") |
||
460 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
461 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
462 | self.frames.leftbutton:SetNormalTexture(t) |
||
463 | |||
464 | t = self.frames.leftbutton:CreateTexture(nil, "BACKGROUND") |
||
465 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
466 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
467 | t:SetAllPoints(self.frames.leftbutton) |
||
468 | self.frames.leftbutton:SetPushedTexture(t) |
||
469 | |||
470 | t = self.frames.leftbutton:CreateTexture() |
||
471 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
472 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
473 | t:SetAllPoints(self.frames.leftbutton) |
||
474 | t:SetBlendMode("ADD") |
||
475 | self.frames.leftbutton:SetHighlightTexture(t) |
||
476 | self.frames.leftbuttontext = self.frames.leftbutton:CreateFontString(nil,"OVERLAY") |
||
477 | self.frames.leftbuttontext:SetFontObject(GameFontHighlight) |
||
478 | self.frames.leftbuttontext:SetText(L["Refresh"]) |
||
479 | self.frames.leftbuttontext:SetAllPoints(self.frames.leftbutton) |
||
480 | |||
481 | self.frames.leftbutton:SetScript("OnClick", |
||
482 | function() |
||
483 | this.owner:PerformResistanceCheck() |
||
484 | end) |
||
485 | |||
486 | |||
487 | |||
488 | self.frames.rightbutton = CreateFrame("Button", nil, self.frames.main) |
||
489 | self.frames.rightbutton.owner = self |
||
490 | self.frames.rightbutton:SetWidth(125) |
||
491 | self.frames.rightbutton:SetHeight(32) |
||
492 | self.frames.rightbutton:SetPoint("BOTTOMLEFT", self.frames.main, "BOTTOM", 10, 10) |
||
493 | |||
494 | t = self.frames.rightbutton:CreateTexture() |
||
495 | t:SetWidth(125) |
||
496 | t:SetHeight(32) |
||
497 | t:SetPoint("CENTER", self.frames.rightbutton, "CENTER") |
||
498 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
499 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
500 | self.frames.rightbutton:SetNormalTexture(t) |
||
501 | |||
502 | t = self.frames.rightbutton:CreateTexture(nil, "BACKGROUND") |
||
503 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
504 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
505 | t:SetAllPoints(self.frames.rightbutton) |
||
506 | self.frames.rightbutton:SetPushedTexture(t) |
||
507 | |||
508 | t = self.frames.rightbutton:CreateTexture() |
||
509 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
510 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
511 | t:SetAllPoints(self.frames.rightbutton) |
||
512 | t:SetBlendMode("ADD") |
||
513 | self.frames.rightbutton:SetHighlightTexture(t) |
||
514 | self.frames.rightbuttontext = self.frames.rightbutton:CreateFontString(nil,"OVERLAY") |
||
515 | self.frames.rightbuttontext:SetFontObject(GameFontHighlight) |
||
516 | self.frames.rightbuttontext:SetText(L["Close"]) |
||
517 | self.frames.rightbuttontext:SetAllPoints(self.frames.rightbutton) |
||
518 | |||
519 | self.frames.rightbutton:SetScript("OnClick", |
||
520 | function() |
||
521 | this.owner.frames.main:Hide() |
||
522 | end) |
||
523 | |||
524 | |||
525 | self.frames.entry = {} |
||
526 | self.frames.entry[1] = self:ScrollEntryFrame(1) |
||
527 | self.frames.entry[1]:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -55 ) |
||
528 | |||
529 | for i=2, 15 do |
||
530 | j = i - 1 |
||
531 | self.frames.entry[i] = self:ScrollEntryFrame() |
||
532 | self.frames.entry[i]:SetPoint("TOPLEFT", self.frames.entry[j], "BOTTOMLEFT") |
||
533 | end |
||
534 | |||
535 | |||
536 | self.frames.sframe = CreateFrame("ScrollFrame", "oRAResistScrollFrame", self.frames.main, "FauxScrollFrameTemplate") |
||
537 | self.frames.sframe.owner = self |
||
538 | self.frames.sframe:SetParent(self.frames.main) |
||
539 | self.frames.sframe:SetWidth(285) |
||
540 | self.frames.sframe:SetHeight(240) |
||
541 | self.frames.sframe:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 5, -55) |
||
542 | |||
543 | self.frames.sframe:SetScript("OnVerticalScroll", |
||
544 | function() |
||
545 | FauxScrollFrame_OnVerticalScroll(16, function() this.owner:UpdateScrollBar() end) |
||
546 | end ) |
||
547 | |||
548 | end |
||
549 | |||
550 | function oRALResist:ScrollEntryFrame() |
||
551 | local f = CreateFrame("Button", nil, self.frames.main ) |
||
552 | f:SetWidth(240) |
||
553 | f:SetHeight(16) |
||
554 | |||
555 | f.textname = f:CreateFontString(nil,"ARTWORK") |
||
556 | f.textname:SetFontObject(GameFontHighlight) |
||
557 | f.textname:SetWidth(130) |
||
558 | f.textname:SetHeight(16) |
||
559 | f.textname:SetJustifyH("LEFT") |
||
560 | f.textname:SetNonSpaceWrap(false) |
||
561 | f.textname:ClearAllPoints() |
||
562 | f.textname:SetPoint( "LEFT", f, "LEFT") |
||
563 | f.textname:SetTextColor(1,1,1) |
||
564 | f.textname:SetText("Name") |
||
565 | |||
566 | f.textfire = f:CreateFontString(nil,"ARTWORK") |
||
567 | f.textfire:SetFontObject(GameFontHighlight) |
||
568 | f.textfire:SetWidth(30) |
||
569 | f.textfire:SetHeight(16) |
||
570 | f.textfire:SetJustifyH("RIGHT") |
||
571 | f.textfire:SetNonSpaceWrap(false) |
||
572 | f.textfire:ClearAllPoints() |
||
573 | f.textfire:SetPoint("LEFT", f.textname, "RIGHT") |
||
574 | f.textfire:SetTextColor(1,0,0) |
||
575 | f.textfire:SetText("12") |
||
576 | |||
577 | f.textnature = f:CreateFontString(nil,"ARTWORK") |
||
578 | f.textnature:SetFontObject(GameFontHighlight) |
||
579 | f.textnature:SetWidth(30) |
||
580 | f.textnature:SetHeight(16) |
||
581 | f.textnature:SetJustifyH("RIGHT") |
||
582 | f.textnature:SetNonSpaceWrap(false) |
||
583 | f.textnature:ClearAllPoints() |
||
584 | f.textnature:SetPoint("LEFT", f.textfire, "RIGHT") |
||
585 | f.textnature:SetTextColor(0,1,0) |
||
586 | f.textnature:SetText("3") |
||
587 | |||
588 | f.textfrost = f:CreateFontString(nil,"ARTWORK") |
||
589 | f.textfrost:SetFontObject(GameFontHighlight) |
||
590 | f.textfrost:SetWidth(30) |
||
591 | f.textfrost:SetHeight(16) |
||
592 | f.textfrost:SetJustifyH("RIGHT") |
||
593 | f.textfrost:SetNonSpaceWrap(false) |
||
594 | f.textfrost:ClearAllPoints() |
||
595 | f.textfrost:SetPoint("LEFT", f.textnature, "RIGHT") |
||
596 | f.textfrost:SetTextColor(.5,.5,1) |
||
597 | f.textfrost:SetText("3") |
||
598 | |||
599 | f.textshadow = f:CreateFontString(nil,"ARTWORK") |
||
600 | f.textshadow:SetFontObject(GameFontHighlight) |
||
601 | f.textshadow:SetWidth(30) |
||
602 | f.textshadow:SetHeight(16) |
||
603 | f.textshadow:SetJustifyH("RIGHT") |
||
604 | f.textshadow:SetNonSpaceWrap(false) |
||
605 | f.textshadow:ClearAllPoints() |
||
606 | f.textshadow:SetPoint("LEFT", f.textfrost, "RIGHT") |
||
607 | f.textshadow:SetTextColor(.8,0,1) |
||
608 | f.textshadow:SetText("3") |
||
609 | |||
610 | f.textarcane = f:CreateFontString(nil,"ARTWORK") |
||
611 | f.textarcane:SetFontObject(GameFontHighlight) |
||
612 | f.textarcane:SetWidth(30) |
||
613 | f.textarcane:SetHeight(16) |
||
614 | f.textarcane:SetJustifyH("RIGHT") |
||
615 | f.textarcane:SetNonSpaceWrap(false) |
||
616 | f.textarcane:ClearAllPoints() |
||
617 | f.textarcane:SetPoint("LEFT", f.textshadow, "RIGHT") |
||
618 | f.textarcane:SetTextColor(1,1,1) |
||
619 | f.textarcane:SetText("3") |
||
620 | |||
621 | return f |
||
622 | end |
||
623 | |||
624 | function oRALResist:UpdateScrollBar() |
||
625 | local i,j |
||
626 | local entries = table.getn(self.resists) |
||
627 | FauxScrollFrame_Update(self.frames.sframe, entries, 15, 16) |
||
628 | |||
629 | for i = 1, 15 do |
||
630 | j = i + FauxScrollFrame_GetOffset(self.frames.sframe) |
||
631 | |||
632 | if j <= entries then |
||
633 | self.frames.entry[i].textname:SetText(self.resists[j][1]) |
||
634 | self.frames.entry[i].textfire:SetText(self.resists[j][2]) |
||
635 | self.frames.entry[i].textnature:SetText(self.resists[j][3]) |
||
636 | self.frames.entry[i].textfrost:SetText(self.resists[j][4]) |
||
637 | self.frames.entry[i].textshadow:SetText(self.resists[j][5]) |
||
638 | self.frames.entry[i].textarcane:SetText(self.resists[j][6]) |
||
639 | self.frames.entry[i]:Show() |
||
640 | else |
||
641 | self.frames.entry[i]:Hide() |
||
642 | end |
||
643 | end |
||
644 | |||
645 | end |
||
646 | |||
647 | ---------------------- |
||
648 | -- Command Handlers -- |
||
649 | ---------------------- |
||
650 | |||
651 | function oRALResist:PerformResistanceCheck() |
||
652 | if not self:IsPromoted() then return end |
||
653 | reclaimtable(self.resists) |
||
654 | self.resists = nil |
||
655 | self.resists = getnewtable() |
||
656 | self:SendMessage("RSTC") |
||
657 | self.frames.main:Show() |
||
658 | self:UpdateScrollBar() |
||
659 | end |
||
660 | |||
661 | |||
662 | function oRALResist:Sort(tbl, sortBy) |
||
663 | table.sort(tbl, |
||
664 | function(t1, t2) |
||
665 | if (t1[sortBy] == t2[sortBy] ) then |
||
666 | return t1[1] < t2[1] |
||
667 | else |
||
668 | return t1[sortBy] > t2[sortBy] |
||
669 | end |
||
670 | end |
||
671 | ) |
||
672 | end |
||
673 |