Turtles all the way down!

Port to Turtle WoW and add their custom Zones.
This commit is contained in:
Tenyar97
2023-06-25 00:33:27 -04:00
commit 83be4f4594
5 changed files with 953 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
--
-- LevelRange :: Installation
-- Copyright (c) 2006 Philip Hughes (Bull3t)
--
----------------------
How To Install
----------------------
To install the addon simply extract all of the files from the ZIP file to "\World of Warcraft\Interface\Addons\LevelRange-Turtle
Then Run the game, login and before selecting a character, press the little button that reads "Addons" in the bottom right corner of the character selection screen.
Make sure that "LevelRange" is checked and is not greyed out. Press OK, select a character and you are done.
To test that it is working just open up the World Map, zoom in/out onto any continent and mouse-over any zone, if all works out well there should be a Tooltip box down in the bottom left corner, or if you have FlightMap installed, in bottom right corner.
+12
View File
@@ -0,0 +1,12 @@
## Interface: 11200
## Title: LevelRange [|cff3fcf26Turtle|r]
## Version: 1.0.0
## Author: Bull3t
## Notes: Shows the zone level range on the World Map. Now with 100% more turtles!
## eMail: bull3t@ntlworld.com
## URL: http://bull3t.blogspot.com
## DefaultState: Enabled
## LoadOnDemand: 0
## OptionalDeps: myAddOns
## SavedVariables: LevelRangeSettings
LevelRange.xml
+685
View File
@@ -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
+189
View File
@@ -0,0 +1,189 @@
<?xml-stylesheet type="text/xsl" href="/css/wowui.xsl"?>
<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<Script file="localisation.lua"/>
<Script file="LevelRange.lua"/>
<!-- Hook OnLoad and OnEvent -->
<Frame name="LevelRangeFrame" parent="UIParent" hidden="true">
<Scripts>
<OnLoad>
LevelRange_OnLoad();
</OnLoad>
<OnEvent>
LevelRange_OnEvent(event);
</OnEvent>
</Scripts>
</Frame>
<!-- Create a new tooltip for this AddOn, so the original WorldMap tip still works -->
<GameTooltip name="LevelRangeTooltip" parent="WorldMapFrame" hidden="true"
frameStrata="TOOLTIP" inherits="GameTooltipTemplate">
<Scripts>
<OnLoad>
this:SetBackdropBorderColor(
TOOLTIP_DEFAULT_COLOR.r,
TOOLTIP_DEFAULT_COLOR.g,
TOOLTIP_DEFAULT_COLOR.b,
0
);
this:SetBackdropColor(
TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.g,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.b,
0
);
</OnLoad>
</Scripts>
</GameTooltip>
<!-- Configuration checkbox template -->
<CheckButton name="LevelRangeOptionsCheckButtonTemplate"
inherits="UICheckButtonTemplate" virtual="true">
<Scripts>
<OnClick>
if (this:GetChecked()) then
PlaySound("igMainMenuOptionCheckBoxOff");
else
PlaySound("igMainMenuOptionCheckBoxOn");
end
LevelRangeOptionsCheckButton_OnClick();
</OnClick>
<OnEnter>
if (this.tooltipText) then
GameTooltip_AddNewbieTip(this.tooltipText, 1, 1, 1);
end
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
</CheckButton>
<!-- Configuration window -->
<Frame name="LevelRangeOptionsFrame" toplevel="true" frameStrata="DIALOG"
movable="true" enableMouse="true" hidden="true" parent="UIParent"
enableKeyboard="true">
<Size>
<AbsDimension x="350" y="195"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background"
edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="32"/>
</TileSize>
<EdgeSize>
<AbsValue val="32"/>
</EdgeSize>
</Backdrop>
<Layers>
<Layer level="ARTWORK">
<Texture name="LevelRangeOptionsFrameHeader"
file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="300" y="64"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="12"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<FontString inherits="GameFontNormal" name="LevelRangeOptionsFrameTitle"
text="LevelRange Options">
<Anchors>
<Anchor point="TOP" relativeTo="LevelRangeOptionsFrameHeader">
<Offset>
<AbsDimension x="0" y="-14"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<!-- Option #1; row 1, column 1 -->
<CheckButton name="$parentOpt1"
inherits="LevelRangeOptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="25" y="-25"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<!-- Option #2; row 2, column 1 -->
<CheckButton name="$parentOpt2"
inherits="LevelRangeOptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="45" y="-55"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<!-- Option #3; row 3, column 1 -->
<CheckButton name="$parentOpt3"
inherits="LevelRangeOptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="45" y="-85"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<!-- Option #4; row 4, column 1 -->
<CheckButton name="$parentOpt4"
inherits="LevelRangeOptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="45" y="-115"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Button name="LevelRangeOptionsFrameClose"
inherits="OptionsButtonTemplate" text="Close">
<Anchors>
<Anchor point="BOTTOM">
<Offset>
<AbsDimension x="0" y="16"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PlaySound("gsTitleOptionOK");
HideUIPanel(LevelRangeOptionsFrame);
</OnClick>
</Scripts>
</Button>
</Frames>
<Scripts>
<OnShow>
LevelRangeOptionsFrame_OnShow();
</OnShow>
<OnHide>
LevelRangeOptionsFrame_OnHide();
</OnHide>
</Scripts>
</Frame>
</Ui>
+54
View File
@@ -0,0 +1,54 @@
--
-- LevelRange :: Readme
-- Copyright (c) 2006 Philip Hughes (Bull3t)
--
----------------------
Details
----------------------
Title: LevelRange
Interface: 11200
Version: 1.2.0
Author: Bull3t, Tenyar97
Addon Website: https://github.com/Tenyar97/LevelRange-Turtle
Current Features:
[*] Shows zone level ranges, diplomacy, raids and instances on World Map.
[*] Has two slash commands for easily reloading the User Interface.
----------------------
Change Log
----------------------
2.0.0 - Release
[*] Ported to Turtle-Wow
[*] Added Zone: Gillijim's Isle
[*] Added Zone: Lapidis Isle
[*] Added Zone: Tel'Abim
[*] Added Dungeon: The Crescent Grove
[*] Added Dungeon: Hateforge Quarry
[*] Added Dungeon: The Karazhan Crypt
[*] Added Dungeon: The Stormwind Vaults
[*] Added Dungeon: Caverns of Time: The Black Morass
[*] Added Raid: The Emerald Sanctum
[*] Added Raid: Lower Karazhan Halls
1.2.0 - Update
[*] Added the showing of raids and raid level ranges.
[*] Added an options frame, you can now specify what you want on and off, access with "/lr" or "/levelrange".
[*] Added myAddons support, LevelRange will now show in myAddons correctly.
[*] Added a small help system.
[*] Added ReloadUI shortcut slash commands, this shortcut is on many addons, and is very useful, reload the UI with "/rui" or "/reloadui".
[*] Changed the way LevelRange shows instance level ranges.
[*] Fixed a bug with FlightMap collision, if FlightMap is enabled, LevelRange will be shown on the right, instead of the left.
1.1.0 - Update
[*] Added the showing of instances and instance level ranges.
[*] Added slash commands, but currently they do nothing.
1.0.0 - Release
[*] Public release version.