vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        Define all Global Variables here
]]

-- Global Variables that are not supposed to be on-the-fly user configurable.
XPerlLocked             = 1

function XPerl_ShowMessage(cMsg)
        local str = "|c00FF7F00"..event.."|r"
        str = str..", "..tostring(arg1)
        if (arg1) then
                if (strfind(arg1, "^raid") or strfind(arg1, "^party") or strfind(arg1, "^player") or strfind(arg1, "^pet") or strfind(arg1, "^target")) then
                        str = str.."("..UnitName(arg1)..")"
                end
        end

        str = str..", "..tostring(arg2)
        str = str..", "..tostring(arg3)
        str = str..", "..tostring(arg4)
        str = str..", "..tostring(arg5)
        str = str..", "..tostring(arg6)
        str = str..", "..tostring(arg7)
        str = str..", "..tostring(arg8)
        str = str..", "..tostring(arg9)

        if (cMsg) then
                str = cMsg.." - "..str
        end

        ChatFrame7:AddMessage("|c00007F7F"..this:GetName().."|r - "..str)
end

function XPerl_Notice(str)
        if (DEFAULT_CHAT_FRAME) then
                DEFAULT_CHAT_FRAME:AddMessage(XPerl_ProductName.." - |c00B03030"..str)
        end
end

function XPerl_SetMyGlobal()
        if (XPerlConfigSavePerCharacter) then
                if (not XPerlConfig_Global) then
                        XPerlConfig_Global = {}
                end

                if (not XPerlConfig_Global[GetRealmName()]) then
                        XPerlConfig_Global[GetRealmName()] = {}
                end

                XPerlConfig_Global[GetRealmName()][UnitName("player")] = XPerlConfig
        else
                if (XPerlConfig_Global[GetRealmName()][UnitName("player")]) then
                        XPerlConfig = XPerlConfig_Global[GetRealmName()][UnitName("player")]
                end
        end
end

local function DefaultVar(name, value)
        if (XPerlConfig[name] == nil or (type(value) ~= type(XPerlConfig[name]))) then
                XPerlConfig[name] = value
        end
end

function XPerl_DefaultBarColours(reset)
        if (reset) then
                XPerlConfig.ClassicHealthBar = nil
                XPerlConfig.ColourHealthEmpty = nil
                XPerlConfig.ColourHealthFull = nil
                XPerlConfig.ColourMana = nil
                XPerlConfig.ColourEnergy = nil
                XPerlConfig.ColourRage = nil
                XPerlConfig.ColourFocus = nil
        end

        DefaultVar("ClassicHealthBar",          1)
        DefaultVar("ColourHealthEmpty",         {r = 1, g = 0, b = 0})
        DefaultVar("ColourHealthFull",          {r = 0, g = 1, b = 0})
        DefaultVar("ColourMana",                {r = 0, g = 0, b = 1})
        DefaultVar("ColourEnergy",              {r = 1, g = 1, b = 0})
        DefaultVar("ColourRage",                {r = 1, g = 0, b = 0})
        DefaultVar("ColourFocus",               {r = 1, g = 0.5, b = 0.25})
end

function XPerl_DefaultReactionColours(reset)
        if (reset) then
                XPerlConfig.ColourReactionEnemy = nil
                XPerlConfig.ColourReactionNeutral = nil
                XPerlConfig.ColourReactionUnfriendly = nil
                XPerlConfig.ColourReactionFriend = nil
                XPerlConfig.ColourReactionNone = nil
                XPerlConfig.ColourTapped = nil
        end

        DefaultVar("ColourReactionEnemy",       {r = 1, g = 0, b = 0})
        DefaultVar("ColourReactionNeutral",     {r = 1, g = 1, b = 0})
        DefaultVar("ColourReactionUnfriendly",  {r = 1, g = 0.5, b = 0})
        DefaultVar("ColourReactionFriend",      {r = 0, g = 1, b = 0})
        DefaultVar("ColourReactionNone",        {r = 0.5, g = 0.5, b = 1})
        DefaultVar("ColourTapped",              {r = 0.5, g = 0.5, b = 0.5})
end

function XPerl_Defaults()

        DefaultVar("BarTextures",               1)
        DefaultVar("BackgroundTextures",        0)              -- 1.8.6
        DefaultVar("Transparency",              0.8)
        DefaultVar("TextTransparency",          1)
        DefaultVar("BackColour",                {r = 0, g = 0, b = 0, a = 1})
        DefaultVar("BorderColour",              {r = 0.5, g = 0.5, b = 0.5, a = 1})
        if (not XPerlConfig.BackColour.a) then
                XPerlConfig.BackColour.a = 1
        end
        if (not XPerlConfig.BorderColour.a) then
                XPerlConfig.BorderColour.a = 1
        end

        DefaultVar("ArcaneBar",                 1)
        DefaultVar("OldCastBar",                1)
        DefaultVar("CastTime",                  1)
        DefaultVar("ClassColouredNames",        1)
        DefaultVar("HighlightSelection",        1)
        DefaultVar("MinimapButtonPosition",     186)
        DefaultVar("MinimapButtonShown",        1)
        DefaultVar("PerlCombatFlash",           1)
        DefaultVar("PerlFadeFrames",            1)
        DefaultVar("CombatHitIndicator",        1)
        DefaultVar("HighlightDebuffs",          1)
        DefaultVar("HighlightDebuffsBorder",    1)
        DefaultVar("BuffTooltipHelper",         1)
        DefaultVar("FadingTooltip",             1)              -- 1.8.3
        DefaultVar("HealerMode",                0)
        DefaultVar("HealerModeType",            1)              -- 1.8.3
        DefaultVar("FatHealthBars",             1)
        DefaultVar("MaximumScale",              1.5)
        DefaultVar("ClearBlizzardFrames",       0)              -- 1.8.3
        DefaultVar("OptionsColour",             {r = 0.7, g = 0.2, b = 0.2})    -- 1.8.3
        DefaultVar("InverseBars",               0)              -- 1.8.6
        DefaultVar("XPerlTooltipInfo",          0)              -- 1.8.6

        XPerl_DefaultBarColours()
        XPerl_DefaultReactionColours()

        -- Player options
        DefaultVar("ShowPlayerPortrait",        1)
        DefaultVar("ShowPlayerPortrait3D",      1)
        DefaultVar("ShowPlayerLevel",           1)
        DefaultVar("ShowPlayerClassIcon",       1)
        DefaultVar("ShowPlayerXPBar",           0)
        DefaultVar("ShowPlayerPVPRank",         1)
        DefaultVar("ShowPlayerPVP",             1)              -- 1.8.3
        DefaultVar("ShowPlayerValues",          1)
        DefaultVar("ShowPlayerPercent",         1)
        DefaultVar("Scale_PlayerFrame",         0.8)
        DefaultVar("ShowPartyNumber",           1)
        DefaultVar("EnergyTicker",              1)
        DefaultVar("FullScreenStatus",          0)              -- 1.8.4

        -- Player Pet
        DefaultVar("ShowPlayerPetPortrait",     1)
        DefaultVar("ShowPlayerPetPortrait3D",   1)              -- 1.8.3
        DefaultVar("PetHappiness",              1)
        DefaultVar("PetHappinessSad",           1)              -- Only show happiness when not happy
        DefaultVar("PetFlashWhenSad",           1)
        DefaultVar("ShowPetLevel",              1)
        DefaultVar("Scale_PetFrame",            0.8)
        DefaultVar("ShowPetXP",                 1)
        DefaultVar("ShowPlayerPetName",         1)
        DefaultVar("PlayerPetBuffSize",         20)
        DefaultVar("ShowPlayerPetValues",       1)

        -- Target
        DefaultVar("ShowTargetPortrait",        1)
        DefaultVar("ShowTargetPortrait3D",      1)              -- 1.8.3
        DefaultVar("ShowTargetClassIcon",       1)
        DefaultVar("ShowTargetMobType",         1)
        DefaultVar("ShowTargetLevel",           1)
        DefaultVar("ShowTargetElite",           1)
        DefaultVar("ShowTargetMana",            1)
        DefaultVar("ShowTargetPercent",         1)
        DefaultVar("ShowTargetValues",          1)
        DefaultVar("UseCPMeter",                1)
        DefaultVar("BlizzardCPMeter",           0)
        DefaultVar("BlizzardCPPosition",        "top")
        DefaultVar("ShowTargetPVPRank",         1)
        DefaultVar("ShowTargetPVP",             1)              -- 1.8.3
        DefaultVar("Show30YardSymbol",          1)
        DefaultVar("Scale_TargetFrame",         0.8)
        DefaultVar("AlternateRaidIcon",         1)
        DefaultVar("TargetBuffSize",            22)
        DefaultVar("TargetBuffRows",            3)
        DefaultVar("TargetBuffsAbove",          0)
        DefaultVar("TargetReactionHighlight",   0)              -- 1.8.6

        -- Target's Target
        DefaultVar("ShowTargetTarget",          1)
        DefaultVar("TargetTargetHistory",       0)
        DefaultVar("ShowTargetTargetTarget",    1)
        DefaultVar("TargetTargetBuffs",         1)
        DefaultVar("TargetCastableBuffs",       0)
        DefaultVar("TargetCurableDebuffs",      0)
        DefaultVar("TargetTargetTargetBuffs",   1)
        DefaultVar("Scale_TargetTargetFrame",   0.8)
        DefaultVar("ShowTargetTargetPercent",   1)
        DefaultVar("ShowTargetTargetValues",    1)
        DefaultVar("ShowTargetTargetLevel",     1)
        DefaultVar("ShowTargetTargetMana",      1)
        DefaultVar("TargetTargetBuffsAbove",    0)

        -- Cast Party
        DefaultVar("CastParty",                 1)
        DefaultVar("CastPartyRaidOnly",         0)              -- Cast Party works on raid frame only?

        -- Party
        DefaultVar("ShowPartyPortrait",         1)
        DefaultVar("ShowPartyPortrait3D",       1)              -- 1.8.3
        DefaultVar("ShowPartyTarget",           1)
        DefaultVar("ShowPartyLevel",            1)
        DefaultVar("ShowPartyNames",            1)
        DefaultVar("ShowPartyValues",           1)
        DefaultVar("ShowPartyPercent",          1)
        DefaultVar("ShowPartyClassIcon",        1)
        DefaultVar("ShowPartyPVP",              1)              -- 1.8.3
        DefaultVar("ShowPartyRaid",             1)
        DefaultVar("PartyBuffs",                1)
        DefaultVar("PartyDebuffs",              1)
        DefaultVar("PartyCastableBuffs",        0)
        DefaultVar("PartyCurableDebuffs",       0)
        DefaultVar("Scale_PartyFrame",          0.8)
        DefaultVar("PartyDebuffsBelow",         0)
        DefaultVar("ShowPartyPets",             1)
        DefaultVar("Scale_PartyPets",           XPerlConfig.Scale_PartyFrame)
        DefaultVar("ShowPartyPetName",          1)
        DefaultVar("ShowPartyPetBuffs",         1)              -- 1.8.3
        DefaultVar("ShowParty30YardSymbol",     1)
        DefaultVar("PartyBuffSize",             20)

        -- Raid
        DefaultVar("SortRaidByClass",           0)
        DefaultVar("ShowRaid",                  1)
        DefaultVar("ShowGroup1",                1)
        DefaultVar("ShowGroup2",                1)
        DefaultVar("ShowGroup3",                1)
        DefaultVar("ShowGroup4",                1)
        DefaultVar("ShowGroup5",                1)
        DefaultVar("ShowGroup6",                1)
        DefaultVar("ShowGroup7",                1)
        DefaultVar("ShowGroup8",                1)
        DefaultVar("ShowGroup9",                0)
        DefaultVar("ShowGroup1",                1)
        DefaultVar("ShowRaidTitles",            1)
        DefaultVar("ShowRaidPercents",          1)
        DefaultVar("Scale_Raid",                0.8)
        DefaultVar("RaidVerticalSpacing",       42)
        DefaultVar("RaidPositions",             {})
        DefaultVar("RaidBuffs",                 1)
        DefaultVar("RaidDebuffs",               0)
        DefaultVar("BuffsCastableCurable",      0)
        DefaultVar("RaidBuffsRight",            1)
        DefaultVar("RaidBuffsInside",           1)
        DefaultVar("RaidMotion",                1)
        DefaultVar("RaidMana",                  1)              -- 1.8.3
        DefaultVar("RaidUpward",                0)              -- 1.8.3
end

-- XPerl_ResetDefaults
function XPerl_ResetDefaults()

        local rp = XPerlConfig.RaidPositions

        XPerlConfig = {}
        XPerl_Defaults()

        if (XPerlConfigSavePerCharacter) then
                XPerlConfig_Global[GetRealmName()][UnitName("player")] = XPerlConfig
        end

        XPerlConfig.RaidPositions = rp

        XPerl_OptionActions()

        if (XPerl_Options and XPerl_Options:IsShown()) then
                XPerl_Options:Hide()
                XPerl_Options:Show()
        end
end

-- XPerl_Globals_OnEvent
function XPerl_Globals_OnEvent(event)
        if (event == "VARIABLES_LOADED") then
                -- Between sessions variable saving.
                this:UnregisterEvent(event)

                if (XPerlConfigSavePerCharacter) then
                        local realm = GetRealmName()
                        local name = UnitName("player")

                        if (not XPerlConfig_Global) then
                                XPerlConfig_Global = {}
                        end

                        if (not XPerlConfig_Global[realm]) then
                                XPerlConfig_Global[realm] = {}
                        end

                        if (not XPerlConfig_Global[realm][name]) then
                                XPerlConfig_Global[realm][name] = {}

                                if (XPerlConfig and XPerlConfig.BarTextures) then
                                        XPerlConfig_Global[realm][name] = XPerlConfig
                                end
                        else
                                XPerlConfig = XPerlConfig_Global[realm][name]
                        end

                        if (not XPerlConfig) then
                                XPerlConfig = XPerlConfig_Global[realm][name]
                        end
                else
                        if (not XPerlConfig) then
                                XPerlConfig = {}
                        end
                end

                -- Tell DHUD to hide Blizzard default Player and Target frames
                if (DHUD_Config) then
                        local bChanged = false
                        if (XPerl_Player) then
                                DHUD_Config["bplayer"] = 0
                                bChanged = true
                        end
                        if (XPerl_Target) then
                                DHUD_Config["btarget"] = 0
                                bChanged = true
                        end

                        --if (DHUD_Config["bplayer"] == 1 or DHUD_Config["btarget"] == 1) then
                        --      XPerl_BlizzFramesDisable()
                        --end
                end

                XPerl_BlizzFramesDisable()

                -- Variable checking only occurs for new install and version number change
                if ((not XPerlConfig.ConfigVersion) or (XPerlConfig.ConfigVersion ~= XPerl_VersionNumber)) then
                        XPerlConfig.ConfigVersion = XPerl_VersionNumber;        -- Set ConfigVersion to current

                        XPerl_Defaults()
                end

                XPerl_Init()

        elseif (event == "PLAYER_ENTERING_WORLD") then
                if (Perl_Globals_OnEvent or Perl_InitFadeFrame) then
                        DEFAULT_CHAT_FRAME:AddMessage("|c00FF0000".."ERROR! X-Perl not installed correctly!")
                        DEFAULT_CHAT_FRAME:AddMessage("|c00FFFF00".."ERROR!   Previous version of X-Perl must be removed entirely. Please delete all Perl* folders in AddOns")
                        DEFAULT_CHAT_FRAME:AddMessage("|c00FFFF00".."ERROR!   X-Perl folders, frames and globals were renamed for version 1.8.6 due to numerous conflicts with other versions of Perl and addons expecting Nymbia's Perl, so X-Perl now resides in newly named folders")
                end
        end
end

-- XPerl_InitFadeFrame
function XPerl_InitFadeFrame(argFrame)
        argFrame.Fading = 0
        argFrame.FadeTime = 0
        argFrame.IsShowing = function () return (argFrame:IsVisible() and argFrame.Fading == 0); end
end

-- XPerl_CancelFade
function XPerl_CancelFade(argFrame)
        if (argFrame.Fading == 1) then
                argFrame.Fading = 0
                argFrame:SetAlpha(XPerlConfig.Transparency)
        end
end

-- XPerl_StartFade(argFrame)
function XPerl_StartFade(argFrame)
        argFrame:StopMovingOrSizing()

        if (XPerlConfig.PerlFadeFrames == 1) then
                if (argFrame:IsVisible() and argFrame.Fading == 0) then
                        argFrame.Fading = 1
                        argFrame.FadeTime = 0
                end
        else
                argFrame:Hide()
        end
end

-- XPerl_ProcessFade(argFrame)
function XPerl_ProcessFade(argFrame)
        if (argFrame.Fading == 1) then
                argFrame.FadeTime = argFrame.FadeTime + arg1

                if (argFrame.FadeTime >= 1) then
                        argFrame:StopMovingOrSizing()
                        argFrame:Hide()
                        XPerl_CancelFade(argFrame)
                else
                        local newAlpha = XPerlConfig.Transparency * (1 - argFrame.FadeTime)
                        argFrame:SetAlpha(newAlpha)
                end
        end
end

-- XPerl_Update_RaidIcon
function XPerl_Update_RaidIcon(unit, frame)
        local index = GetRaidTargetIndex(unit)
        if ( index ) then
                SetRaidTargetIconTexture(frame, index)
                frame:Show()
        else
                frame:Hide()
        end
end