WoWInterface SVN DeathSnap

[/] [trunk/] [DeathSnap/] [DeathSnap.lua] - Rev 4

Go to most recent revision | Compare with Previous | Blame | View Log

--------------------------------------------------------------------------
-- DeathSnap.lua
--------------------------------------------------------------------------
--[[

  -- Author
  Ryan "Gryphon" Snook (rsnook@gmail.com)
        "Allied Tribal Forces" of "US - Mal'Ganis - Alliance".
        www.AlliedTribalForces.com

        -- 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 die.

        -- Dependencies
        Chronos - Embedded
        Khaos - Optional

        -- Changes
        1.0.1   - Level Cap 80
        1.0.0   - Initial Release

  -- SVN info
        $Id: DeathSnap.lua 1056 2008-10-24 22:50:07Z gryphon $
        $Rev: 1056 $
        $LastChangedBy: gryphon $
        $Date: 2008-10-24 15:50:07 -0700 (Fri, 24 Oct 2008) $

]]--

DS_Setting = {
        Version = GetAddOnMetadata("DeathSnap", "Version");
        Revision = tonumber(strsub("$Rev: 1056 $", 7, strlen("$Rev: 1056 $") - 2));
}

DS_Options = {
        Active = 1;
        MinLevel = 1;
        MaxLevel = 80;
        CloseWindows = 0;
}

DS_On = {

        Load = function()

                DS_Register.RegisterEvent("UNIT_DIED")
                DS_Register.RegisterEvent("PLAYER_DEAD")

                if (Khaos) then
                        DS_Register.Khaos();
                else
                        DS_Register.SlashCommands()
                end

        end;

        Event = function(event)

                if ( ( event == "UNIT_DIED" or event == "PLAYER_DEAD" ) and DS_Options.Active == 1 ) then
                        if (UnitLevel("player") >= DS_Options.MinLevel and UnitLevel("player") <= DS_Options.MaxLevel) then
                                if (DS_Options.CloseWindows == 1) then
                                        CloseAllWindows()
                                        RequestTimePlayed()
                                        DS_Function.TakeScreenshot()
                                else
                                        RequestTimePlayed()
                                        DS_Function.TakeScreenshot()
                                end
                        end
                end

        end;

}

DS_Register = {

        RegisterEvent = function(event)
                this:RegisterEvent(event)
        end;

        SlashCommands = function()
                SLASH_DS_HELP1 = "/ds";
                SLASH_DS_HELP2 = "/deathsnap";
                SlashCmdList["DS_HELP"] = DS_Command;
        end;

        Khaos = function()
                local version = DS_Setting.Version.."."..DS_Setting.Revision

                local optionSet = {
                        id = "DeathSnap";
                        text = function() return DS_TITLE end;
                        helptext = function() return DS_INFO end;
                        difficulty = 1;
                        default = true;
                        callback = function(checked)
                                DS_Options.Active = checked and 1 or 0;
                        end;
                        options = {
                                {
                                        id = "Header";
                                        text = function() return DS_TITLE.." "..DS_Color.Green("v"..version) end;
                                        helptext = function() return DS_INFO end;
                                        type = K_HEADER;
                                        difficulty = 1;
                                };

                                {
                                        id="DS_MinLevel";
                                        type = K_SLIDER;
                                        text = function() return DS_MINIMUM end;
                                        helptext = function() return DS_HELP_MIN end;
                                        difficulty = 1;
                                        feedback = function(state)
                                                return string.format(DS_MINMAXSET2, DS_MINIMUM, state.slider);
                                        end;
                                        callback = function(state)
                                                if (state.slider >= DS_Options.MaxLevel) then
                                                        Khaos.setSetKeyParameter("DeathSnap","DS_MaxLevel", "slider", state.slider);
                                                        Khaos.refresh(false, false, true);
                                                end;
                                                DS_Options.MinLevel = state.slider;
                                        end;
                                        default = { checked = true; slider = 1 };
                                        disabled = { checked = false; slider = 1 };
                                        setup = {
                                                sliderMin = 1;
                                                sliderMax = 80;
                                                sliderStep = 1;
                                                sliderDisplayFunc = function(val)
                                                        return val;
                                                end;
                                        };
                                };


                                {
                                        id="DS_MaxLevel";
                                        type = K_SLIDER;
                                        text = function() return DS_MAXIMUM end;
                                        helptext = function() return DS_HELP_MAX end;
                                        difficulty = 1;
                                        feedback = function(state)
                                                return string.format(DS_MINMAXSET2, DS_MAXIMUM, state.slider);
                                        end;
                                        callback = function(state)
                                                if (state.slider <= DS_Options.MinLevel) then
                                                        Khaos.setSetKeyParameter("DeathSnap","DS_MinLevel", "slider", state.slider);
                                                        Khaos.refresh(false, false, true);
                                                end;
                                                DS_Options.MaxLevel = state.slider;
                                        end;
                                        default = { checked = false; slider = 80 };
                                        disabled = { checked = false; slider = 80 };
                                        setup = {
                                                sliderMin = 1;
                                                sliderMax = 80;
                                                sliderStep = 1;
                                                sliderDisplayFunc = function(val)
                                                        return val;
                                                end;
                                        };
                                };

                                {
                                        id = "DS_CloseWindows";
                                        type = K_TEXT;
                                        text = function() return DS_CLOSEWIN end;
                                        helptext = function() return DS_HELP_CLOSEWIN end;
                                        difficulty = 1;
                                        feedback = function(state)
                                                if (state.checked) then
                                                        return string.format(DS_CLOSEALL, DS_ENABLED);
                                                else
                                                        return string.format(DS_CLOSEALL, DS_DISABLED);
                                                end
                                        end;
                                        callback = function(state)
                                                if (state.checked) then
                                                        DS_Options.CloseWindows = 1;
                                                else
                                                        DS_Options.CloseWindows = 0;
                                                end
                                        end;
                                        check = true;
                                        default = { checked = false };
                                        disabled = { checked = true };
                                };

                                {
                                        id = "DS_Status";
                                        type = K_BUTTON;
                                        text = function() return DS_STATUS end;
                                        helptext = function() return DS_HELP_STATUS end;
                                        difficulty = 1;
                                        callback = function(state)
                                                DS_Out.Status()
                                        end;
                                        feedback = function(state) end;
                                        setup = { buttonText = function() return DS_STATUS end; };
                                };

                        };
                };
                Khaos.registerOptionSet(
                        "other",
                        optionSet
                );

        end;

}

DS_Function = {

        TakeScreenshot = function()
                Chronos.schedule(1, TakeScreenshot)
        end;

}

DS_Out = {

        Print = function(msg)
                local color = NORMAL_FONT_COLOR;
                DEFAULT_CHAT_FRAME:AddMessage(DS_TITLE..": "..msg, color.r, color.g, color.b)
        end;

  Status = function()
                local active = DS_Color.Green(DS_ENABLED)
                local closeall = DS_Color.Green(DS_ENABLED)

                if (DS_Options.Active == 0) then
                        active = DS_Color.Red(DS_DISABLED)
                end
                if (DS_Options.CloseWindows == 0) then
                        closeall = DS_Color.Red(DS_DISABLED)
                end

                DS_Out.Print("AddOn "..active..". "..string.format(DS_MINMAXSET2, DS_MINIMUM, DS_Color.Green(DS_Options.MinLevel)).." "..string.format(DS_MINMAXSET2, DS_MAXIMUM, DS_Color.Green(DS_Options.MaxLevel)).." "..string.format(DS_CLOSEALL, closeall))
  end;

  Version = function()
                local version = DS_Setting.Version.."."..DS_Setting.Revision
                DS_Out.Print(DS_VERSION..": "..DS_Color.Green(version))
  end;

}

DS_Color = {

        Green = function(msg)
                return "|cff00cc00"..msg.."|r";
        end;

        Red = function(msg)
                return "|cffff0000"..msg.."|r";
        end;

}

DS_Command = function(msg)

        local cmd = string.lower(msg)

        if (cmd == "" or cmd == "help") then
                DS_Out.Print("/ds on|off, "..DS_HELP_ONOFF)
                DS_Out.Print("/ds min #, "..DS_HELP_MIN)
                DS_Out.Print("/ds max #, "..DS_HELP_MAX)
                DS_Out.Print("/ds closewin on|off, "..DS_HELP_CLOSEWIN)
                DS_Out.Print("/ds status, "..DS_HELP_STATUS)
                DS_Out.Print("/ds version, "..DS_HELP_VERSION)
        end

        if (cmd == "version") then
                DS_Out.Version()
        end

        if (cmd == "status") then
                DS_Out.Status()
        end

        if (cmd == "on") then
                DS_Options.Active = 1;
                DS_Out.Print(DS_Color.Green(DS_ENABLED))
        end

        if (cmd == "off") then
                DS_Options.Active = 0;
                DS_Out.Print(DS_Color.Red(DS_DISABLED))
        end

        if (strsub(msg, 1, 3) == "min") then
                local num = tonumber(strsub(msg, 4))
                DS_Options.MinLevel = num;
                DS_Out.Print(string.format(DS_MINMAXSET2, DS_MINIMUM, DS_Color.Green(num)))
        end

        if (strsub(msg, 1, 3) == "max") then
                local num = tonumber(strsub(msg, 4))
                DS_Options.MaxLevel = num;
                DS_Out.Print(string.format(DS_MINMAXSET2, DS_MAXIMUM, DS_Color.Green(num)))
        end

        if (strsub(msg, 1, 8) == "closewin") then
                local state = strsub(msg, 10)
                if (state == "on") then
                        DS_Options.CloseWindows = 1;
                        DS_Out.Print(string.format(DS_CLOSEALL, DS_ENABLED))
                elseif (state == "off") then
                        DS_Options.CloseWindows = 0;
                        DS_Out.Print(string.format(DS_CLOSEALL, DS_DISABLED))
                end
        end

end;

Go to most recent revision | Compare with Previous | Blame