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("oRALItem") |
||
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 | -- DO NOT translate these, use the locale tables below |
||
15 | local reagents = { |
||
16 | ["PRIEST"] = "SacredCandle", |
||
17 | ["MAGE"] = "ArcanePowder", |
||
18 | ["DRUID"] = "WildThornroot", |
||
19 | ["WARLOCK"] = "SoulShard", |
||
20 | ["SHAMAN"] = "Ankh", |
||
21 | ["PALADIN"] = "SymbolofDivinity", |
||
22 | ["ROGUE"] = "FlashPowder", |
||
23 | } |
||
24 | |||
25 | ---------------------------- |
||
26 | -- Localization -- |
||
27 | ---------------------------- |
||
28 | |||
29 | L:RegisterTranslations("enUS", function() return { |
||
30 | ["itemleader"] = true, |
||
31 | ["item"] = true, |
||
32 | ["Options for item checks."] = true, |
||
33 | ["SacredCandle"] = "Sacred Candle", |
||
34 | ["ArcanePowder"] = "Arcane Powder", |
||
35 | ["WildThornroot"] = "Wild Thornroot", |
||
36 | ["Ankh"] = "Ankh", |
||
37 | ["SymbolofDivinity"] = "Symbol of Divinity", |
||
38 | ["FlashPowder"] = "Flash Powder", |
||
39 | ["SoulShard"] = "Soul Shard", |
||
40 | ["Checks Disabled"] = true, |
||
41 | ["Items"] = true, |
||
42 | ["Reagents"] = true, |
||
43 | ["Close"] = true, |
||
44 | ["Refresh"] = true, |
||
45 | ["Name"] = true, |
||
46 | ["Item"] = true, |
||
47 | ["Amount"] = true, |
||
48 | ["Nr"] = true, |
||
49 | ["Perform item check"] = true, |
||
50 | ["Check the raid for an item."] = true, |
||
51 | ["<item>"] = true, |
||
52 | ["Perform reagent check"] = true, |
||
53 | ["Check the raid for reagents."] = true, |
||
54 | ["check"] = true, |
||
55 | ["reagent"] = true, |
||
56 | ["Leader/Item"] = true, |
||
57 | } end ) |
||
58 | |||
59 | L:RegisterTranslations("koKR", function() return { |
||
60 | |||
61 | ["Options for item checks."] = "아이템 확인 설정", |
||
62 | ["SacredCandle"] = "성스러운 양초", |
||
63 | ["ArcanePowder"] = "불가사의한 가루", |
||
64 | ["WildThornroot"] = "야생 가시", |
||
65 | ["Ankh"] = "십자가", |
||
66 | ["SymbolofDivinity"] = "신앙의 징표", |
||
67 | ["FlashPowder"] = "섬광 화약", |
||
68 | ["SoulShard"] = "영혼의 조각", |
||
69 | ["Checks Disabled"] = "확인 사용안함", |
||
70 | ["Items"] = "아이템", |
||
71 | ["Reagents"] = "재료", |
||
72 | ["Close"] = "닫기", |
||
73 | ["Refresh"] = "갱신", |
||
74 | ["Name"] = "이름", |
||
75 | ["Item"] = "아이템", |
||
76 | ["Amount"] = "수량", |
||
77 | ["Nr"] = "갯수", |
||
78 | ["Perform item check"] = "아이템 확인 실시", |
||
79 | ["Check the raid for an item."] = "공격대원의 아이템을 확인합니다.", |
||
80 | ["<item>"] = "<아이템>", |
||
81 | ["Perform reagent check"] = "재료 확인 실시", |
||
82 | ["Check the raid for reagents."] = "공격대원의 재료를 확인합니다.", |
||
83 | ["Leader/Item"] = "공격대장/아이템", |
||
84 | } end ) |
||
85 | |||
86 | L:RegisterTranslations("zhCN", function() return { |
||
87 | ["itemleader"] = "itemleader", |
||
88 | ["item"] = "物品", |
||
89 | ["Options for item checks."] = "物品检查选项", |
||
90 | ["SacredCandle"] = "神圣蜡烛", |
||
91 | ["ArcanePowder"] = "魔粉", |
||
92 | ["WildThornroot"] = "野生棘根草", |
||
93 | ["Ankh"] = "十字章", |
||
94 | ["SymbolofDivinity"] = "神圣符印", |
||
95 | ["FlashPowder"] = "闪光粉", |
||
96 | ["SoulShard"] = "灵魂碎片", |
||
97 | ["Checks Disabled"] = "禁止检查", |
||
98 | ["Items"] = "物品", |
||
99 | ["Reagents"] = "施法材料", |
||
100 | ["Close"] = "关闭", |
||
101 | ["Refresh"] = "刷新", |
||
102 | ["Name"] = "姓名", |
||
103 | ["Item"] = "物品", |
||
104 | ["Amount"] = "数量", |
||
105 | ["Nr"] = "数量", |
||
106 | ["Perform item check"] = "进行物品检查", |
||
107 | ["Check the raid for an item."] = "对团队进行物品检查", |
||
108 | ["<item>"] = "<物品>", |
||
109 | ["Perform reagent check"] = "进行施法材料检查", |
||
110 | ["Check the raid for reagents."] = "对团队进行施法材料检查", |
||
111 | ["check"] = "检查", |
||
112 | ["reagent"] = "施法材料", |
||
113 | ["Leader/Item"] = "Leader/Item", |
||
114 | } end ) |
||
115 | |||
116 | L:RegisterTranslations("zhTW", function() return { |
||
117 | ["itemleader"] = "itemleader", |
||
118 | ["item"] = "物品", |
||
119 | ["Options for item checks."] = "物品檢查選項", |
||
120 | ["SacredCandle"] = "神聖蠟燭", |
||
121 | ["ArcanePowder"] = "魔粉", |
||
122 | ["WildThornroot"] = "野生棘根草", |
||
123 | ["Ankh"] = "十字章", |
||
124 | ["SymbolofDivinity"] = "神聖符印", |
||
125 | ["FlashPowder"] = "閃光粉", |
||
126 | ["SoulShard"] = "靈魂碎片", |
||
127 | ["Checks Disabled"] = "檢查已停用", |
||
128 | ["Items"] = "物品", |
||
129 | ["Reagents"] = "施法材料", |
||
130 | ["Close"] = "關閉", |
||
131 | ["Refresh"] = "更新", |
||
132 | ["Name"] = "姓名", |
||
133 | ["Item"] = "物品", |
||
134 | ["Amount"] = "數量", |
||
135 | ["Nr"] = "數量", |
||
136 | ["Perform item check"] = "進行物品檢查", |
||
137 | ["Check the raid for an item."] = "對團隊進行物品檢查", |
||
138 | ["<item>"] = "<物品>", |
||
139 | ["Perform reagent check"] = "進行施法材料檢查", |
||
140 | ["Check the raid for reagents."] = "對團隊進行施法材料檢查", |
||
141 | ["check"] = "檢查", |
||
142 | ["reagent"] = "施法材料", |
||
143 | ["Leader/Item"] = "Leader/Item", |
||
144 | } end ) |
||
145 | |||
146 | L:RegisterTranslations("deDE", function() return { |
||
147 | ["SacredCandle"] = "Hochheilige Kerze", |
||
148 | ["ArcanePowder"] = "Arkanes Pulver", |
||
149 | ["WildThornroot"] = "Wilder Dornwurz", |
||
150 | ["Ankh"] = "Ankh", |
||
151 | ["SymbolofDivinity"] = "Symbol der Offenbarung", |
||
152 | ["FlashPowder"] = "Blitzstrahlpulver", |
||
153 | ["SoulShard"] = "Seelensplitter", |
||
154 | } end ) |
||
155 | |||
156 | L:RegisterTranslations("frFR", function() return { |
||
157 | --["itemleader"] = true, |
||
158 | --["item"] = true, |
||
159 | ["Options for item checks."] = "Options concernant les v\195\169rifications des objets.", |
||
160 | ["SacredCandle"] = "Bougie sacr\195\169e", |
||
161 | ["ArcanePowder"] = "Poudre des arcanes", |
||
162 | ["WildThornroot"] = "Ronceterre sauvage", |
||
163 | ["Ankh"] = "Ankh", |
||
164 | ["SymbolofDivinity"] = "Symbole de divinit\195\169", |
||
165 | ["FlashPowder"] = "Poudre aveuglante", |
||
166 | ["SoulShard"] = "Fragment d'\195\162me", |
||
167 | ["Checks Disabled"] = "V\195\169rifications d\195\169sactiv\195\169es.", |
||
168 | ["Items"] = "Objets", |
||
169 | ["Reagents"] = "Composants", |
||
170 | ["Close"] = "Fermer", |
||
171 | ["Refresh"] = "Rafra\195\174chir", |
||
172 | ["Name"] = "Nom", |
||
173 | ["Item"] = "Objet", |
||
174 | ["Amount"] = "Quantit\195\169", |
||
175 | ["Nr"] = "N\194\176", |
||
176 | ["Perform item check"] = "V\195\169rifier un objet", |
||
177 | ["Check the raid for an item."] = "V\195\169rifie la disponibilit\195\169 d'un objet dans le raid.", |
||
178 | ["<item>"] = "<objet>", |
||
179 | ["Perform reagent check"] = "V\195\169rifier les composants", |
||
180 | ["Check the raid for reagents."] = "V\195\169rifie les composants du raid.", |
||
181 | --["check"] = true, |
||
182 | --["reagent"] = true, |
||
183 | ["Leader/Item"] = "Chef/Objet", |
||
184 | } end ) |
||
185 | |||
186 | ---------------------------------- |
||
187 | -- Module Declaration -- |
||
188 | ---------------------------------- |
||
189 | |||
190 | oRALItem = oRA:NewModule(L["itemleader"]) |
||
191 | oRALItem.defaults = { |
||
192 | } |
||
193 | oRALItem.leader = true |
||
194 | oRALItem.name = L["Leader/Item"] |
||
195 | oRALItem.consoleCmd = L["item"] |
||
196 | oRALItem.consoleOptions = { |
||
197 | type = "group", |
||
198 | desc = L["Options for item checks."], |
||
199 | name = L["Item"], |
||
200 | args = { |
||
201 | [L["check"]] = { |
||
202 | type="text", name = L["Perform item check"], |
||
203 | desc = L["Check the raid for an item."], |
||
204 | get = false, |
||
205 | set = function(v) |
||
206 | oRALItem:PerformItemCheck(v) |
||
207 | end, |
||
208 | validate = function(v) |
||
209 | return string.find(v, "(.+)") |
||
210 | end, |
||
211 | usage = L["<item>"], |
||
212 | disabled = function() return not oRA:IsModuleActive(oRALItem) or not oRALItem:IsValidRequest() end, |
||
213 | }, |
||
214 | [L["reagent"]] = { |
||
215 | type="execute", name = L["Perform reagent check"], |
||
216 | desc = L["Check the raid for reagents."], |
||
217 | func = function() |
||
218 | oRALItem:PerformReagentCheck() |
||
219 | end, |
||
220 | disabled = function() return not oRA:IsModuleActive(oRALItem) or not oRALItem:IsValidRequest() end, |
||
221 | }, |
||
222 | |||
223 | } |
||
224 | } |
||
225 | |||
226 | ------------------------------ |
||
227 | -- Initialization -- |
||
228 | ------------------------------ |
||
229 | |||
230 | function oRALItem:OnEnable() |
||
231 | self.items = getnewtable() |
||
232 | self.sorting = getnewtable() |
||
233 | |||
234 | self.sorting[1] = L["Name"] |
||
235 | self.sorting[2] = L["Item"] |
||
236 | self.sorting[3] = L["Amount"] |
||
237 | |||
238 | self:SetupFrames() |
||
239 | self:RegisterCheck("ITM", "oRA_ItemResponse") |
||
240 | self:RegisterCheck("REA", "oRA_ReagentResponse") |
||
241 | |||
242 | self:RegisterShorthand("raitem", function(item) self:PerformItemCheck(item) end ) |
||
243 | self:RegisterShorthand("rareg", function() self:PerformReagentCheck() end ) |
||
244 | end |
||
245 | |||
246 | function oRALItem:OnDisable() |
||
247 | self:UnregisterAllEvents() |
||
248 | |||
249 | self:UnregisterCheck("ITM") |
||
250 | self:UnregisterCheck("REA") |
||
251 | |||
252 | self:UnregisterShorthand("raitem") |
||
253 | self:UnregisterShorthand("rareg") |
||
254 | |||
255 | reclaimtable( self.items ) |
||
256 | self.items = nil |
||
257 | reclaimtable( self.sorting ) |
||
258 | self.sorting = nil |
||
259 | end |
||
260 | |||
261 | |||
262 | function oRALItem:oRA_ItemResponse( msg, author) |
||
263 | if not self:IsValidRequest(author, true) then return end |
||
264 | msg = self:CleanMessage(msg) |
||
265 | local _,_,numitems,itemname,requestby = string.find(msg, "^ITM ([-%d]+) (.+) ([^%s]+)$") |
||
266 | if numitems and itemname and requestby and requestby == UnitName("player") then |
||
267 | numitems = tonumber(numitems) |
||
268 | if numitems == -1 then |
||
269 | self:AddPlayer( author, L["Checks Disabled"], 0 ) |
||
270 | else |
||
271 | self:AddPlayer( author, itemname, numitems ) |
||
272 | end |
||
273 | self:UpdateScrollBar() |
||
274 | end |
||
275 | |||
276 | end |
||
277 | |||
278 | function oRALItem:oRA_ReagentResponse( msg, author) |
||
279 | msg = self:CleanMessage(msg) |
||
280 | local _,_,numitems,requestby = string.find(msg, "^REA ([^%s]+) ([^%s]+)$") |
||
281 | if numitems and requestby and requestby == UnitName("player") then |
||
282 | numitems = tonumber(numitems) |
||
283 | for i = 1, GetNumRaidMembers(), 1 do |
||
284 | local rostername, _, _, _, _, _, _, _, _ = GetRaidRosterInfo(i) |
||
285 | if rostername==author then |
||
286 | if UnitClass("raid"..i) then |
||
287 | local _,class = UnitClass("raid"..i) |
||
288 | if reagents[class] then |
||
289 | self:AddPlayer( author, L[reagents[class]], numitems ) |
||
290 | self:UpdateScrollBar() |
||
291 | end |
||
292 | end |
||
293 | end |
||
294 | end |
||
295 | |||
296 | end |
||
297 | end |
||
298 | |||
299 | --------------------------- |
||
300 | -- Utility Functions -- |
||
301 | --------------------------- |
||
302 | |||
303 | function oRALItem:AddPlayer( nick, item, amount ) |
||
304 | local update, i |
||
305 | for i=1, 40, 1 do |
||
306 | if (self.items[i] and self.items[i][1] == nick) then |
||
307 | update = i |
||
308 | end |
||
309 | end |
||
310 | if (update) then |
||
311 | self.items[update][3] = amount or 0 |
||
312 | else |
||
313 | table.insert(self.items,{nick, item, amount or 0}) |
||
314 | end |
||
315 | end |
||
316 | |||
317 | function oRALItem:SetupFrames() |
||
318 | local f, t, sframe, i, j |
||
319 | |||
320 | f, _, _ = GameFontNormal:GetFont() |
||
321 | |||
322 | self.frames = {} |
||
323 | |||
324 | self.frames.main = CreateFrame("Frame", "oRAItemReportFrame", UIParent) |
||
325 | self.frames.main:Hide() |
||
326 | self.frames.main:SetWidth(325) |
||
327 | self.frames.main:SetHeight(350) |
||
328 | self.frames.main:EnableMouse(true) |
||
329 | self.frames.main:SetMovable(true) |
||
330 | self.frames.main:RegisterForDrag("LeftButton") |
||
331 | self.frames.main:SetScript("OnDragStart", function() this:StartMoving() end) |
||
332 | self.frames.main:SetScript("OnDragStop", function() this:StopMovingOrSizing() end) |
||
333 | self.frames.main:SetBackdrop({ |
||
334 | bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16, |
||
335 | edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16, |
||
336 | insets = {left = 4, right = 4, top = 4, bottom = 4}, |
||
337 | }) |
||
338 | self.frames.main:SetBackdropBorderColor(.5, .5, .5) |
||
339 | self.frames.main:SetBackdropColor(0,0,0) |
||
340 | self.frames.main:ClearAllPoints() |
||
341 | self.frames.main:SetPoint("CENTER", WorldFrame, "CENTER", 0, 0) |
||
342 | |||
343 | self.frames.fade = self.frames.main:CreateTexture(nil, "BORDER") |
||
344 | self.frames.fade:SetWidth(319) |
||
345 | self.frames.fade:SetHeight(25) |
||
346 | self.frames.fade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
347 | self.frames.fade:SetPoint("TOP", self.frames.main, "TOP", 0, -4) |
||
348 | self.frames.fade:SetBlendMode("ADD") |
||
349 | self.frames.fade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1) |
||
350 | self.frames.main.Fade = self.frames.fade |
||
351 | |||
352 | self.frames.header = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
353 | self.frames.header:SetFont(f, 14) |
||
354 | self.frames.header:SetWidth(300) |
||
355 | self.frames.header:SetText("Durability") |
||
356 | self.frames.header:SetTextColor(1, .8, 0) |
||
357 | self.frames.header:ClearAllPoints() |
||
358 | self.frames.header:SetPoint("TOP", self.frames.main, "TOP", 0, -10) |
||
359 | |||
360 | self.frames.headername = CreateFrame("Button", nil, self.frames.main) |
||
361 | self.frames.headername.owner = self |
||
362 | self.frames.headername:SetWidth(125) |
||
363 | self.frames.headername:SetHeight(16) |
||
364 | self.frames.headername:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -35) |
||
365 | self.frames.headername:SetScript("OnClick", |
||
366 | function() |
||
367 | this.owner:Sort(self.items, 1) |
||
368 | this.owner:UpdateScrollBar() |
||
369 | end) |
||
370 | |||
371 | self.frames.headernamehigh = self.frames.headername:CreateTexture(nil, "BORDER") |
||
372 | self.frames.headernamehigh:SetWidth(125) |
||
373 | self.frames.headernamehigh:SetHeight(16) |
||
374 | self.frames.headernamehigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
375 | self.frames.headernamehigh:SetAllPoints(self.frames.headername) |
||
376 | self.frames.headernamehigh:SetBlendMode("ADD") |
||
377 | self.frames.headernamehigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
378 | self.frames.headername:SetHighlightTexture(self.frames.headernamehigh) |
||
379 | |||
380 | self.frames.headernametext = self.frames.headername:CreateFontString(nil,"OVERLAY") |
||
381 | self.frames.headernametext.owner = self |
||
382 | self.frames.headernametext:SetFont(f, 14) |
||
383 | self.frames.headernametext:SetWidth(125) |
||
384 | self.frames.headernametext:SetText(L["Name"]) |
||
385 | self.frames.headernametext:SetTextColor(1, .8, 0) |
||
386 | self.frames.headernametext:ClearAllPoints() |
||
387 | self.frames.headernametext:SetJustifyH("LEFT") |
||
388 | self.frames.headernametext:SetAllPoints(self.frames.headername) |
||
389 | |||
390 | self.frames.headeritem = CreateFrame("Button", nil, self.frames.main) |
||
391 | self.frames.headeritem.owner = self |
||
392 | self.frames.headeritem:SetWidth(125) |
||
393 | self.frames.headeritem:SetHeight(16) |
||
394 | self.frames.headeritem:SetPoint("LEFT", self.frames.headername, "RIGHT") |
||
395 | self.frames.headeritem:SetScript("OnClick", |
||
396 | function() |
||
397 | this.owner:Sort(self.items, 2) |
||
398 | this.owner:UpdateScrollBar() |
||
399 | end) |
||
400 | |||
401 | self.frames.headeritemhigh = self.frames.headeritem:CreateTexture(nil, "BORDER") |
||
402 | self.frames.headeritemhigh:SetWidth(125) |
||
403 | self.frames.headeritemhigh:SetHeight(16) |
||
404 | self.frames.headeritemhigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
405 | self.frames.headeritemhigh:SetAllPoints(self.frames.headeritem) |
||
406 | self.frames.headeritemhigh:SetBlendMode("ADD") |
||
407 | self.frames.headeritemhigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
408 | self.frames.headeritem:SetHighlightTexture(self.frames.headeritemhigh) |
||
409 | |||
410 | |||
411 | self.frames.headeritemtext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
412 | self.frames.headeritemtext:SetFont(f, 14) |
||
413 | self.frames.headeritemtext:SetWidth(125) |
||
414 | self.frames.headeritemtext:SetText(L["Item"]) |
||
415 | self.frames.headeritemtext:SetTextColor(1, .8, 0) |
||
416 | self.frames.headeritemtext:ClearAllPoints() |
||
417 | self.frames.headeritemtext:SetJustifyH("LEFT") |
||
418 | self.frames.headeritemtext:SetAllPoints(self.frames.headeritem) |
||
419 | |||
420 | self.frames.headeramount = CreateFrame("Button", nil, self.frames.main) |
||
421 | self.frames.headeramount.owner = self |
||
422 | self.frames.headeramount:SetWidth(30) |
||
423 | self.frames.headeramount:SetHeight(16) |
||
424 | self.frames.headeramount:SetPoint("LEFT", self.frames.headeritem, "RIGHT") |
||
425 | self.frames.headeramount:SetScript("OnClick", |
||
426 | function() |
||
427 | this.owner:Sort(self.items, 3) |
||
428 | this.owner:UpdateScrollBar() |
||
429 | end) |
||
430 | |||
431 | self.frames.headeramounthigh = self.frames.headeramount:CreateTexture(nil, "BORDER") |
||
432 | self.frames.headeramounthigh:SetWidth(30) |
||
433 | self.frames.headeramounthigh:SetHeight(16) |
||
434 | self.frames.headeramounthigh:SetTexture("Interface\\ChatFrame\\ChatFrameBackground") |
||
435 | self.frames.headeramounthigh:SetAllPoints(self.frames.headeramount) |
||
436 | self.frames.headeramounthigh:SetBlendMode("ADD") |
||
437 | self.frames.headeramounthigh:SetGradientAlpha("VERTICAL", .1, .08, 0, 0, .2, .16, 0, 1) |
||
438 | self.frames.headeramount:SetHighlightTexture(self.frames.headeramounthigh) |
||
439 | |||
440 | |||
441 | self.frames.headeramounttext = self.frames.main:CreateFontString(nil,"OVERLAY") |
||
442 | self.frames.headeramounttext.owner = self |
||
443 | self.frames.headeramounttext:SetFont(f, 14) |
||
444 | self.frames.headeramounttext:SetWidth(30) |
||
445 | self.frames.headeramounttext:SetText(L["Nr"]) |
||
446 | self.frames.headeramounttext:SetTextColor(1, .8, 0) |
||
447 | self.frames.headeramounttext:ClearAllPoints() |
||
448 | self.frames.headeramounttext:SetJustifyH("LEFT") |
||
449 | self.frames.headeramounttext:SetAllPoints(self.frames.headeramount) |
||
450 | |||
451 | |||
452 | |||
453 | |||
454 | self.frames.leftbutton = CreateFrame("Button", nil, self.frames.main) |
||
455 | self.frames.leftbutton.owner = self |
||
456 | self.frames.leftbutton:SetWidth(125) |
||
457 | self.frames.leftbutton:SetHeight(32) |
||
458 | self.frames.leftbutton:SetPoint("BOTTOMRIGHT", self.frames.main, "BOTTOM", -10, 10) |
||
459 | |||
460 | t = self.frames.leftbutton:CreateTexture() |
||
461 | t:SetWidth(125) |
||
462 | t:SetHeight(32) |
||
463 | t:SetPoint("CENTER", self.frames.leftbutton, "CENTER") |
||
464 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
465 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
466 | self.frames.leftbutton:SetNormalTexture(t) |
||
467 | |||
468 | t = self.frames.leftbutton:CreateTexture(nil, "BACKGROUND") |
||
469 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
470 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
471 | t:SetAllPoints(self.frames.leftbutton) |
||
472 | self.frames.leftbutton:SetPushedTexture(t) |
||
473 | |||
474 | t = self.frames.leftbutton:CreateTexture() |
||
475 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
476 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
477 | t:SetAllPoints(self.frames.leftbutton) |
||
478 | t:SetBlendMode("ADD") |
||
479 | self.frames.leftbutton:SetHighlightTexture(t) |
||
480 | self.frames.leftbuttontext = self.frames.leftbutton:CreateFontString(nil,"OVERLAY") |
||
481 | self.frames.leftbuttontext:SetFontObject(GameFontHighlight) |
||
482 | self.frames.leftbuttontext:SetText(L["Refresh"]) |
||
483 | self.frames.leftbuttontext:SetAllPoints(self.frames.leftbutton) |
||
484 | |||
485 | self.frames.leftbutton:SetScript("OnClick", |
||
486 | function() |
||
487 | this.owner:PerformItemCheck() |
||
488 | end) |
||
489 | |||
490 | self.frames.rightbutton = CreateFrame("Button", nil, self.frames.main) |
||
491 | self.frames.rightbutton.owner = self |
||
492 | self.frames.rightbutton:SetWidth(125) |
||
493 | self.frames.rightbutton:SetHeight(32) |
||
494 | self.frames.rightbutton:SetPoint("BOTTOMLEFT", self.frames.main, "BOTTOM", 10, 10) |
||
495 | |||
496 | t = self.frames.rightbutton:CreateTexture() |
||
497 | t:SetWidth(125) |
||
498 | t:SetHeight(32) |
||
499 | t:SetPoint("CENTER", self.frames.rightbutton, "CENTER") |
||
500 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up") |
||
501 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
502 | self.frames.rightbutton:SetNormalTexture(t) |
||
503 | |||
504 | t = self.frames.rightbutton:CreateTexture(nil, "BACKGROUND") |
||
505 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down") |
||
506 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
507 | t:SetAllPoints(self.frames.rightbutton) |
||
508 | self.frames.rightbutton:SetPushedTexture(t) |
||
509 | |||
510 | t = self.frames.rightbutton:CreateTexture() |
||
511 | t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight") |
||
512 | t:SetTexCoord(0, 0.625, 0, 0.6875) |
||
513 | t:SetAllPoints(self.frames.rightbutton) |
||
514 | t:SetBlendMode("ADD") |
||
515 | self.frames.rightbutton:SetHighlightTexture(t) |
||
516 | self.frames.rightbuttontext = self.frames.rightbutton:CreateFontString(nil,"OVERLAY") |
||
517 | self.frames.rightbuttontext:SetFontObject(GameFontHighlight) |
||
518 | self.frames.rightbuttontext:SetText(L["Close"]) |
||
519 | self.frames.rightbuttontext:SetAllPoints(self.frames.rightbutton) |
||
520 | |||
521 | self.frames.rightbutton:SetScript("OnClick", |
||
522 | function() |
||
523 | this.owner.frames.main:Hide() |
||
524 | end) |
||
525 | |||
526 | |||
527 | self.frames.entry = {} |
||
528 | self.frames.entry[1] = self:ScrollEntryFrame(1) |
||
529 | self.frames.entry[1]:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 10, -55 ) |
||
530 | |||
531 | for i=2, 15 do |
||
532 | j = i - 1 |
||
533 | self.frames.entry[i] = self:ScrollEntryFrame() |
||
534 | self.frames.entry[i]:SetPoint("TOPLEFT", self.frames.entry[j], "BOTTOMLEFT") |
||
535 | end |
||
536 | |||
537 | |||
538 | self.frames.sframe = CreateFrame("ScrollFrame", "oRAItemScrollFrame", self.frames.main, "FauxScrollFrameTemplate") |
||
539 | self.frames.sframe.owner = self |
||
540 | self.frames.sframe:SetWidth(285) |
||
541 | self.frames.sframe:SetHeight(240) |
||
542 | self.frames.sframe:SetPoint("TOPLEFT", self.frames.main, "TOPLEFT", 5, -55) |
||
543 | |||
544 | self.frames.sframe:SetScript("OnVerticalScroll", |
||
545 | function() |
||
546 | FauxScrollFrame_OnVerticalScroll(16, function() this.owner:UpdateScrollBar() end) |
||
547 | end ) |
||
548 | |||
549 | end |
||
550 | |||
551 | function oRALItem:ScrollEntryFrame() |
||
552 | local f = CreateFrame("Button", nil, self.frames.main ) |
||
553 | f:SetWidth(240) |
||
554 | f:SetHeight(16) |
||
555 | |||
556 | f.textname = f:CreateFontString(nil,"ARTWORK") |
||
557 | f.textname:SetFontObject(GameFontHighlight) |
||
558 | f.textname:SetWidth(125) |
||
559 | f.textname:SetHeight(16) |
||
560 | f.textname:SetJustifyH("LEFT") |
||
561 | f.textname:SetNonSpaceWrap(false) |
||
562 | f.textname:ClearAllPoints() |
||
563 | f.textname:SetPoint( "LEFT", f, "LEFT") |
||
564 | f.textname:SetTextColor(1,1,1) |
||
565 | f.textname:SetText(L["Name"]) |
||
566 | |||
567 | f.textitem = f:CreateFontString(nil,"ARTWORK") |
||
568 | f.textitem:SetFontObject(GameFontHighlight) |
||
569 | f.textitem:SetWidth(125) |
||
570 | f.textitem:SetHeight(16) |
||
571 | f.textitem:SetJustifyH("LEFT") |
||
572 | f.textitem:SetNonSpaceWrap(false) |
||
573 | f.textitem:ClearAllPoints() |
||
574 | f.textitem:SetPoint("LEFT", f.textname, "RIGHT") |
||
575 | f.textitem:SetTextColor(1,1,1) |
||
576 | f.textitem:SetText("125") |
||
577 | |||
578 | f.textamount = f:CreateFontString(nil,"ARTWORK") |
||
579 | f.textamount:SetFontObject(GameFontHighlight) |
||
580 | f.textamount:SetWidth(30) |
||
581 | f.textamount:SetHeight(16) |
||
582 | f.textamount:SetJustifyH("RIGHT") |
||
583 | f.textamount:SetNonSpaceWrap(false) |
||
584 | f.textamount:ClearAllPoints() |
||
585 | f.textamount:SetPoint("LEFT", f.textitem, "RIGHT") |
||
586 | f.textamount:SetTextColor(1,1,1) |
||
587 | f.textamount:SetText("3") |
||
588 | |||
589 | return f |
||
590 | end |
||
591 | |||
592 | function oRALItem:UpdateScrollBar() |
||
593 | local i,j |
||
594 | local entries = table.getn(self.items) |
||
595 | FauxScrollFrame_Update(self.frames.sframe, entries, 15, 16) |
||
596 | |||
597 | for i = 1, 15 do |
||
598 | j = i + FauxScrollFrame_GetOffset(self.frames.sframe) |
||
599 | |||
600 | if j <= entries then |
||
601 | self.frames.entry[i].textname:SetText(self.items[j][1]) |
||
602 | self.frames.entry[i].textitem:SetText(self.items[j][2]) |
||
603 | self.frames.entry[i].textamount:SetText(self.items[j][3]) |
||
604 | self.frames.entry[i]:Show() |
||
605 | else |
||
606 | self.frames.entry[i]:Hide() |
||
607 | end |
||
608 | end |
||
609 | end |
||
610 | |||
611 | -------------------------- |
||
612 | -- Command Handlers -- |
||
613 | -------------------------- |
||
614 | |||
615 | function oRALItem:PerformItemCheck( item ) |
||
616 | if not self:IsPromoted() then return end |
||
617 | local _, _, linkName = string.find(item, "%[(.+)%]") |
||
618 | if ( linkName ) then |
||
619 | item = linkName |
||
620 | end |
||
621 | self.item = item |
||
622 | |||
623 | reclaimtable(self.items) |
||
624 | self.items = nil |
||
625 | self.items = getnewtable() |
||
626 | |||
627 | self:SendMessage( "ITMC "..item ) |
||
628 | |||
629 | self.frames.header:SetText(L["Items"]) |
||
630 | self.frames.leftbutton:SetScript("OnClick", |
||
631 | function() |
||
632 | this.owner:PerformItemCheck( self.item ) |
||
633 | end) |
||
634 | local i |
||
635 | for i=1, 40 do |
||
636 | if UnitExists("raid" .. i) then |
||
637 | self:AddPlayer(UnitName("raid" .. i), item) |
||
638 | end |
||
639 | end |
||
640 | |||
641 | self.frames.main:Show() |
||
642 | self:UpdateScrollBar() |
||
643 | end |
||
644 | |||
645 | function oRALItem:PerformReagentCheck() |
||
646 | if not self:IsPromoted() then return end |
||
647 | |||
648 | reclaimtable(self.items) |
||
649 | self.items = nil |
||
650 | self.items = getnewtable() |
||
651 | |||
652 | self:SendMessage( "REAC" ) |
||
653 | self.frames.header:SetText(L["Reagents"]) |
||
654 | self.frames.leftbutton:SetScript("OnClick", |
||
655 | function() |
||
656 | this.owner:PerformReagentCheck() |
||
657 | end) |
||
658 | self.frames.main:Show() |
||
659 | self:UpdateScrollBar() |
||
660 | end |
||
661 | |||
662 | |||
663 | function oRALItem:Sort( tbl, sortBy ) |
||
664 | table.sort(tbl, |
||
665 | function(t1, t2) |
||
666 | if (t1[sortBy] == t2[sortBy] ) then |
||
667 | return t1[1] < t2[1] |
||
668 | else |
||
669 | return t1[sortBy] > t2[sortBy] |
||
670 | end |
||
671 | end |
||
672 | ) |
||
673 | end |
||
674 |