Mercurial > wow > ouroloot
comparison core.lua @ 38:bb41be8f13b2
Remove some older commented code. Cosmetic comment changes. Clear stray empty 'count' strings out of rebroadcast loot histories, if restoring previous version's data (and not in combat).
| author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
|---|---|
| date | Fri, 23 Dec 2011 01:08:02 +0000 |
| parents | cd745a18d7c7 |
| children | 8f7ec6ccf5e3 |
comparison
equal
deleted
inserted
replaced
| 37:cd745a18d7c7 | 38:bb41be8f13b2 |
|---|---|
| 143 | 143 |
| 144 -- The rest is also used in the GUI: | 144 -- The rest is also used in the GUI: |
| 145 | 145 |
| 146 popped = nil -- non-nil when reminder has been shown, actual value unimportant | 146 popped = nil -- non-nil when reminder has been shown, actual value unimportant |
| 147 | 147 |
| 148 -- This is an amalgamation of all four LOOT_ITEM_* patterns. | |
| 149 -- Captures: 1 person/You, 2 itemstring, 3 rest of string after final |r until '.' | |
| 150 -- Can change 'loot' to 'item' to trigger on, e.g., extracting stuff from mail. | |
| 151 --loot_pattern = "(%S+) receives? loot:.*|cff%x+|H(.-)|h.*|r(.*)%.$" | |
| 152 | |
| 153 bossmod_registered = nil | 148 bossmod_registered = nil |
| 154 bossmods = {} | 149 bossmods = {} |
| 155 | 150 |
| 156 requesting = nil -- for prompting for additional rebroadcasters | 151 requesting = nil -- for prompting for additional rebroadcasters |
| 157 | 152 |
| 153 -- don't use NUM_ITEM_QUALITIES as the upper bound unless we expect heirlooms to show up | |
| 158 thresholds = {} | 154 thresholds = {} |
| 159 for i = 0,6 do | 155 for i = 0,6 do |
| 160 thresholds[i] = _G.ITEM_QUALITY_COLORS[i].hex .. _G["ITEM_QUALITY"..i.."_DESC"] .. "|r" | 156 thresholds[i] = _G.ITEM_QUALITY_COLORS[i].hex .. _G["ITEM_QUALITY"..i.."_DESC"] .. "|r" |
| 161 end | 157 end |
| 162 | 158 |
| 182 local _register_bossmod | 178 local _register_bossmod |
| 183 local makedate, create_new_cache, _init | 179 local makedate, create_new_cache, _init |
| 184 | 180 |
| 185 -- Try to extract numbers from the .toc "Version" and munge them into an | 181 -- Try to extract numbers from the .toc "Version" and munge them into an |
| 186 -- integral form for comparison. The result doesn't need to be meaningful as | 182 -- integral form for comparison. The result doesn't need to be meaningful as |
| 187 -- long as we can reliably feed two of them to "<" and get useful results. | 183 -- long as we can reliably feed two of them to "<" and get useful answers. |
| 188 -- | 184 -- |
| 189 -- This makes/reinforces an assumption that revision_large of release packages | 185 -- This makes/reinforces an assumption that revision_large of release packages |
| 190 -- (e.g., 2016001) will always be higher than those of development packages | 186 -- (e.g., 2016001) will always be higher than those of development packages |
| 191 -- (e.g., 87), due to the tagging system versus subversion file revs. This | 187 -- (e.g., 87), due to the tagging system versus subversion file revs. This |
| 192 -- is good, as local dev code will never trigger a false positive update | 188 -- is good, as local dev code will never trigger a false positive update |
| 193 -- warning for other users. | 189 -- warning for other users. The downside is that additional decimal places |
| 190 -- in the Version field for bugfixes (e.g., "2.16.4.1") imposes a high-water | |
| 191 -- mark, as subsequent shorter strings ("2.16.5", "2.17") will never be larger. | |
| 194 do | 192 do |
| 195 local r = 0 | 193 local r = 0 |
| 196 for d in addon.revision:gmatch("%d+") do | 194 for d in addon.revision:gmatch("%d+") do |
| 197 r = 1000*r + d | 195 r = 1000*r + d |
| 198 end | 196 end |
| 201 | 199 |
| 202 -- Hypertext support, inspired by DBM broadcast pizza timers | 200 -- Hypertext support, inspired by DBM broadcast pizza timers |
| 203 do | 201 do |
| 204 local hypertext_format_str = "|HOuroRaid:%s|h%s[%s]|r|h" | 202 local hypertext_format_str = "|HOuroRaid:%s|h%s[%s]|r|h" |
| 205 | 203 |
| 206 -- text will automatically be surrounded by brackets | 204 -- TEXT will automatically be surrounded by brackets |
| 205 -- COLOR can be item quality code or a hex string | |
| 207 function addon.format_hypertext (code, text, color) | 206 function addon.format_hypertext (code, text, color) |
| 208 return hypertext_format_str:format (code, | 207 return hypertext_format_str:format (code, |
| 209 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color, | 208 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color, |
| 210 text) | 209 text) |
| 211 end | 210 end |
| 377 for opt,default in pairs(option_defaults) do | 376 for opt,default in pairs(option_defaults) do |
| 378 if opts[opt] == nil then | 377 if opts[opt] == nil then |
| 379 opts[opt] = default | 378 opts[opt] = default |
| 380 end | 379 end |
| 381 end | 380 end |
| 381 | |
| 382 -- transition&remove old options | 382 -- transition&remove old options |
| 383 opts['forum_use_itemid'] = nil | 383 opts['forum_use_itemid'] = nil |
| 384 if opts['forum_format'] then | 384 if opts['forum_format'] then |
| 385 opts.forum['Custom...'] = opts['forum_format'] | 385 opts.forum['Custom...'] = opts['forum_format'] |
| 386 opts['forum_format'] = nil | 386 opts['forum_format'] = nil |
| 403 end | 403 end |
| 404 if OuroLootSV.autoshard then | 404 if OuroLootSV.autoshard then |
| 405 opts.autoshard = OuroLootSV.autoshard; OuroLootSV.autoshard = nil | 405 opts.autoshard = OuroLootSV.autoshard; OuroLootSV.autoshard = nil |
| 406 end | 406 end |
| 407 end | 407 end |
| 408 | |
| 408 -- get item filter table if needed | 409 -- get item filter table if needed |
| 409 if opts.itemfilter == nil then | 410 if opts.itemfilter == nil then |
| 410 opts.itemfilter = addon.default_itemfilter | 411 opts.itemfilter = addon.default_itemfilter |
| 411 end | 412 end |
| 412 addon.default_itemfilter = nil | 413 addon.default_itemfilter = nil |
| 419 | 420 |
| 420 self.history_all = self.history_all or OuroLootSV_hist or {} | 421 self.history_all = self.history_all or OuroLootSV_hist or {} |
| 421 local r = assert(GetRealmName()) | 422 local r = assert(GetRealmName()) |
| 422 self.history_all[r] = self:_prep_new_history_category (self.history_all[r], r) | 423 self.history_all[r] = self:_prep_new_history_category (self.history_all[r], r) |
| 423 self.history = self.history_all[r] | 424 self.history = self.history_all[r] |
| 425 if (not InCombatLockdown()) and OuroLootSV_hist and | |
| 426 (OuroLootSV_hist.HISTFORMAT == nil) -- restored data but it's older | |
| 427 then | |
| 428 -- Big honkin' loop | |
| 429 for rname,realm in pairs(self.history_all) do | |
| 430 for pk,player in ipairs(realm) do | |
| 431 for lk,loot in ipairs(player) do | |
| 432 if loot.count == "" then | |
| 433 loot.count = nil | |
| 434 end | |
| 435 end | |
| 436 end | |
| 437 end | |
| 438 end | |
| 439 self.history_all.HISTFORMAT = nil -- don't keep this in live data | |
| 424 --OuroLootSV_hist = nil | 440 --OuroLootSV_hist = nil |
| 425 | 441 |
| 426 _init(self) | 442 _init(self) |
| 427 self.dprint('flow', "version strings:", revision_large, self.status_text) | 443 self.dprint('flow', "version strings:", revision_large, self.status_text) |
| 428 self.OnInitialize = nil | 444 self.OnInitialize = nil |
| 456 local btn = CreateFrame("Button", "OuroLootBindingOpen", nil, "SecureActionButtonTemplate") | 472 local btn = CreateFrame("Button", "OuroLootBindingOpen", nil, "SecureActionButtonTemplate") |
| 457 btn:SetAttribute("type", "macro") | 473 btn:SetAttribute("type", "macro") |
| 458 btn:SetAttribute("macrotext", "/ouroloot toggle") | 474 btn:SetAttribute("macrotext", "/ouroloot toggle") |
| 459 if SetBindingClick(opts.keybinding_text, "OuroLootBindingOpen") then | 475 if SetBindingClick(opts.keybinding_text, "OuroLootBindingOpen") then |
| 460 -- a simple SaveBindings(GetCurrentBindingSet()) occasionally fails when GCBS | 476 -- a simple SaveBindings(GetCurrentBindingSet()) occasionally fails when GCBS |
| 461 -- decides to return neither 1 nor 2 during load | 477 -- decides to return neither 1 nor 2 during load, for reasons nobody has ever learned |
| 462 local c = GetCurrentBindingSet() | 478 local c = GetCurrentBindingSet() |
| 463 if c == ACCOUNT_BINDINGS or c == CHARACTER_BINDINGS then | 479 if c == ACCOUNT_BINDINGS or c == CHARACTER_BINDINGS then |
| 464 SaveBindings(c) | 480 SaveBindings(c) |
| 465 end | 481 end |
| 466 else | 482 else |
| 524 OuroLootSV = g_loot | 540 OuroLootSV = g_loot |
| 525 else | 541 else |
| 526 OuroLootSV = nil | 542 OuroLootSV = nil |
| 527 end | 543 end |
| 528 | 544 |
| 545 worth_saving = false | |
| 529 for r,t in pairs(self.history_all) do if type(t) == 'table' then | 546 for r,t in pairs(self.history_all) do if type(t) == 'table' then |
| 530 if #t == 0 then | 547 if #t == 0 then |
| 531 self.history_all[r] = nil | 548 self.history_all[r] = nil |
| 532 else | 549 else |
| 550 worth_saving = true | |
| 533 t.realm = nil | 551 t.realm = nil |
| 534 t.st = nil | 552 t.st = nil |
| 535 t.byname = nil | 553 t.byname = nil |
| 536 end | 554 end |
| 537 end end | 555 end end |
| 538 OuroLootSV_hist = self.history_all | 556 if worth_saving then |
| 557 OuroLootSV_hist = self.history_all | |
| 558 OuroLootSV_hist.HISTFORMAT = 2 | |
| 559 else | |
| 560 OuroLootSV_hist = nil | |
| 561 end | |
| 539 OuroLootSV_log = #OuroLootSV_log > 0 and OuroLootSV_log or nil | 562 OuroLootSV_log = #OuroLootSV_log > 0 and OuroLootSV_log or nil |
| 540 end | 563 end |
| 541 | 564 |
| 542 do | 565 do |
| 543 local IsInInstance, UnitName, UnitIsConnected, UnitClass, UnitRace, UnitSex, | 566 local IsInInstance, UnitName, UnitIsConnected, UnitClass, UnitRace, UnitSex, |
| 672 -- Recent loot cache | 695 -- Recent loot cache |
| 673 local candidates = {} | 696 local candidates = {} |
| 674 local function prefer_local_loots (cache) | 697 local function prefer_local_loots (cache) |
| 675 -- The function name is a bit of a misnomer, as local entries overwrite | 698 -- The function name is a bit of a misnomer, as local entries overwrite |
| 676 -- remote entries as the candidate table is populated. This routine is | 699 -- remote entries as the candidate table is populated. This routine is |
| 677 -- to extract the results once the cache timers have expired. | 700 -- here to extract the results once the cache timers have expired. |
| 701 -- | |
| 678 -- Keep this sync'd with the local_override branch below. | 702 -- Keep this sync'd with the local_override branch below. |
| 679 for i,sig in ipairs(candidates) do | 703 for i,sig in ipairs(candidates) do |
| 680 addon.dprint('loot', "processing candidate entry", i, sig) | 704 addon.dprint('loot', "processing candidate entry", i, sig) |
| 681 local loot = candidates[sig] | 705 local loot = candidates[sig] |
| 682 if loot then | 706 if loot then |
| 734 itemname = iname, | 758 itemname = iname, |
| 735 id = itemid, | 759 id = itemid, |
| 736 itemlink = ilink, | 760 itemlink = ilink, |
| 737 itexture = itexture, | 761 itexture = itexture, |
| 738 disposition = (recipient == self.sharder) and 'shard' or nil, | 762 disposition = (recipient == self.sharder) and 'shard' or nil, |
| 739 count = count, | 763 count = (count and count ~= "") and count or nil, |
| 740 bcast_from = from, | 764 bcast_from = from, |
| 741 extratext = extratext, | 765 extratext = extratext, |
| 742 is_heroic = self:is_heroic_item(ilink), | 766 is_heroic = self:is_heroic_item(ilink), |
| 743 } | 767 } |
| 744 if local_override then | 768 if local_override then |
| 783 | 807 |
| 784 if event == "CHAT_MSG_LOOT" then | 808 if event == "CHAT_MSG_LOOT" then |
| 785 local msg = ... | 809 local msg = ... |
| 786 local person, itemstring, count | 810 local person, itemstring, count |
| 787 --ChatFrame2:AddMessage("original string: >"..(msg:gsub("\124","\124\124")).."<") | 811 --ChatFrame2:AddMessage("original string: >"..(msg:gsub("\124","\124\124")).."<") |
| 788 --local person, itemstring, remainder = msg:match(self.loot_pattern) | |
| 789 | 812 |
| 790 -- test in most likely order: other people get more loot than "you" do | 813 -- test in most likely order: other people get more loot than "you" do |
| 791 person, itemstring, count = msg:match(g_LOOT_ITEM_MULTIPLE_sss) | 814 person, itemstring, count = msg:match(g_LOOT_ITEM_MULTIPLE_sss) |
| 792 if not person then | 815 if not person then |
| 793 person, itemstring = msg:match(g_LOOT_ITEM_ss) | 816 person, itemstring = msg:match(g_LOOT_ITEM_ss) |
| 797 if not itemstring then | 820 if not itemstring then |
| 798 itemstring = msg:match(g_LOOT_ITEM_SELF_s) | 821 itemstring = msg:match(g_LOOT_ITEM_SELF_s) |
| 799 end | 822 end |
| 800 end | 823 end |
| 801 | 824 |
| 802 --self.dprint('loot', "CHAT_MSG_LOOT, person is", person, ", itemstring is", itemstring, ", rest is", remainder) | |
| 803 self.dprint('loot', "CHAT_MSG_LOOT, person is", person, ", itemstring is", itemstring, ", count is", count) | 825 self.dprint('loot', "CHAT_MSG_LOOT, person is", person, ", itemstring is", itemstring, ", count is", count) |
| 804 if not itemstring then return end -- "So-and-So selected Greed", etc, not actual looting | 826 if not itemstring then return end -- "So-and-So selected Greed", etc, not actual looting |
| 805 --local count = remainder and remainder:match(".*(x%d+)$") | |
| 806 | 827 |
| 807 -- Name might be colorized, remove the highlighting | 828 -- Name might be colorized, remove the highlighting |
| 808 if person then | 829 if person then |
| 809 person = person:match("|c%x%x%x%x%x%x%x%x(%S+)") or person | 830 person = person:match("|c%x%x%x%x%x%x%x%x(%S+)") or person |
| 810 else | 831 else |
| 811 -- UNIT_YOU / You | 832 person = my_name -- UNIT_YOU / You |
| 812 person = my_name | |
| 813 end | 833 end |
| 814 | 834 |
| 815 --local id = tonumber((select(2, strsplit(":", itemstring)))) | 835 --local id = tonumber((select(2, strsplit(":", itemstring)))) |
| 816 local id = tonumber(itemstring:match('|Hitem:(%d+):')) | 836 local id = tonumber(itemstring:match('|Hitem:(%d+):')) |
| 817 | 837 |
| 1896 end | 1916 end |
| 1897 | 1917 |
| 1898 OCR_funcs.bcast_req = function (sender) | 1918 OCR_funcs.bcast_req = function (sender) |
| 1899 if addon.debug.comm or ((not g_wafer_thin) and (not addon.rebroadcast)) | 1919 if addon.debug.comm or ((not g_wafer_thin) and (not addon.rebroadcast)) |
| 1900 then | 1920 then |
| 1901 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. Or do nothing for now to see if other requests arrive.", | 1921 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.", |
| 1902 sender, | 1922 sender, |
| 1903 addon.format_hypertext('bcaston',"the red pill",'|cffff4040'), | 1923 addon.format_hypertext('bcaston',"the red pill",'|cffff4040'), |
| 1904 addon.format_hypertext('waferthin',"the blue pill",'|cff0070dd')) | 1924 addon.format_hypertext('waferthin',"the blue pill",'|cff0070dd')) |
| 1905 end | 1925 end |
| 1906 addon.popped = true | 1926 addon.popped = true |
