WoWInterface SVN AchievementSnap

[/] [trunk/] [AchievementSnap/] [AchievementSnap.lua] - Rev 8

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

Compare with Previous | Blame