Turtles all the way down!
Port to Turtle WoW and add their custom Zones.
This commit is contained in:
+685
@@ -0,0 +1,685 @@
|
||||
--
|
||||
-- LevelRange :: Main Lua File
|
||||
-- Copyright (c) 2006 Philip Hughes (Bull3t)
|
||||
--
|
||||
-- Shows the zone level range on the World Map.
|
||||
--
|
||||
-- Thanks to Dhask for allowing the use of his FlightMap.
|
||||
--
|
||||
-- An unlimited license to use, reproduce and copy this work is granted, on
|
||||
-- the condition that the licensee accepts all responsibility and liability
|
||||
-- for any damage that may arise from the use of this AddOn.
|
||||
--
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Global Variables
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Name
|
||||
LEVELRANGE_NAME = "LevelRange"
|
||||
|
||||
-- Version Number
|
||||
LEVELRANGE_VERSION = "1.2.0";
|
||||
|
||||
-- Details
|
||||
Details = {
|
||||
name = LEVELRANGE_NAME,
|
||||
version = LEVELRANGE_VERSION,
|
||||
releaseDate = "September 05, 2006",
|
||||
author = "Bull3t",
|
||||
email = "bull3t@ntlworld.com",
|
||||
website = "http://www.levelrange.co.nr",
|
||||
category = MYADDONS_CATEGORY_MAP,
|
||||
optionsframe = "LevelRangeOptionsFrame"
|
||||
};
|
||||
|
||||
-- Help
|
||||
Help = {
|
||||
[1] = LEVELRANGE_HELP0 .. "\n" .. LEVELRANGE_HELP1 .. "\n" .. LEVELRANGE_HELP2 .. "\n" .. LEVELRANGE_HELP3 .. "\n" .. LEVELRANGE_HELP4 .. "\n" .. LEVELRANGE_HELP5,
|
||||
};
|
||||
|
||||
-- Player Info
|
||||
playerName = UnitName("player");
|
||||
realmName = GetRealmName();
|
||||
|
||||
-- Default Variables
|
||||
LevelRangeSettings = {};
|
||||
DEFAULT_LEVELRANGE_SHOW = true;
|
||||
DEFAULT_LEVELRANGE_SHOWINSTANCE = true;
|
||||
DEFAULT_LEVELRANGE_SHOWRAIDS = true;
|
||||
DEFAULT_LEVELRANGE_SHOWPVP = true;
|
||||
|
||||
-- Realm|PlayerName
|
||||
LEVELRANGE_REALMPLAYERNAME = realmName .. "|" .. playerName
|
||||
|
||||
-- Slash Commands
|
||||
LEVELRANGE_SLASH1 = "lr"
|
||||
LEVELRANGE_SLASH2 = "levelrange"
|
||||
|
||||
-- Faction Types
|
||||
local lTYPE_HORDE = LEVELRANGE_HORDE;
|
||||
local lTYPE_ALLIANCE = LEVELRANGE_ALLIANCE;
|
||||
local lTYPE_CONTESTED = LEVELRANGE_CONTESTED;
|
||||
|
||||
-- Level Ranges
|
||||
LEVELRANGE_RANGES = {
|
||||
[LEVELRANGE_ELWYNN] = { 1, 10, lTYPE_ALLIANCE},
|
||||
[LEVELRANGE_DUNMOROGH] = { 1, 10, lTYPE_ALLIANCE},
|
||||
[LEVELRANGE_TIRISFAL] = { 1, 10, lTYPE_HORDE},
|
||||
[LEVELRANGE_LOCHMODAN] = {10, 20, lTYPE_ALLIANCE},
|
||||
[LEVELRANGE_SILVERPINE] = {10, 20, lTYPE_HORDE},
|
||||
[LEVELRANGE_WESTFALL] = {10, 20, lTYPE_ALLIANCE},
|
||||
[LEVELRANGE_REDRIDGE] = {15, 25, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_DUSKWOOD] = {18, 30, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_HILLSBRAD] = {20, 30, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_WETLANDS] = {20, 30, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_ALTERAC] = {30, 40, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_ARATHI] = {30, 40, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_STRANGLETHORN] = {30, 45, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_BADLANDS] = {35, 45, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_SORROWS] = {35, 45, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_HINTERLANDS] = {40, 50, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_SEARINGGORGE] = {43, 50, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_BLASTEDLANDS] = {45, 55, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_BURNINGSTEPPE] = {50, 58, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_WESTERNPLAGUE] = {51, 58, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_EASTERNPLAGUE] = {53, 60, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_DEADWINDPASS] = {55, 60, lTYPE_CONTESTED},
|
||||
|
||||
[LEVELRANGE_DUROTAR] = { 1, 10, lTYPE_HORDE},
|
||||
[LEVELRANGE_MULGORE] = { 1, 10, lTYPE_HORDE},
|
||||
[LEVELRANGE_DARKSHORE] = {10, 20, lTYPE_ALLIANCE},
|
||||
[LEVELRANGE_BARRENS] = {10, 25, lTYPE_HORDE},
|
||||
[LEVELRANGE_STONETALON] = {15, 27, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_ASHENVALE] = {18, 30, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_1KNEEDLES] = {25, 35, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_DESOLACE] = {30, 40, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_DUSTWALLOW] = {35, 45, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_FERALAS] = {40, 50, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_TANARIS] = {40, 50, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_AZSHARA] = {45, 55, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_FELWOOD] = {48, 55, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_UNGOROCRATER] = {48, 55, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_SILITHUS] = {55, 60, lTYPE_CONTESTED},
|
||||
[LEVELRANGE_WINTERSPRING] = {55, 60, lTYPE_CONTESTED},
|
||||
|
||||
[LEVELRANGE_MOONGLADE] = { 1, 60, lTYPE_CONTESTED},
|
||||
|
||||
[LEVELRANGE_TELDRASSIL] = { 1, 10, lTYPE_ALLIANCE},
|
||||
|
||||
|
||||
--Turtle WoW Zones
|
||||
|
||||
|
||||
--["Gilneas"] = {43, 49, lTYPE_CONTESTED},
|
||||
["Gillijim's Isle"] = {48, 53, lTYPE_CONTESTED},
|
||||
["Lapidis Isle"] = {48, 53, lTYPE_CONTESTED},
|
||||
["Tel'Abim"] = {54, 60, lTYPE_CONTESTED},
|
||||
["Hyjal"] = {60, 60, lTYPE_CONTESTED},
|
||||
|
||||
};
|
||||
|
||||
-- Instances
|
||||
LEVELRANGE_INSTANCES = {
|
||||
[LEVELRANGE_WESTFALL] = {LEVELRANGE_DEADMINES, " (17-26)"},
|
||||
[LEVELRANGE_BARRENS] = {LEVELRANGE_WAILINGCAVERNS, " (17-24)", LEVELRANGE_RAZORFENKRAUL, " (25-30)", LEVELRANGE_RAZORFENDOWNS, " (33-45)"},
|
||||
[LEVELRANGE_SILVERPINE] = {LEVELRANGE_SHADOWFANGKEEP, " (22-30)"},
|
||||
[LEVELRANGE_ASHENVALE] = {LEVELRANGE_BLACKFATHOMDEEPS, " (24-32)"},
|
||||
[LEVELRANGE_DUNMOROGH] = {LEVELRANGE_GNOMEREGAN, " (29-38)"},
|
||||
[LEVELRANGE_TIRISFAL] = {LEVELRANGE_SCARLETMONASTERY, " (34-45)"},
|
||||
[LEVELRANGE_BADLANDS] = {LEVELRANGE_ULDAMAN, " (35-47)"},
|
||||
[LEVELRANGE_DESOLACE] = {LEVELRANGE_MARAUDON, " (46-55)"},
|
||||
[LEVELRANGE_SORROWS] = {LEVELRANGE_SUNKENTEMPLE, " (45-55)"},
|
||||
[LEVELRANGE_SEARINGGORGE] = {LEVELRANGE_BLACKROCKDEPTH, " (52-60)", LEVELRANGE_BLACKROCKSPIRE, " (58-60)"},
|
||||
[LEVELRANGE_BURNINGSTEPPE] = {LEVELRANGE_BLACKROCKDEPTH, " (52-60)", LEVELRANGE_BLACKROCKSPIRE, " (58-60)"},
|
||||
[LEVELRANGE_EASTERNPLAGUE] = {LEVELRANGE_STRATHOLME, " (58-60)"},
|
||||
[LEVELRANGE_FERALAS] = {LEVELRANGE_DIREMAUL, " (55-60)"},
|
||||
[LEVELRANGE_WESTERNPLAGUE] = {LEVELRANGE_SCHOLOMANCE, " (57-60)"},
|
||||
[LEVELRANGE_DUROTAR] = {LEVELRANGE_RAGEFIRECHASM, " (13-18)"},
|
||||
[LEVELRANGE_ELWYNN] = {LEVELRANGE_STOCKADES, " (24-32)"},
|
||||
[LEVELRANGE_TANARIS] = {LEVELRANGE_ZULFARRAK, " (44-54)"},
|
||||
|
||||
--Turtle WoW Dungeons
|
||||
|
||||
|
||||
[LEVELRANGE_ASHENVALE] = {"The Crescent Grove", " (32-38)"},
|
||||
--["Gilneas"] = {"Gilneas City", " (39-45)"},
|
||||
[LEVELRANGE_BURNINGSTEPPE] = {"Hateforge Quarry", " (52-60)"},
|
||||
[LEVELRANGE_DEADWINDPASS] = {"The Karazhan Crypt", " (58 - 60)"},
|
||||
[LEVELRANGE_ELWYNN] = {"The Stormwind Vaults", " (60+)"},
|
||||
[LEVELRANGE_TANARIS] = {"Caverns of Time: The Black Morass", " (60+)"},
|
||||
};
|
||||
|
||||
-- Raids
|
||||
LEVELRANGE_RAIDS = {
|
||||
[LEVELRANGE_EASTERNPLAGUE] = {LEVELRANGE_NAXXRAMAS, " (60+)"},
|
||||
[LEVELRANGE_DUSTWALLOW] = {LEVELRANGE_ONYXIASLAIR, " (60+)"},
|
||||
[LEVELRANGE_SILITHUS] = {LEVELRANGE_RUINSAHNQIRAJ, " (60+)", LEVELRANGE_TEMPLEAHNQIRAJ, " (60+)"},
|
||||
[LEVELRANGE_STRANGLETHORN] = {LEVELRANGE_ZULGURUB, " (60+)"},
|
||||
|
||||
--Turtle WoW Raids
|
||||
|
||||
["Hyjal"] = {"The Emerald Sanctum", " (60+)"},
|
||||
[LEVELRANGE_DEADWINDPASS] = {"Lower Karazhan Halls", " (60+)"},
|
||||
};
|
||||
|
||||
-- Sub-zones
|
||||
LEVELRANGE_SUBZONES = {
|
||||
[LEVELRANGE_ORGRIMMAR] = LEVELRANGE_DUROTAR,
|
||||
[LEVELRANGE_THUNDERBLUFF] = LEVELRANGE_MULGORE,
|
||||
[LEVELRANGE_UNDERCITY] = LEVELRANGE_TIRISFAL,
|
||||
[LEVELRANGE_IRONFORGE] = LEVELRANGE_DUNMOROGH,
|
||||
[LEVELRANGE_STORMWIND] = LEVELRANGE_ELWYNN,
|
||||
};
|
||||
|
||||
-- Colours
|
||||
LEVELRANGE_COLORS = {
|
||||
Unknown = { r = 0.8, g = 0.8, b = 0.8 },
|
||||
Hostile = { r = 0.9, g = 0.2, b = 0.2 },
|
||||
Friendly = { r = 0.2, g = 0.9, b = 0.2 },
|
||||
Contested = { r = 0.8, g = 0.6, b = 0.4 },
|
||||
|
||||
None = { r = 1.0, g = 1.0, b = 1.0 },
|
||||
Levels = { r = 0.8, g = 0.6, b = 0.0 },
|
||||
};
|
||||
|
||||
-- Options
|
||||
LevelRange = {
|
||||
["Opts"] = LEVELRANGE_DEFAULT_OPTS,
|
||||
};
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Map Drawing Functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Update the tooltip for a zone
|
||||
local function lUpdateTooltip(zoneName)
|
||||
|
||||
-- Check Toggle
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
|
||||
LevelRangeTooltip:Hide();
|
||||
return;
|
||||
end
|
||||
|
||||
-- No zone name, no tooltip!
|
||||
if not zoneName or zoneName == "" then
|
||||
LevelRangeTooltip:Hide();
|
||||
return;
|
||||
end
|
||||
|
||||
-- Unused anchor point
|
||||
LevelRangeTooltip:SetOwner(this, "ANCHOR_LEFT");
|
||||
|
||||
-- Determine colour and level range
|
||||
local title = LEVELRANGE_COLORS.Unknown;
|
||||
local normalcol = LEVELRANGE_COLORS.None;
|
||||
local levelscol = LEVELRANGE_COLORS.Levels;
|
||||
|
||||
local levels = nil;
|
||||
local actualside = nil;
|
||||
|
||||
if (LEVELRANGE_RANGES[zoneName]) then
|
||||
local _, faction = UnitFactionGroup("player");
|
||||
local min = LEVELRANGE_RANGES[zoneName][1];
|
||||
local max = LEVELRANGE_RANGES[zoneName][2];
|
||||
local side = LEVELRANGE_RANGES[zoneName][3];
|
||||
|
||||
if (side == lTYPE_CONTESTED) then
|
||||
title = LEVELRANGE_COLORS.Contested;
|
||||
actualside = "Contested";
|
||||
else
|
||||
if (faction == side) then
|
||||
title = LEVELRANGE_COLORS.Friendly;
|
||||
actualside = "Friendly";
|
||||
else
|
||||
title = LEVELRANGE_COLORS.Hostile;
|
||||
actualside = "Hostile";
|
||||
end
|
||||
end
|
||||
levels = string.format(LEVELRANGE_LEVELS, min, max);
|
||||
end
|
||||
|
||||
-- Start making the Tooltip
|
||||
|
||||
-- Show the zone title and add level range if known
|
||||
LevelRangeTooltip:SetText(zoneName, normalcol.r, normalcol.g, normalcol.b);
|
||||
if levels then
|
||||
LevelRangeTooltip:AddLine(levels, levelscol.r, levelscol.g, levelscol.b);
|
||||
end
|
||||
|
||||
-- Show diplomacy if known and if wanted
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == true) then
|
||||
if actualside then
|
||||
LevelRangeTooltip:AddLine(actualside, title.r, title.g, title.b);
|
||||
end
|
||||
end
|
||||
|
||||
-- Add instance info if wanted
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == true) then
|
||||
if (LEVELRANGE_INSTANCES[zoneName]) then
|
||||
LevelRangeTooltip:AddLine(" ");
|
||||
LevelRangeTooltip:AddLine(LEVELRANGE_INSTANCESTEXT);
|
||||
getInstanceLevels(zoneName, LevelRangeTooltip);
|
||||
end
|
||||
end
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == true) then
|
||||
if (LEVELRANGE_RAIDS[zoneName]) then
|
||||
LevelRangeTooltip:AddLine(" ");
|
||||
LevelRangeTooltip:AddLine(LEVELRANGE_RAIDSTEXT);
|
||||
getRaidLevels(zoneName, LevelRangeTooltip);
|
||||
end
|
||||
end
|
||||
|
||||
-- This stuff seems to get reset each time
|
||||
--LevelRangeTooltip:SetBackdropColor(0, 0, 0, 0.8);
|
||||
LevelRangeTooltip:SetBackdropBorderColor(1, 1, 1, 1);
|
||||
LevelRangeTooltip:ClearAllPoints();
|
||||
LevelRangeTooltip:SetPoint("BOTTOMLEFT", "WorldMapDetailFrame", "BOTTOMLEFT", 0, 0);
|
||||
|
||||
-- Only show if there is level information
|
||||
if levels then
|
||||
LevelRangeTooltip:Show();
|
||||
else
|
||||
LevelRangeTooltip:Hide();
|
||||
end
|
||||
|
||||
-- Now go ahead and put the tooltip into the right location
|
||||
LevelRangeTooltip:ClearAllPoints();
|
||||
LevelRangeTooltip:SetPoint("BOTTOMLEFT", WorldMapDetailFrame);
|
||||
|
||||
if (FlightMapFrame) then
|
||||
LevelRangeTooltip:ClearAllPoints();
|
||||
LevelRangeTooltip:SetPoint("BOTTOMRIGHT", "WorldMapDetailFrame",
|
||||
"BOTTOMRIGHT", 0, 0);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Last drawn info for tooltip
|
||||
lLR_CurrentZone = nil;
|
||||
lLR_CurrentArea = nil;
|
||||
local lLR_OldUpdate = function() end;
|
||||
|
||||
-- Replacement function to draw all the extra goodies of LevelRange
|
||||
function LevelRange_WorldMapButton_OnUpdate(arg1)
|
||||
lLR_OldUpdate(arg1);
|
||||
local areaName = WorldMapFrame.areaName;
|
||||
local zoneNum = GetCurrentMapZone();
|
||||
|
||||
-- Zone name equivalence map
|
||||
if LEVELRANGE_SUBZONES[areaName] then
|
||||
areaName = LEVELRANGE_SUBZONES[areaName];
|
||||
end
|
||||
|
||||
-- Bail out if nothing has changed
|
||||
if zoneNum == lLR_CurrentZone and areaName == lLR_CurrentArea then
|
||||
return;
|
||||
end
|
||||
|
||||
-- Continent or zone map?
|
||||
if zoneNum == 0 then
|
||||
lUpdateTooltip(areaName);
|
||||
else
|
||||
lUpdateTooltip(nil); -- hide it
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Print Message Functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
function printMSG(msg)
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|CF4FFFF4FLevelRange|r: " .. msg, 1, 1, 1);
|
||||
end
|
||||
|
||||
function printHELPMSG(msg)
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|CF4FF4F4FLevelRange Help|r: " .. msg, 1, 1, 1);
|
||||
end
|
||||
|
||||
function printOPTION(msg, status)
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|CF4FFFF4F" .. msg .. "|r" .. ": " .. status, 1 ,1 ,1);
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Slash Command Functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Command
|
||||
function LevelRange_GetCmd(msg)
|
||||
if msg then
|
||||
local a,b,c=strfind(msg, "(%S+)"); -- contiguous string of non-space characters
|
||||
if a then
|
||||
return c, strsub(msg, b+2);
|
||||
else
|
||||
return "";
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Handler
|
||||
function LevelRange_SlashHandler(msg)
|
||||
local Cmd, SubCmd = LevelRange_GetCmd(msg); -- call to above function
|
||||
if (Cmd == "help") then
|
||||
showHelp();
|
||||
|
||||
elseif (Cmd == "list") then
|
||||
printInstances();
|
||||
|
||||
-- Toggle LevelRange tooltip
|
||||
elseif (Cmd == "toggle") then
|
||||
toggleLevelRange();
|
||||
|
||||
-- Toggle LevelRange showing instances
|
||||
elseif (Cmd == "instances") then
|
||||
toggleInstances();
|
||||
|
||||
elseif (Cmd == "") then
|
||||
if (LevelRangeOptionsFrame:IsVisible()) then
|
||||
HideUIPanel(LevelRangeOptionsFrame);
|
||||
else
|
||||
ShowUIPanel(LevelRangeOptionsFrame);
|
||||
end
|
||||
|
||||
-- Wrong command so show help
|
||||
else
|
||||
showHelp();
|
||||
end
|
||||
end
|
||||
|
||||
function printInstances()
|
||||
return;
|
||||
end
|
||||
|
||||
function showHelp()
|
||||
printHELPMSG(LEVELRANGE_HELP0);
|
||||
printHELPMSG(LEVELRANGE_HELP1);
|
||||
printHELPMSG(LEVELRANGE_HELP2);
|
||||
printHELPMSG(LEVELRANGE_HELP3);
|
||||
printHELPMSG(LEVELRANGE_HELP4);
|
||||
printHELPMSG(LEVELRANGE_HELP5);
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Toggles
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
function toggleLevelRange()
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = true;
|
||||
printOPTION(LEVELRANGE_TOGGLESHOW, LEVELRANGE_ENABLED);
|
||||
else
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = false;
|
||||
printOPTION(LEVELRANGE_TOGGLESHOW, LEVELRANGE_DISABLED);
|
||||
end
|
||||
end
|
||||
|
||||
function toggleInstances()
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == false) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = true;
|
||||
printOPTION(LEVELRANGE_TOGGLEINSTANCES, LEVELRANGE_ON);
|
||||
else
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = false;
|
||||
printOPTION(LEVELRANGE_TOGGLEINSTANCES, LEVELRANGE_OFF);
|
||||
end
|
||||
end
|
||||
|
||||
function toggleRaids()
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == false) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = true;
|
||||
printOPTION(LEVELRANGE_TOGGLERAIDS, LEVELRANGE_ON);
|
||||
else
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = false;
|
||||
printOPTION(LEVELRANGE_TOGGLERAIDS, LEVELRANGE_OFF);
|
||||
end
|
||||
end
|
||||
|
||||
function togglePvP()
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == false) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = true;
|
||||
printOPTION(LEVELRANGE_TOGGLEPVP, LEVELRANGE_ON);
|
||||
else
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = false;
|
||||
printOPTION(LEVELRANGE_TOGGLEPVP, LEVELRANGE_OFF);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Instance and Raid Information
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
function getInstanceLevels(zoneName, theTooltip)
|
||||
if (LEVELRANGE_INSTANCES[zoneName]) then
|
||||
if (LEVELRANGE_INSTANCES[zoneName][1]) then
|
||||
theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][1] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][2] .. "|r");
|
||||
end
|
||||
if (LEVELRANGE_INSTANCES[zoneName][3]) then
|
||||
theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][3] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][4] .. "|r");
|
||||
end
|
||||
if (LEVELRANGE_INSTANCES[zoneName][5]) then
|
||||
theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][5] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_INSTANCES[zoneName][6] .. "|r");
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function getRaidLevels(zoneName, theTooltip)
|
||||
if (LEVELRANGE_RAIDS[zoneName]) then
|
||||
if (LEVELRANGE_RAIDS[zoneName][1]) then
|
||||
theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][1] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][2] .. "|r");
|
||||
end
|
||||
if (LEVELRANGE_RAIDS[zoneName][3]) then
|
||||
theTooltip:AddDoubleLine("|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][3] .. "|r", "|CFFcFcFcF" .. LEVELRANGE_RAIDS[zoneName][4] .. "|r");
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Options Frame
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- OnShow of options frame
|
||||
function LevelRangeOptionsFrame_OnShow()
|
||||
-- Set localised strings
|
||||
LevelRangeOptionsFrameClose:SetText(LEVELRANGE_OPTIONS_CLOSE);
|
||||
LevelRangeOptionsFrameTitle:SetText(LEVELRANGE_OPTIONS_TITLE);
|
||||
|
||||
-- Set up options from localised data
|
||||
local base = "LevelRangeOptionsFrame"
|
||||
for optid, option in pairs(LEVELRANGE_OPTIONS) do
|
||||
local name = base .. "Opt" .. optid;
|
||||
local button = getglobal(name);
|
||||
local label = getglobal(name .. "Text");
|
||||
OptionsFrame_EnableCheckBox(button, 1, LevelRange.Opts[option.option]);
|
||||
|
||||
-- Simple stuff
|
||||
label:SetText(option.label);
|
||||
button.tooltipText = option.tooltip;
|
||||
button.option = option.option;
|
||||
button.children = option.children or {};
|
||||
end
|
||||
|
||||
for optid, option in pairs(LEVELRANGE_OPTIONS) do
|
||||
-- Enable/disable any children
|
||||
for _, child in option.children or {} do
|
||||
local other = getglobal(base .. "Opt" .. child);
|
||||
if other then
|
||||
if LevelRange.Opts[option.option] then
|
||||
OptionsFrame_EnableCheckBox(other, 1,
|
||||
LevelRange.Opts[LEVELRANGE_OPTIONS[child].option]);
|
||||
else
|
||||
OptionsFrame_DisableCheckBox(other);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
loadSettings();
|
||||
end
|
||||
|
||||
-- OnHide of options frame
|
||||
function LevelRangeOptionsFrame_OnHide()
|
||||
return;
|
||||
end
|
||||
|
||||
-- OnClick of options button
|
||||
function LevelRangeOptionsCheckButton_OnClick()
|
||||
|
||||
if (this.option == "showLevelRange") then
|
||||
toggleLevelRange(this);
|
||||
elseif (this.option == "showInstances") then
|
||||
toggleInstances();
|
||||
elseif (this.option == "showRaids") then
|
||||
toggleRaids();
|
||||
elseif (this.option == "showPvP") then
|
||||
togglePvP();
|
||||
end
|
||||
|
||||
if (this:GetChecked()) then
|
||||
LevelRange.Opts[this.option] = true;
|
||||
else
|
||||
LevelRange.Opts[this.option] = false;
|
||||
end
|
||||
|
||||
local base = "LevelRangeOptionsFrame";
|
||||
for _, child in this.children do
|
||||
local other = getglobal(base .. "Opt" .. child);
|
||||
if other then
|
||||
if LevelRange.Opts[this.option] then
|
||||
OptionsFrame_EnableCheckBox(other, 1,
|
||||
LevelRange.Opts[LEVELRANGE_OPTIONS[child].option]);
|
||||
else
|
||||
OptionsFrame_DisableCheckBox(other);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Load Settings
|
||||
function loadSettings()
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == true) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt1");
|
||||
|
||||
optionButton:SetChecked(true);
|
||||
LevelRange.Opts["showLevelRange"] = true;
|
||||
|
||||
elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == false) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt1");
|
||||
|
||||
optionButton:SetChecked(false);
|
||||
LevelRange.Opts["showLevelRange"] = false;
|
||||
end
|
||||
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == true) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt2");
|
||||
|
||||
optionButton:SetChecked(true);
|
||||
LevelRange.Opts["showInstances"] = true;
|
||||
|
||||
elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == false) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt2");
|
||||
|
||||
optionButton:SetChecked(false);
|
||||
LevelRange.Opts["showInstances"] = false;
|
||||
end
|
||||
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == true) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt3");
|
||||
|
||||
optionButton:SetChecked(true);
|
||||
LevelRange.Opts["showRaids"] = true;
|
||||
|
||||
elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == false) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt3");
|
||||
|
||||
optionButton:SetChecked(false);
|
||||
LevelRange.Opts["showRaids"] = false;
|
||||
end
|
||||
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == true) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt4");
|
||||
|
||||
optionButton:SetChecked(true);
|
||||
LevelRange.Opts["showPvP"] = true;
|
||||
|
||||
elseif (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == false) then
|
||||
local optionButton = getglobal("LevelRangeOptionsFrame" .. "Opt4");
|
||||
|
||||
optionButton:SetChecked(false);
|
||||
LevelRange.Opts["showPvP"] = false;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- Initialize Functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
function LevelRange_OnLoad()
|
||||
-- Override the world map function
|
||||
lLR_OldUpdate = WorldMapButton_OnUpdate;
|
||||
WorldMapButton_OnUpdate = LevelRange_WorldMapButton_OnUpdate;
|
||||
|
||||
-- Setup slash commands
|
||||
SlashCmdList["LEVELRANGE"] = LevelRange_SlashHandler;
|
||||
SLASH_LEVELRANGE1 = "/" .. LEVELRANGE_SLASH1;
|
||||
SLASH_LEVELRANGE2 = "/" .. LEVELRANGE_SLASH2;
|
||||
|
||||
-- Reload UI Commands
|
||||
SlashCmdList["RELOADUI"] = ReloadUI;
|
||||
SLASH_RELOADUI1 = "/rui";
|
||||
SLASH_RELOADUI2 = "/reloadui";
|
||||
|
||||
-- LevelRange is loaded
|
||||
printMSG(LEVELRANGE_LOADEDPREFIX .. LEVELRANGE_VERSION .. LEVELRANGE_LOADEDSUFFIX)
|
||||
this:RegisterEvent("ADDON_LOADED");
|
||||
this:RegisterEvent("VARIABLES_LOADED");
|
||||
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
end
|
||||
|
||||
function LevelRange_Initialize()
|
||||
-- Make sure LevelRangeSettings is ready
|
||||
if (not LevelRangeSettings) then
|
||||
LevelRangeSettings = { };
|
||||
end
|
||||
|
||||
if (not LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME]) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME] = { };
|
||||
end
|
||||
|
||||
|
||||
-- LevelRange Toggle
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange == nil) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showLevelRange = DEFAULT_LEVELRANGE_SHOW;
|
||||
end
|
||||
|
||||
-- Instances Toggle
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances == nil) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showInstances = DEFAULT_LEVELRANGE_SHOWINSTANCE;
|
||||
end
|
||||
|
||||
-- Raids Toggle
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids == nil) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showRaids = DEFAULT_LEVELRANGE_SHOWRAIDS;
|
||||
end
|
||||
|
||||
-- PvP Toggle
|
||||
if (LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP == nil) then
|
||||
LevelRangeSettings[LEVELRANGE_REALMPLAYERNAME].showPvP = DEFAULT_LEVELRANGE_SHOWPVP;
|
||||
end
|
||||
end
|
||||
|
||||
function LevelRange_OnEvent(event)
|
||||
if (event == "VARIABLES_LOADED") then
|
||||
LevelRange_Initialize();
|
||||
|
||||
-- Register LevelRange with myAddons
|
||||
if (myAddOnsFrame_Register) then
|
||||
myAddOnsFrame_Register(Details, Help);
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user