comparison core.lua @ 93:ea20a28327b5

More tweaks in preparation for MoP.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Wed, 18 Jul 2012 07:42:16 +0000
parents 01cfbfa96dd6
children db1d5d09e5f5
comparison
equal deleted inserted replaced
92:01cfbfa96dd6 93:ea20a28327b5
325 -- Class color support. Do the expensive string.format calls up front, and 325 -- Class color support. Do the expensive string.format calls up front, and
326 -- the cheap all-string-all-at-once single-op concatenation as needed. 326 -- the cheap all-string-all-at-once single-op concatenation as needed.
327 do 327 do
328 local cc = {} 328 local cc = {}
329 local function extract (color_info) 329 local function extract (color_info)
330 local hex = ("|cff%.2x%.2x%.2x"):format(255*color_info.r, 330 local hex
331 255*color_info.g, 255*color_info.b) 331 if color_info.colorStr then -- MoP
332 hex = "|c" .. color_info.colorStr
333 else -- pre-MoP
334 hex = ("|cff%.2x%.2x%.2x"):format(255*color_info.r,
335 255*color_info.g, 255*color_info.b)
336 end
332 return { r=color_info.r, g=color_info.g, b=color_info.b, a=1, hex=hex } 337 return { r=color_info.r, g=color_info.g, b=color_info.b, a=1, hex=hex }
333 end 338 end
334 local function fill_out_class_colors() 339 local function fill_out_class_colors()
335 for class,color in pairs(CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS) do 340 for class,color in pairs(CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS) do
336 cc[class] = extract(color) 341 cc[class] = extract(color)
338 cc.DEFAULT = extract(_G.NORMAL_FONT_COLOR) 343 cc.DEFAULT = extract(_G.NORMAL_FONT_COLOR)
339 end 344 end
340 if CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS.RegisterCallback then 345 if CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS.RegisterCallback then
341 CUSTOM_CLASS_COLORS:RegisterCallback(fill_out_class_colors) 346 CUSTOM_CLASS_COLORS:RegisterCallback(fill_out_class_colors)
342 end 347 end
343 fill_out_class_colors() 348 addon.class_colors = cc -- this stays around
344 addon.class_colors = cc 349 addon.fill_out_class_colors = fill_out_class_colors -- this doesn't
350
345 -- What I really want is to have the hooked :Print understand a special 351 -- What I really want is to have the hooked :Print understand a special
346 -- format specifier like "%Cs" and do the colorizing automatically. 352 -- format specifier like "%Cs" and do the colorizing automatically.
347 function addon:colorize (text, class) 353 function addon:colorize (text, class)
348 return ((class and cc[class]) or cc.DEFAULT).hex .. text .. "|r" 354 return ((class and cc[class]) or cc.DEFAULT).hex .. text .. "|r"
349 end 355 end
377 local wipe = _G.table.wipe 383 local wipe = _G.table.wipe
378 384
379 local pprint, tabledump = addon.pprint, flib.tabledump 385 local pprint, tabledump = addon.pprint, flib.tabledump
380 local CopyTable = _G.CopyTable 386 local CopyTable = _G.CopyTable
381 local GetNumRaidMembers = _G.GetNumGroupMembers or _G.GetNumRaidMembers 387 local GetNumRaidMembers = _G.GetNumGroupMembers or _G.GetNumRaidMembers
388 local IsInRaid = _G.IsInRaid or (function() return GetNumRaidMembers() > 0 end)
382 -- En masse forward decls of symbols defined inside local blocks 389 -- En masse forward decls of symbols defined inside local blocks
383 local _register_bossmod, makedate, create_new_cache, _init, _log 390 local _register_bossmod, makedate, create_new_cache, _init, _log
384 local _history_by_loot_id, _setup_unique_replace, _unavoidable_collision 391 local _history_by_loot_id, _setup_unique_replace, _unavoidable_collision
385 local _notify_about_change, _notify_about_remote 392 local _notify_about_change, _notify_about_remote
386 393
499 if typeof == "none" then return name, MAX_RAID_MEMBERS end 506 if typeof == "none" then return name, MAX_RAID_MEMBERS end
500 -- diffstr is "5 Player", "10 Player (Heroic)", etc. ugh. 507 -- diffstr is "5 Player", "10 Player (Heroic)", etc. ugh.
501 if (GetLFGMode()) and (GetLFGModeType() == 'raid') then 508 if (GetLFGMode()) and (GetLFGModeType() == 'raid') then
502 t,r = 'LFR', 25 509 t,r = 'LFR', 25
503 elseif diffcode == 1 then 510 elseif diffcode == 1 then
504 if GetNumRaidMembers() > 0 then 511 if IsInRaid() then
505 t,r = "10",10 512 t,r = "10",10
506 else 513 else
507 t,r = "5",5 514 t,r = "5",5
508 end 515 end
509 elseif diffcode == 2 then 516 elseif diffcode == 2 then
510 if GetNumRaidMembers() > 0 then 517 if IsInRaid() then
511 t,r = "25",25 518 t,r = "25",25
512 else 519 else
513 t,r = "5h",5 520 t,r = "5h",5
514 end 521 end
515 elseif diffcode == 3 then 522 elseif diffcode == 3 then
916 return AC:Print (frame, chat_prefix_s, str, ...) 923 return AC:Print (frame, chat_prefix_s, str, ...)
917 end 924 end
918 end 925 end
919 end 926 end
920 927
928 -- Copy these over once, now that other addons have mostly loaded. Any
929 -- future tweaks via CUSTOM_CLASS_COLORS will trigger the same callback.
930 if addon.fill_out_class_colors then
931 addon.fill_out_class_colors()
932 addon.fill_out_class_colors = nil
933 end
934
921 while opts.keybinding do 935 while opts.keybinding do
922 if InCombatLockdown() then 936 if InCombatLockdown() then
923 local reload = self.format_hypertext ([[the options tab]], 937 local reload = self.format_hypertext ([[the options tab]],
924 ITEM_QUALITY_UNCOMMON, 'opt') 938 ITEM_QUALITY_UNCOMMON, 'opt')
925 self:Print("Cannot create '%s' as a keybinding while in combat!", 939 self:Print("Cannot create '%s' as a keybinding while in combat!",
1709 self.dprint('flow', ":Activate is running") 1723 self.dprint('flow', ":Activate is running")
1710 self:RegisterEvent(RAID_ROSTER_UPDATE_EVENT,"RAID_ROSTER_UPDATE") 1724 self:RegisterEvent(RAID_ROSTER_UPDATE_EVENT,"RAID_ROSTER_UPDATE")
1711 self:RegisterEvent("PLAYER_ENTERING_WORLD", 1725 self:RegisterEvent("PLAYER_ENTERING_WORLD",
1712 function() self:ScheduleTimer("RAID_ROSTER_UPDATE", 5, "PLAYER_ENTERING_WORLD") end) 1726 function() self:ScheduleTimer("RAID_ROSTER_UPDATE", 5, "PLAYER_ENTERING_WORLD") end)
1713 self.popped = true 1727 self.popped = true
1714 if GetNumRaidMembers() > 0 then 1728 if IsInRaid() then
1715 self.dprint('flow', ">:Activate calling RRU") 1729 self.dprint('flow', ">:Activate calling RRU")
1716 self:RAID_ROSTER_UPDATE("Activate") 1730 self:RAID_ROSTER_UPDATE("Activate")
1717 elseif self.debug.notraid then 1731 elseif self.debug.notraid then
1718 self.dprint('flow', ">:(notraid) Activate registering loot and bossmods") 1732 self.dprint('flow', ">:(notraid) Activate registering loot and bossmods")
1719 self:RegisterEvent("CHAT_MSG_LOOT") 1733 self:RegisterEvent("CHAT_MSG_LOOT")
1923 self:broadcast('ping') 1937 self:broadcast('ping')
1924 self:broadcast('revcheck',version_large) 1938 self:broadcast('revcheck',version_large)
1925 end 1939 end
1926 1940
1927 function addon:_check_version (otherrev) 1941 function addon:_check_version (otherrev)
1928 self.dprint('comm', "revchecking against", otherrev) 1942 self.dprint('comm', version_large, "revchecking against", otherrev)
1929 otherrev = tonumber(otherrev) 1943 otherrev = tonumber(otherrev)
1930 if otherrev == version_large then 1944 if otherrev == version_large then
1931 -- normal case 1945 -- normal case
1932 1946
1933 elseif otherrev < version_large then 1947 elseif otherrev < version_large then