Mercurial > wow > ouroloot
comparison core.lua @ 110:f93c1a93923b
Change how dropdown menus are built, and register "mark as" in the loot dropdowns.
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Wed, 08 Aug 2012 23:13:04 -0400 |
parents | ce45011fab4c |
children | 67bf97136273 |
comparison
equal
deleted
inserted
replaced
109:ce45011fab4c | 110:f93c1a93923b |
---|---|
372 local g_boss_signpost = nil | 372 local g_boss_signpost = nil |
373 local g_seeing_oldsigs = nil | 373 local g_seeing_oldsigs = nil |
374 local g_uniques = nil -- memoization of unique loot events | 374 local g_uniques = nil -- memoization of unique loot events |
375 local g_unique_replace = nil | 375 local g_unique_replace = nil |
376 local opts = nil | 376 local opts = nil |
377 local g_gui = nil | |
377 | 378 |
378 local error = addon.error | 379 local error = addon.error |
379 local assert = addon.assert | 380 local assert = addon.assert |
380 | 381 |
381 local type, select, next, pairs, ipairs, tinsert, tremove, tostring, tonumber, wipe = | 382 local type, select, next, pairs, ipairs, tinsert, tremove, tostring, tonumber, wipe = |
847 end | 848 end |
848 | 849 |
849 self:FINISH_SPECIAL_TABS() | 850 self:FINISH_SPECIAL_TABS() |
850 _init(self) | 851 _init(self) |
851 self.dprint('flow', "version strings:", version_large, self.revision, self.status_text) | 852 self.dprint('flow', "version strings:", version_large, self.revision, self.status_text) |
853 g_gui = self.gui_state_pointer | |
852 self.gui_state_pointer = nil | 854 self.gui_state_pointer = nil |
853 self.load_assert = nil | 855 self.load_assert = nil |
854 self.OnInitialize = nil -- free up ALL the things! | 856 self.OnInitialize = nil -- free up ALL the things! |
855 end | 857 end |
856 | 858 |
970 -- LOOT_ITEM_SELF = "You receive loot: %s." --> You receive loot: (.+)%. | 972 -- LOOT_ITEM_SELF = "You receive loot: %s." --> You receive loot: (.+)%. |
971 g_LOOT_ITEM_SELF_s = LOOT_ITEM_SELF:gsub('%.$','%%.'):gsub('%%s','(.+)') | 973 g_LOOT_ITEM_SELF_s = LOOT_ITEM_SELF:gsub('%.$','%%.'):gsub('%%s','(.+)') |
972 | 974 |
973 -- LOOT_ITEM_SELF_MULTIPLE = "You receive loot: %sx%d." --> You receive loot: (.+)(x%d+)%. | 975 -- LOOT_ITEM_SELF_MULTIPLE = "You receive loot: %sx%d." --> You receive loot: (.+)(x%d+)%. |
974 g_LOOT_ITEM_SELF_MULTIPLE_ss = LOOT_ITEM_SELF_MULTIPLE:gsub('%.$','%%.'):gsub('%%s','(.+)'):gsub('x%%d','(x%%d+)') | 976 g_LOOT_ITEM_SELF_MULTIPLE_ss = LOOT_ITEM_SELF_MULTIPLE:gsub('%.$','%%.'):gsub('%%s','(.+)'):gsub('x%%d','(x%%d+)') |
977 | |
978 --[[ | |
979 Throw in the default disposition types. This could be called during load | |
980 were it not for the need to talk to the GUI data (not set up yet). | |
981 | |
982 Args: code, rhex, ghex, bhex, | |
983 text_notes, opt_text_menu (uses notes if nil), opt_tooltip_txt, | |
984 can_reassign_p, do_history_p, from_notes_text_p | |
985 ]] | |
986 local norm = self:_add_loot_disposition ('normal', "ff","ff","ff", "", "normal", | |
987 [[This is the default. Selecting any 'Mark as <x>' action blanks out extra notes about who broadcast this entry, etc.]], | |
988 true, true, false) | |
989 self:_add_loot_disposition ('offspec', "c6","9b","6d", "offspec", nil, nil, | |
990 true, true, true) | |
991 self:_add_loot_disposition ('shard', "a3","35","ee", "shard", | |
992 "disenchanted", nil, false, false, true) | |
993 -- suddenly changing localization mid-phrase is horky, change this to a submenu: | |
994 self:_add_loot_disposition ('gvault', "33","ff","99", _G.GUILD_BANK:lower(), | |
995 nil, nil, false, false, true) | |
996 -- fix up the odd (!) standard case of having a nil disposition field | |
997 norm.arg2 = nil | |
975 | 998 |
976 --[[ | 999 --[[ |
977 Stick something in the Blizzard addons options list, where most users | 1000 Stick something in the Blizzard addons options list, where most users |
978 will probably look these days. Try to be conservative about needless | 1001 will probably look these days. Try to be conservative about needless |
979 frame creation. | 1002 frame creation. |
2587 return alldisps[code][attrib] | 2610 return alldisps[code][attrib] |
2588 end | 2611 end |
2589 function addon:_iter_dispositions (attrib) | 2612 function addon:_iter_dispositions (attrib) |
2590 local r = {} | 2613 local r = {} |
2591 for code,disp in next, alldisps do | 2614 for code,disp in next, alldisps do |
2592 if disp.attrib then | 2615 if disp[attrib] then |
2593 r[code] = disp.text | 2616 r[code] = disp.text |
2594 end | 2617 end |
2595 end | 2618 end |
2596 return next, r | 2619 return next, r |
2597 end | 2620 end |
2598 | 2621 |
2599 function addon:_add_loot_disposition (code, rhex, ghex, bhex, text, | 2622 function addon:_add_loot_disposition (code, rhex, ghex, bhex, text_notes, |
2600 can_reassign_p, do_history_p, from_notes_text_p | 2623 text_menu, tooltip_txt, can_reassign_p, do_history_p, from_notes_text_p |
2601 ) | 2624 ) |
2602 assert(type(code)=='string' and #code>0) | 2625 assert(type(code)=='string' and #code>0) |
2603 assert(type(text)=='string') | 2626 assert(type(text_notes)=='string') |
2604 assert(type(rhex)=='string') | 2627 assert(type(rhex)=='string') |
2605 assert(type(bhex)=='string') | 2628 assert(type(bhex)=='string') |
2606 assert(type(ghex)=='string') | 2629 assert(type(ghex)=='string') |
2630 | |
2607 self.disposition_colors[code] = { | 2631 self.disposition_colors[code] = { |
2608 text = text, | 2632 text = text_notes, |
2609 -- for chat output by core code | 2633 -- for chat output by core code |
2610 hex = "|cff" .. rhex .. ghex .. bhex, | 2634 hex = "|cff" .. rhex .. ghex .. bhex, |
2611 -- for lib-st | 2635 -- for lib-st |
2612 r = tonumber(rhex,16)/255, | 2636 r = tonumber(rhex,16)/255, |
2613 g = tonumber(ghex,16)/255, | 2637 g = tonumber(ghex,16)/255, |
2615 a = 1, | 2639 a = 1, |
2616 } | 2640 } |
2617 -- not not = poor man's "toboolean", don't potentially hold arg | 2641 -- not not = poor man's "toboolean", don't potentially hold arg |
2618 -- objects from garbage collection | 2642 -- objects from garbage collection |
2619 alldisps[code] = { | 2643 alldisps[code] = { |
2620 text = text, | 2644 text = text_notes, |
2621 can_reassign = not not can_reassign_p, | 2645 can_reassign = not not can_reassign_p, |
2622 affects_history = not not do_history_p, | 2646 affects_history = not not do_history_p, |
2623 from_notes_text = not not from_notes_text_p, | 2647 from_notes_text = not not from_notes_text_p, |
2624 } | 2648 } |
2625 end | 2649 |
2626 | 2650 return g_gui.add_dropdown_entry ('eoi_loot', "Mark as "..(text_menu or text_notes), |
2627 -- reassign while tagged, affects history, copy from notes | 2651 --[[function_table=]]nil, 'df_DISPOSITION', code, tooltip_txt) |
2628 addon:_add_loot_disposition ('normal', "ff","ff","ff", "", true, true, false) | 2652 end |
2629 addon:_add_loot_disposition ('offspec', "c6","9b","6d", "offspec", true, true, true) | |
2630 addon:_add_loot_disposition ('shard', "a3","35","ee", "shard", false, false, true) | |
2631 addon:_add_loot_disposition ('gvault', "33","ff","99", _G.GUILD_BANK:lower(), false, false, true) | |
2632 end | 2653 end |
2633 | 2654 |
2634 -- In the rare case of items getting put into the loot table without current | 2655 -- In the rare case of items getting put into the loot table without current |
2635 -- item cache data (which will have arrived by now). | 2656 -- item cache data (which will have arrived by now). |
2636 function addon:do_item_cache_fixup() | 2657 function addon:do_item_cache_fixup() |