All pastes #132628 Raw Edit

Stuff

public lua v1 · immutable
#132628 ·published 2006-08-15 11:46 UTC
rendered paste body
assert(BigWigs, "BigWigs not found!")--------------------------------      Are you local?      --------------------------------local L = AceLibrary("AceLocale-2.0"):new("BigWigsVersionQuery")local tablet = AceLibrary("Tablet-2.0")-----------------------------------      Localization           -----------------------------------L:RegisterTranslations("enUS", function() return {	["versionquery"] = true,	["VersionQuery"] = true,	["Options for Version Query."] = true,	["query"] = true,	["Query"] = true,	["Query the raid for BigWigs versions."] = true,	["Query already running, please wait 5 seconds before you query again."] = true,	["Querying raid for BigWigs versions, please wait..."] = true,    ["BigWigs Version Query"] = true,    ["Red versions are older than yours, green versions are newer."] = true,} end )-----------------------------------      Addon Declaration      -----------------------------------BigWigsVersionQuery = BigWigs:NewModule("Version Query")BigWigsVersionQuery.consoleCmd = L"versionquery"BigWigsVersionQuery.consoleOptions = {	type = "group",	name = L"VersionQuery",	desc = L"Options for Version Query.",	args   = {		[L"query"] = {			type = "execute",			name = L"Query",			desc = L"Query the raid for BigWigs versions.",			func = function() BigWigsVersionQuery:QueryVersion() end,		},	}}--------------------------------      Initialization      --------------------------------function BigWigsVersionQuery:OnEnable()	self.zoneRevisions = {}	local BWL = AceLibrary("AceLocale-2.0"):new("BigWigs")	-- Get the highest rev of the bosses in each zone.	for name,module in self.core:IterateModules() do		if module:IsBossModule() and module.zonename and type(module.zonename) == "string" then			local zone = BWL:HasTranslation(module.zonename) and BWL:GetTranslation(module.zonename) or module.zonename			local revision = module.revision			if not self.zoneRevisions[zone] or revision > self.zoneRevisions[zone] then				self.zoneRevisions[zone] = revision			end		end	end	BWL = nil	self.queryRunning = nil	self.responseTable = {}	self.responseString = ""    -- Create our tablet    tablet:Register("BWVQ",        'children', function()            tablet:SetTitle(L"BigWigs Version Query")            tablet:SetHint(L"Red versions are older than yours, green versions are newer.")        end,        'clickable', false,        'cantAttach', true,        'dontHook', true    )    	for key, value in self.zoneRevisions do		self.responseString = self.responseString.." "..key..":"..value	end    tablet:Open("BWVQ")    	self:RegisterEvent("BigWigs_VersionQuery")	self:RegisterEvent("BigWigs_RecvSync")end--------------------------------      Event Handlers      --------------------------------function BigWigsVersionQuery:PrintVersions()	self.core:Print("Version replies:")	for key, value in self.responseTable do		self.core:Print(" - "..value[1]..": "..value[2])	end	self.responseTable = {}	self.queryRunning = nilendfunction BigWigsVersionQuery:QueryVersion()	if self.queryRunning then		self.core:Print(L"Query already running, please wait 5 seconds before you query again.")		return	end	self.core:Print(L"Querying raid for BigWigs versions, please wait...")	self.queryRunning = true	self:ScheduleEvent("bwvqstop", function() BigWigsVersionQuery:PrintVersions() end, 5)	table.insert(self.responseTable, {UnitName("player"), self.responseString})	self:TriggerEvent("BigWigs_VersionQuery")endfunction BigWigsVersionQuery:BigWigs_VersionQuery()	self:TriggerEvent("BigWigs_SendSync", "BWVQ")endfunction BigWigsVersionQuery:BigWigs_RecvSync(sync, rest, nick)	if sync == "BWVQ" and nick ~= UnitName("player") then		self:TriggerEvent("BigWigs_SendSync", "BWVR "..self.responseString)	elseif sync == "BWVR" then		if self.queryRunning then			table.insert(self.responseTable, {nick, rest})		end	endend