comparison core.lua @ 78:f8118aa5fbb8

Manually inserting loot entries now (1) uses autocomplete dropdowns for the recipient name (raid members if in a raid, online guild members otherwise), and (2) adds a rebroadcasting hyperlink to the text response. Clicking the link rebroadcasts just like the context menu.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Tue, 12 Jun 2012 03:46:00 +0000
parents a07c9dd79f3a
children 0235a1695b83
comparison
equal deleted inserted replaced
77:a07c9dd79f3a 78:f8118aa5fbb8
380 380
381 -- TEXT will automatically be surrounded by brackets 381 -- TEXT will automatically be surrounded by brackets
382 -- COLOR can be ITEM_QUALITY_* or a formatting string ("|cff...") 382 -- COLOR can be ITEM_QUALITY_* or a formatting string ("|cff...")
383 -- FUNC can be "MethodName", "tab_title", or a function 383 -- FUNC can be "MethodName", "tab_title", or a function
384 -- 384 --
385 -- Returns an obaque token. Calling tostring() on the token will yield a 385 -- Returns an opaque token and a matching number. Calling tostring() on
386 -- formatted clickable string that can be displayed in chat. This is 386 -- the token will yield a formatted clickable string that can be displayed
387 -- largely an excuse to fool around with Lua data constructs. 387 -- in chat. The MethodName and raw function callbacks will both be
388 -- passed the addon table and the same matching number.
389 --
390 -- This is largely an excuse to fool around with Lua data constructs.
388 function addon.format_hypertext (text, color, func) 391 function addon.format_hypertext (text, color, func)
389 local ret = _G.newproxy(base) 392 local ret = _G.newproxy(base)
390 local num = #text_map + 1 393 local num = #text_map + 1
391 text_map[ret] = hypertext_format_str:format (num, 394 text_map[ret] = hypertext_format_str:format (num,
392 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color, 395 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color,
393 text) 396 text)
394 text_map[num] = ret 397 text_map[num] = ret
395 func_map[ret] = func 398 func_map[ret] = func
396 return ret 399 return ret, num
397 end 400 end
398 401
399 --[[ 402 --[[
400 link: OuroLoot:n 403 link: OuroLoot:n
401 fullstring: |HOuroLoot:n|h|cff.....[foo]|r|h 404 fullstring: |HOuroLoot:n|h|cff.....[foo]|r|h
406 ]] 409 ]]
407 local strsplit = _G.strsplit 410 local strsplit = _G.strsplit
408 DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", function(self, link, fullstring, mousebutton) 411 DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", function(self, link, fullstring, mousebutton)
409 local ltype, arg = strsplit(":",link) 412 local ltype, arg = strsplit(":",link)
410 if ltype ~= "OuroLoot" then return end 413 if ltype ~= "OuroLoot" then return end
411 local f = func_map[text_map[tonumber(arg)]] 414 arg = tonumber(arg)
415 local f = func_map[text_map[arg]]
412 if type(f) == 'function' then 416 if type(f) == 'function' then
413 f() 417 f (addon, arg)
414 elseif type(f) == 'string' then 418 elseif type(f) == 'string' then
415 if type(addon[f]) == 'function' then 419 if type(addon[f]) == 'function' then
416 addon[f](addon) -- method name 420 addon[f](addon,arg) -- method name
417 else 421 else
418 addon:BuildMainDisplay(f) -- tab title fragment 422 addon:BuildMainDisplay(f) -- tab title fragment
419 end 423 end
420 end 424 end
421 end) 425 end)
1664 if #g_loot == 0 then 1668 if #g_loot == 0 then
1665 -- only generated text and raider join/leave data, not worth verbage 1669 -- only generated text and raider join/leave data, not worth verbage
1666 self.dprint('flow', ">:Activate restored generated texts, un-popping") 1670 self.dprint('flow', ">:Activate restored generated texts, un-popping")
1667 return 1671 return
1668 end 1672 end
1669 self:Print("Ouro Raid Loot restored previous data, but not in a raid", 1673 self:Print("Restored previous data, but not in a raid",
1670 "and 5-player mode not active. |cffff0505NOT tracking loot|r;", 1674 "and 5-player mode not active. |cffff0505NOT tracking loot|r;",
1671 "use 'enable' to activate loot tracking, or 'clear' to erase", 1675 "use 'enable' to activate loot tracking, or 'clear' to erase",
1672 "previous data, or 'help' to read about saved-texts commands.") 1676 "previous data, or 'help' to read about saved-texts commands.")
1673 return 1677 return
1674 end 1678 end
3169 addon:on_boss_broadcast (reason, bossname, instancetag, maxsize) 3173 addon:on_boss_broadcast (reason, bossname, instancetag, maxsize)
3170 end 3174 end
3171 OCR_funcs['17boss'] = OCR_funcs['16boss'] 3175 OCR_funcs['17boss'] = OCR_funcs['16boss']
3172 3176
3173 local bcast_on = addon.format_hypertext ([[the red pill]], '|cffff4040', 3177 local bcast_on = addon.format_hypertext ([[the red pill]], '|cffff4040',
3174 function() 3178 function (self)
3175 if not addon.rebroadcast then 3179 if not self.rebroadcast then
3176 addon:Activate(nil,true) 3180 self:Activate(nil,true)
3177 end 3181 end
3178 addon:broadcast('bcast_responder') 3182 self:broadcast('bcast_responder')
3179 end) 3183 end)
3180 local waferthin = addon.format_hypertext ([[the blue pill]], '|cff0070dd', 3184 local waferthin = addon.format_hypertext ([[the blue pill]], '|cff0070dd',
3181 function() 3185 function (self)
3182 g_wafer_thin = true -- mint? it's wafer thin! 3186 g_wafer_thin = true -- mint? it's wafer thin!
3183 addon:broadcast('bcast_denied') -- fuck off, I'm full 3187 self:broadcast('bcast_denied') -- fuck off, I'm full
3184 end) 3188 end)
3185 OCR_funcs.bcast_req = function (sender) 3189 OCR_funcs.bcast_req = function (sender)
3186 if addon.debug.comm or ((not g_wafer_thin) and (not addon.rebroadcast)) 3190 if addon.debug.comm or ((not g_wafer_thin) and (not addon.rebroadcast))
3187 then 3191 then
3188 addon:Print("%s has requested additional broadcasters! Choose %s to enable rebroadcasting, or %s to remain off and also ignore rebroadcast requests for as long as you're logged in.", 3192 addon:Print("%s has requested additional broadcasters! Choose %s to enable rebroadcasting, or %s to remain off and also ignore rebroadcast requests for as long as you're logged in.",