comparison core.lua @ 86:703bbe61d12d

Proper class coloring in one place.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Thu, 21 Jun 2012 21:14:24 +0000
parents 4771ee8eaa81
children 9fea75b0927b
comparison
equal deleted inserted replaced
85:4771ee8eaa81 86:703bbe61d12d
150 ..[[ will not display a window until this situation is corrected. ]] 150 ..[[ will not display a window until this situation is corrected. ]]
151 ..[[ You can try typing|n|cff00ff40/ouroloot fix ?|n]] 151 ..[[ You can try typing|n|cff00ff40/ouroloot fix ?|n]]
152 ..[[|cffffff00to see what can be done by software alone. You may still]] 152 ..[[|cffffff00to see what can be done by software alone. You may still]]
153 ..[[ need to do a "/reload" afterwards, or even restart the game client.]] 153 ..[[ need to do a "/reload" afterwards, or even restart the game client.]]
154 local unique_collision = "Item '%s' was carrying unique tag <%s>, but that was already in use; tried to generate a new tag and failed!|n|nRemote sender was '%s', previous cache entry was <%s/%s>.|n|nThis may require a live human to figure out; the loot in question has not been stored." 154 local unique_collision = "Item '%s' was carrying unique tag <%s>, but that was already in use; tried to generate a new tag and failed!|n|nRemote sender was '%s', previous cache entry was <%s/%s>.|n|nThis may require a live human to figure out; the loot in question has not been stored."
155 local remote_chatty = "|cff00ff00%s|r changed %d/%s from %s%s|r to %s%s|r" 155 local remote_chatty = "|cff00ff00%s|r changed %d/%s from %s to %s"
156 local qualnames = { 156 local qualnames = {
157 ['gray'] = 0, ['grey'] = 0, ['poor'] = 0, ['trash'] = 0, 157 ['gray'] = 0, ['grey'] = 0, ['poor'] = 0, ['trash'] = 0,
158 ['white'] = 1, ['common'] = 1, 158 ['white'] = 1, ['common'] = 1,
159 ['green'] = 2, ['uncommon'] = 2, 159 ['green'] = 2, ['uncommon'] = 2,
160 ['blue'] = 3, ['rare'] = 3, 160 ['blue'] = 3, ['rare'] = 3,
311 local text = UnitAura('player', i, 'HELPFUL') 311 local text = UnitAura('player', i, 'HELPFUL')
312 text = ([[Cannot initialize while |cff71d5ff|Hspell:88715|h[%s]|h|cff00ff00 is active!]]): 312 text = ([[Cannot initialize while |cff71d5ff|Hspell:88715|h[%s]|h|cff00ff00 is active!]]):
313 format(text) 313 format(text)
314 addon:load_assert(nil,text) 314 addon:load_assert(nil,text)
315 return -- were this C code running through lint, I'd put NOTREACHED 315 return -- were this C code running through lint, I'd put NOTREACHED
316 end
317 end
318
319 -- Class color support. Do the expensive string.format calls up front, and
320 -- the cheap all-string-all-at-once single-op concatenation as needed.
321 do
322 local cc = {}
323 local function extract (color_info)
324 local r = _G.math.floor(255*color_info.r+0.5)
325 local g = _G.math.floor(255*color_info.g+0.5)
326 local b = _G.math.floor(255*color_info.b+0.5)
327 local hex = ("|cff%.2x%.2x%.2x"):format(r,g,b)
328 return { r=r, g=g, b=b, a=1, hex=hex }
329 end
330 local function fill_out_class_colors()
331 for class,color in pairs(CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS) do
332 cc[class] = extract(color)
333 end
334 cc.DEFAULT = extract(_G.NORMAL_FONT_COLOR)
335 end
336 if CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS.RegisterCallback then
337 CUSTOM_CLASS_COLORS:RegisterCallback(fill_out_class_colors)
338 end
339 fill_out_class_colors()
340 addon.class_colors = cc
341 -- What I really want is to have the hooked :Print understand a special
342 -- format specifier like "%Cs" and do the colorizing automatically.
343 function addon:colorize (text, class)
344 return ((class and cc[class]) or cc.DEFAULT).hex .. text .. "|r"
316 end 345 end
317 end 346 end
318 347
319 348
320 ------ Globals 349 ------ Globals
1810 else 1839 else
1811 self:Print("'%s' was not a valid chat frame number/name, no change has been made.", arg) 1840 self:Print("'%s' was not a valid chat frame number/name, no change has been made.", arg)
1812 end 1841 end
1813 end 1842 end
1814 1843
1815 local hexes = _G.setmetatable({}, {__index = function (t, k)
1816 local r = _G.math.floor(255*k.r+0.5)
1817 local g = _G.math.floor(255*k.g+0.5)
1818 local b = _G.math.floor(255*k.b+0.5)
1819 local hex = ("|cff%.2x%.2x%.2x"):format(r,g,b)
1820 t[k] = hex
1821 return hex
1822 end})
1823 function _notify_about_change (chatframe, source, index, olddisp, from_whom, from_class) 1844 function _notify_about_change (chatframe, source, index, olddisp, from_whom, from_class)
1824 local e = g_loot[index] 1845 local e = g_loot[index]
1825 if not e then 1846 if not e then
1826 -- how did this happen? 1847 -- how did this happen?
1827 return 1848 return
1828 end 1849 end
1829 local from_color, from_text, to_color, to_text 1850 local from_text, to_text
1830 if from_whom then 1851 if from_whom then
1831 from_color = from_class 1852 from_text = addon:colorize (from_whom, from_class)
1832 and addon.class_colors[from_class] 1853 to_text = addon:colorize (e.person, e.person_class)
1833 or _G.NORMAL_FONT_COLOR
1834 from_color = hexes[from_color]
1835 from_text = from_whom
1836 to_color = e.person_class
1837 and addon.class_colors[e.person_class]
1838 or _G.NORMAL_FONT_COLOR
1839 to_color = hexes[to_color]
1840 to_text = e.person
1841 else 1854 else
1842 if olddisp then 1855 if olddisp then
1843 from_text = addon.disposition_colors[olddisp].text 1856 from_text = addon.disposition_colors[olddisp].text
1844 else 1857 else
1845 olddisp = "normal" 1858 olddisp = "normal"
1846 from_text = "normal" 1859 from_text = "normal"
1847 end 1860 end
1848 from_color = addon.disposition_colors[olddisp].hex 1861 from_text = addon.disposition_colors[olddisp].hex
1862 .. from_text .. "|r"
1863
1849 if e.disposition then 1864 if e.disposition then
1850 to_text = addon.disposition_colors[e.disposition].text 1865 to_text = addon.disposition_colors[e.disposition].text
1851 else 1866 else
1852 to_text = "normal" 1867 to_text = "normal"
1853 end 1868 end
1854 to_color = addon.disposition_colors[e.disposition or "normal"].hex 1869 to_text = addon.disposition_colors[e.disposition or "normal"].hex
1870 .. to_text .. "|r"
1855 end 1871 end
1856 1872
1857 addon.dprint ('loot', "notification:", source, index, 1873 addon.dprint ('loot', "notification:", source, index,
1858 e.itemlink, from_color, from_text, to_color, to_text) 1874 e.itemlink, from_text, to_text)
1859 addon:CFPrint (chatframe, remote_chatty, source, index, 1875 addon:CFPrint (chatframe, remote_chatty, source, index,
1860 e.itemlink, from_color, from_text, to_color, to_text) 1876 e.itemlink, from_text, to_text)
1861 end 1877 end
1862 1878
1863 function _notify_about_remote (sender, index, olddisp, from_whom, from_class) 1879 function _notify_about_remote (sender, index, olddisp, from_whom, from_class)
1864 _notify_about_change (remote_change_chatframe, sender, index, olddisp, from_whom, from_class) 1880 _notify_about_change (remote_change_chatframe, sender, index, olddisp, from_whom, from_class)
1865 end 1881 end