Compare with Previous | Blame | View Log
-------------------------------------------------------------------------- -- AchievementSnap.lua -------------------------------------------------------------------------- --[[ -- Author Ryan "Gryphon" Snook (rsnook@gmail.com) http://ryan.snook.cc -- Request Please do not re-release this AddOn as "Continued", "Resurrected", etc... if you have updates/fixes/additions for it, please contact me. If I am no longer active in WoW I will gladly pass on the maintenance to someone else, however until then please assume I am still active in WoW. -- AddOn Description Automatically snaps a screen shot when you gain an achievement. -- Dependencies Chronos - Embedded Portfolio - Embedded -- Changes 1.1.0 - Added Portfolio registration - Removed Khaos registration - Removed Slash Commands 1.0.1 - German translation provided by Lakar EU-Azshara 1.0.0 - Initial Release -- SVN info $Id: AchievementSnap.lua 1057 2008-10-24 22:58:21Z gryphon $ $Rev: 1057 $ $LastChangedBy: gryphon $ $Date: 2008-10-24 15:58:21 -0700 (Fri, 24 Oct 2008) $ ]]-- local CHARACTER_MAXLEVEL = 80; AchievementSnap = {} AchievementSnap.Setting = { Version = GetAddOnMetadata("AchievementSnap", "Version"); Revision = tonumber(strsub("$Rev: 1057 $", 7, strlen("$Rev: 1057 $") - 2)); } AchievementSnap.On = { Event = function(event) if ( event == "ACHIEVEMENT_EARNED" and AchievementSnap_SavedVars.Enabled ) then if (UnitLevel("player") >= AchievementSnap_SavedVars.MinLevel and UnitLevel("player") <= AchievementSnap_SavedVars.MaxLevel) then if (AchievementSnap_SavedVars.CloseWindows == 1) then CloseAllWindows() RequestTimePlayed() AchievementSnap.Function.TakeScreenshot() else RequestTimePlayed() AchievementSnap.Function.TakeScreenshot() end end end end; } AchievementSnap.Function = { TakeScreenshot = function() Chronos.schedule(1, TakeScreenshot) end; SetMinLevel = function(value) if (value >= AchievementSnap.maxControl:GetValue()) then AchievementSnap.maxControl:SetValue(value) AchievementSnap.maxControl:Update() end end; SetMaxLevel = function(value) if (value <= AchievementSnap.minControl:GetValue()) then AchievementSnap.minControl:SetValue(value) AchievementSnap.minControl:Update() end end; } AchievementSnap.Out = { Print = function(msg) DEFAULT_CHAT_FRAME:AddMessage(ASNAP_TITLE..": "..msg, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b) end; Status = function() local active = AchievementSnap.Color.Green(ASNAP_ENABLED) local closeall = AchievementSnap.Color.Green(ASNAP_ENABLED) if (not AchievementSnap_SavedVars.Enabled) then active = AchievementSnap.Color.Red(ASNAP_DISABLED) end if (not AchievementSnap_SavedVars.CloseWindows) then closeall = AchievementSnap.Color.Red(ASNAP_DISABLED) end AchievementSnap.Out.Print("AddOn "..active) AchievementSnap.Out.Print(format(ASNAP_MINMAXSET2, ASNAP_MINIMUM, AchievementSnap.Color.Green(AchievementSnap_SavedVars.MinLevel))) AchievementSnap.Out.Print(format(ASNAP_MINMAXSET2, ASNAP_MAXIMUM, AchievementSnap.Color.Green(AchievementSnap_SavedVars.MaxLevel))) AchievementSnap.Out.Print(format(ASNAP_CLOSEALL, closeall)) end; Version = function() local version = AchievementSnap.Setting.Version.."."..AchievementSnap.Setting.Revision AchievementSnap.Out.Print(ASNAP_VERSION..": "..AchievementSnap.Color.Green(version)) end; } AchievementSnap.Color = { Green = function(msg) return "|cff00cc00"..msg.."|r"; end; Red = function(msg) return "|cffff0000"..msg.."|r"; end; } if (not AchievementSnapFrame) then local frame = CreateFrame("Frame", "AchievementSnapFrame") frame:Hide() frame:SetScript("OnEvent", AchievementSnap.On.Event) frame:RegisterEvent("ACHIEVEMENT_EARNED") end SLASH_ASNAP1 = "/asnap"; SlashCmdList["ASNAP"] = function() InterfaceOptionsFrame_OpenToCategory("AchievementSnap") end --[[ Portfolio Registration ]]-- local Portfolio = LibStub("Portfolio", true) if (Portfolio) then local optionTable = { id = "AchievementSnap"; options = { { id = "Enabled", text = ASNAP_ENABLED, tooltipText = ASNAP_HELP_ONOFF, type = CONTROLTYPE_CHECKBOX, defaultValue = 1, }, { id = "CloseWindows", text = ASNAP_CLOSEWIN, tooltipText = ASNAP_HELP_CLOSEWIN, type = CONTROLTYPE_CHECKBOX, defaultValue = 1, }, { id = "MinMaxLevelHeader", text = ASNAP_MINIMUM.." / "..ASNAP_MAXIMUM, subText = ASNAP_HELP_MINMAX, type = CONTROLTYPE_HEADER, }, { id = "MinLevel", text = ASNAP_MINIMUM.." (%s)", subText = ASNAP_HELP_MIN, type = CONTROLTYPE_SLIDER, minText = "Min", maxText = "Max", defaultValue = 1, minValue = 1, maxValue = CHARACTER_MAXLEVEL, valueStep = 1, callback = AchievementSnap.Function.SetMinLevel, }, { id = "MaxLevel", text = ASNAP_MAXIMUM.." (%s)", subText = ASNAP_HELP_MAX, type = CONTROLTYPE_SLIDER, minText = "Min", maxText = "Max", defaultValue = CHARACTER_MAXLEVEL, minValue = 1, maxValue = CHARACTER_MAXLEVEL, valueStep = 1, callback = AchievementSnap.Function.SetMaxLevel, point = {"TOPLEFT", "MinLevel", "TOPRIGHT", 80, 0}, }, --[[ { id = "Status", text = ASNAP_STATUS, tooltipText = ASNAP_HELP_STATUS, type = CONTROLTYPE_BUTTON, callback = AchievementSnap.Out.Status, point = {nil, "MinLevel", nil, nil, nil}, }, ]]-- }, savedVarTable = "AchievementSnap_SavedVars", } local optionsFrame = Portfolio.RegisterOptionSet(optionTable) AchievementSnap.minControl = optionsFrame:GetControl("MinLevel") AchievementSnap.maxControl = optionsFrame:GetControl("MaxLevel") end