Mercurial > wow > ouroloot
comparison core.lua @ 27:68d7b903ee17
Drycoded revision check/popup.
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Sun, 09 Oct 2011 01:02:27 +0000 |
parents | cb9635999171 |
children | a7376e6de73c |
comparison
equal
deleted
inserted
replaced
26:f866daadcdf6 | 27:68d7b903ee17 |
---|---|
69 } | 69 } |
70 local virgin = "First time loaded? Hi! Use the /ouroloot or /loot command" | 70 local virgin = "First time loaded? Hi! Use the /ouroloot or /loot command" |
71 .." to show the main display. You should probably browse the instructions" | 71 .." to show the main display. You should probably browse the instructions" |
72 .." if you've never used this before; %s to display the help window. This" | 72 .." if you've never used this before; %s to display the help window. This" |
73 .." welcome message will not intrude again." | 73 .." welcome message will not intrude again." |
74 local newer_warning = "A newer version has been released. You can %s to display" | |
75 .." a download URL for copy-and-pasting. You can %s to ping other raiders" | |
76 .." for their installed versions (same as '/ouroloot ping' or clicking the" | |
77 .." 'Ping!' button on the options panel)." | |
74 local qualnames = { | 78 local qualnames = { |
75 ['gray'] = 0, ['grey'] = 0, ['poor'] = 0, ['trash'] = 0, | 79 ['gray'] = 0, ['grey'] = 0, ['poor'] = 0, ['trash'] = 0, |
76 ['white'] = 1, ['common'] = 1, | 80 ['white'] = 1, ['common'] = 1, |
77 ['green'] = 2, ['uncommon'] = 2, | 81 ['green'] = 2, ['uncommon'] = 2, |
78 ['blue'] = 3, ['rare'] = 3, | 82 ['blue'] = 3, ['rare'] = 3, |
81 ['artifact'] = 6, | 85 ['artifact'] = 6, |
82 --['heirloom'] = 7, | 86 --['heirloom'] = 7, |
83 } | 87 } |
84 local my_name = UnitName('player') | 88 local my_name = UnitName('player') |
85 local comm_cleanup_ttl = 5 -- seconds in the cache | 89 local comm_cleanup_ttl = 5 -- seconds in the cache |
90 local revision_large = nil -- defaults to 1, possibly changed by revision | |
86 local g_LOOT_ITEM_ss, g_LOOT_ITEM_MULTIPLE_sss, g_LOOT_ITEM_SELF_s, g_LOOT_ITEM_SELF_MULTIPLE_ss | 91 local g_LOOT_ITEM_ss, g_LOOT_ITEM_MULTIPLE_sss, g_LOOT_ITEM_SELF_s, g_LOOT_ITEM_SELF_MULTIPLE_ss |
87 | 92 |
88 | 93 |
89 ------ Addon member data | 94 ------ Addon member data |
90 local flib = LibStub("LibFarmbuyer") | 95 local flib = LibStub("LibFarmbuyer") |
92 | 97 |
93 -- Play cute games with namespaces here just to save typing. WTB Lua 5.2 PST. | 98 -- Play cute games with namespaces here just to save typing. WTB Lua 5.2 PST. |
94 do local _G = _G setfenv (1, addon) | 99 do local _G = _G setfenv (1, addon) |
95 | 100 |
96 commrev = 15 -- number | 101 commrev = 15 -- number |
97 revision = _G.GetAddOnMetadata(nametag,"Version") or "?" | 102 revision = _G.GetAddOnMetadata(nametag,"Version") or "?" -- "x.yy.z", etc |
98 ident = "OuroLoot2" | 103 ident = "OuroLoot2" |
99 identTg = "OuroLoot2Tg" | 104 identTg = "OuroLoot2Tg" |
100 status_text = nil | 105 status_text = nil |
101 | 106 |
102 DEBUG_PRINT = false | 107 DEBUG_PRINT = false |
175 local GetNumRaidMembers = GetNumRaidMembers | 180 local GetNumRaidMembers = GetNumRaidMembers |
176 -- En masse forward decls of symbols defined inside local blocks | 181 -- En masse forward decls of symbols defined inside local blocks |
177 local _register_bossmod | 182 local _register_bossmod |
178 local makedate, create_new_cache, _init | 183 local makedate, create_new_cache, _init |
179 | 184 |
185 -- 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 | |
187 -- long as we can reliably feed two of them to "<" and get useful results. | |
188 do | |
189 local r = 0 | |
190 for d in addon.revision:gmatch("%d+") do | |
191 r = 1000*r + d | |
192 end | |
193 revision_large = math.max(r,1) | |
194 end | |
195 | |
180 -- Hypertext support, inspired by DBM broadcast pizza timers | 196 -- Hypertext support, inspired by DBM broadcast pizza timers |
181 do | 197 do |
182 local hypertext_format_str = "|HOuroRaid:%s|h%s[%s]|r|h" | 198 local hypertext_format_str = "|HOuroRaid:%s|h%s[%s]|r|h" |
183 | 199 |
200 -- text will automatically be surrounded by brackets | |
184 function addon.format_hypertext (code, text, color) | 201 function addon.format_hypertext (code, text, color) |
185 return hypertext_format_str:format (code, | 202 return hypertext_format_str:format (code, |
186 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color, | 203 type(color)=='number' and ITEM_QUALITY_COLORS[color].hex or color, |
187 text) | 204 text) |
188 end | 205 end |
190 DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", function(self, link, string, mousebutton) | 207 DEFAULT_CHAT_FRAME:HookScript("OnHyperlinkClick", function(self, link, string, mousebutton) |
191 local ltype, arg = strsplit(":",link) | 208 local ltype, arg = strsplit(":",link) |
192 if ltype ~= "OuroRaid" then return end | 209 if ltype ~= "OuroRaid" then return end |
193 if arg == 'openloot' then | 210 if arg == 'openloot' then |
194 addon:BuildMainDisplay() | 211 addon:BuildMainDisplay() |
212 elseif arg == 'popupurl' then | |
213 local dialog = StaticPopup_Show "OUROL_URL" | |
214 -- Sadly, this is not generated by the packager, so hardcode it for now | |
215 dialog.data = [[http://wow.curse.com/downloads/wow-addons/details/ouroloot.aspx]] | |
216 elseif arg == 'doping' then | |
217 addon:DoPing() | |
195 elseif arg == 'help' then | 218 elseif arg == 'help' then |
196 addon:BuildMainDisplay('help') | 219 addon:BuildMainDisplay('help') |
197 elseif arg == 'bcaston' then | 220 elseif arg == 'bcaston' then |
198 if not addon.rebroadcast then | 221 if not addon.rebroadcast then |
199 addon:Activate(nil,true) | 222 addon:Activate(nil,true) |
390 self.history_all[r] = self:_prep_new_history_category (self.history_all[r], r) | 413 self.history_all[r] = self:_prep_new_history_category (self.history_all[r], r) |
391 self.history = self.history_all[r] | 414 self.history = self.history_all[r] |
392 --OuroLootSV_hist = nil | 415 --OuroLootSV_hist = nil |
393 | 416 |
394 _init(self) | 417 _init(self) |
418 self.dprint('flow', "version strings:", revision_large, self.status_text) | |
395 self.OnInitialize = nil | 419 self.OnInitialize = nil |
396 end | 420 end |
397 | 421 |
398 function addon:OnEnable() | 422 function addon:OnEnable() |
399 self:RegisterEvent("PLAYER_LOGOUT") | 423 self:RegisterEvent("PLAYER_LOGOUT") |
909 self:SetThreshold (opt_threshold, --[[quiet_p=]]true) | 933 self:SetThreshold (opt_threshold, --[[quiet_p=]]true) |
910 end | 934 end |
911 self:Print("Ouro Raid Loot is %s. Threshold currently %s.", | 935 self:Print("Ouro Raid Loot is %s. Threshold currently %s.", |
912 self.enabled and "tracking" or "only broadcasting", | 936 self.enabled and "tracking" or "only broadcasting", |
913 self.thresholds[self.threshold]) | 937 self.thresholds[self.threshold]) |
938 self:broadcast('revcheck',revision_large) | |
914 end | 939 end |
915 | 940 |
916 -- Note: running '/loot off' will also avoid the popup reminder when | 941 -- Note: running '/loot off' will also avoid the popup reminder when |
917 -- joining a raid, but will not change the saved option setting. | 942 -- joining a raid, but will not change the saved option setting. |
918 function addon:Deactivate() | 943 function addon:Deactivate() |
1015 function addon:DoPing() | 1040 function addon:DoPing() |
1016 self:Print("Give me a ping, Vasili. One ping only, please.") | 1041 self:Print("Give me a ping, Vasili. One ping only, please.") |
1017 self.sender_list.active = {} | 1042 self.sender_list.active = {} |
1018 self.sender_list.names = {} | 1043 self.sender_list.names = {} |
1019 self:broadcast('ping') | 1044 self:broadcast('ping') |
1045 self:broadcast('revcheck',revision_large) | |
1046 end | |
1047 | |
1048 function addon:_check_revision (otherrev) | |
1049 self.dprint('comm', "revchecking against", otherrev) | |
1050 otherrev = tonumber(otherrev) | |
1051 if otherrev == revision_large then | |
1052 -- normal case | |
1053 | |
1054 elseif otherrev < revision_large then | |
1055 self.dprint('comm', "ours is newer, notifying") | |
1056 self:broadcast('revcheck',revision_large) | |
1057 | |
1058 else | |
1059 self.dprint('comm', "ours is older, yammering") | |
1060 if newer_warning then | |
1061 self:Print(newer_warning, | |
1062 self.format_hypertext('popupurl',"click here",ITEM_QUALITY_UNCOMMON) | |
1063 self.format_hypertext('doping',"click here",ITEM_QUALITY_UNCOMMON)) | |
1064 newer_warning = nil | |
1065 end | |
1066 end | |
1020 end | 1067 end |
1021 | 1068 |
1022 -- Generic helpers | 1069 -- Generic helpers |
1023 function addon._find_next_after (kind, index) | 1070 function addon._find_next_after (kind, index) |
1024 index = index + 1 | 1071 index = index + 1 |
1755 OCR_funcs.pong = function (sender, _, rev, status) | 1802 OCR_funcs.pong = function (sender, _, rev, status) |
1756 local s = ("|cff00ff00%s|r %s is |cff00ffff%s|r"):format(sender,rev,status) | 1803 local s = ("|cff00ff00%s|r %s is |cff00ffff%s|r"):format(sender,rev,status) |
1757 addon:Print("Echo: ", s) | 1804 addon:Print("Echo: ", s) |
1758 adduser (sender, s, status=="tracking" or status=="broadcasting" or nil) | 1805 adduser (sender, s, status=="tracking" or status=="broadcasting" or nil) |
1759 end | 1806 end |
1807 OCR_funcs.revcheck = function (sender, _, revlarge) | |
1808 addon.dprint('comm', "revcheck, sender", sender) | |
1809 addon:_check_revision (revlarge) | |
1810 end | |
1760 | 1811 |
1761 OCR_funcs.loot = function (sender, _, recip, item, count, extratext) | 1812 OCR_funcs.loot = function (sender, _, recip, item, count, extratext) |
1762 addon.dprint('comm', "DOTloot, sender", sender, "recip", recip, "item", item, "count", count) | 1813 addon.dprint('comm', "DOTloot, sender", sender, "recip", recip, "item", item, "count", count) |
1763 if not addon.enabled then return end | 1814 if not addon.enabled then return end |
1764 adduser (sender, nil, true) | 1815 adduser (sender, nil, true) |