--[[ 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