vanilla-wow-addons – Rev 1
?pathlinks?
-- Font Colors
TRZ_WHITE = HIGHLIGHT_FONT_COLOR_CODE;
TRZ_RED = RED_FONT_COLOR_CODE;
TRZ_ORANGE = "|cffff8020";
TRZ_YELLOW = "|cffffff20";
TRZ_GREEN = GREEN_FONT_COLOR_CODE;
TRZ_GRAY = GRAY_FONT_COLOR_CODE;
TRZ_NORMAL = NORMAL_FONT_COLOR_CODE;
TRZ_FONT_OFF = FONT_COLOR_CODE_CLOSE;
TRZ_INSTANCE_TEXT = "%s%s%s (%d+ " .. TRZ_TOOLTIP_TO .. " %d+)" .. TRZ_FONT_OFF; -- Instance (35+ to 45+)
TRZ_INSTANCE_TEXT2 = "%s%s%s (%d+)" .. TRZ_FONT_OFF; -- Instance (35+)
TRZ_WORLDMAP_TEXT = "(%d-%d)" .. "\n\n" .. TRZ_FONT_OFF;
TRZ_MAX_ROWS = 29;
TRZ_ID = "TRZ";
trz_tooltip_text = "";
trz_button_text = "";
trz_current_continent = 0;
trz_current_zone = 0;
function TRZ_Init()
local zonearray = {};
local i;
if (myAddOnsFrame_Register) then
myAddOnsFrame_Register( {name="TitanRecZone",version=TRZ_VERSION,category=MYADDONS_CATEGORY_PLUGINS} );
end
TRZ_ToggleWorldMapText();
-- Populate zonenames (Hopefully should work for all locales)
zonearray[1]={GetMapZones(1)};
zonearray[2]={GetMapZones(2)};
for i = 0, table.getn(TRZ_ZONES), 1 do
TRZ_ZONES[i].zone = zonearray[TRZ_ZONES[i].continent][TRZ_ZONES[i].nr];
end
end
function TRZ_OnLoad()
this.registry = {
id = TRZ_ID,
menuText = TRZ_MENU_TEXT,
buttonTextFunction = "TRZ_GetButtonText",
tooltipTitle = TRZ_TOOLTIP_TITEL,
tooltipTextFunction = "TRZ_GetTooltipText",
category="Information",
version=TRZ_VERSION,
savedVariables = {
ShowCurInstance = 1,
ShowInstance = 1,
ShowBattleground = 1,
ShowRaid = TITAN_NIL,
ShowFaction = TITAN_NIL,
ShowContinent = TITAN_NIL,
ShowLoc = 1,
ShowMap = 1,
ShowLower = TITAN_NIL,
ShowHigher = TITAN_NIL,
ShowColoredText = 1,
ShowLabelText = 1, -- Default to 1
}
};
this:RegisterEvent("VARIABLES_LOADED");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
end
function TRZ_OnEvent()
if (event == "VARIABLES_LOADED") then
TRZ_Init();
elseif (event == "PLAYER_ENTERING_WORLD") then
this:UnregisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("PLAYER_LEAVING_WORLD");
this:RegisterEvent("MINIMAP_ZONE_CHANGED");
this:RegisterEvent("ZONE_CHANGED_NEW_AREA");
this:RegisterEvent("PLAYER_LEVEL_UP");
--TRZ_UpdateButtonText();
TitanPanelButton_UpdateButton(TRZ_ID);
elseif (event == "PLAYER_LEAVING_WORLD") then
this:UnregisterEvent("PLAYER_LEAVING_WORLD");
this:UnregisterEvent("MINIMAP_ZONE_CHANGED");
this:UnregisterEvent("ZONE_CHANGED_NEW_AREA");
this:UnregisterEvent("PLAYER_LEVEL_UP");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
else
--TRZ_UpdateButtonText();
TitanPanelButton_UpdateButton(TRZ_ID);
end
end
function TRZ_GetButtonText(id)
TRZ_UpdateButtonText();
TRZ_ToggleWorldMapText();
return TRZ_BUTTON_LABEL, trz_button_text;
end
function TRZ_GetTooltipText()
TRZ_UpdateTooltipText();
return trz_tooltip_text;
end
function TitanPanelRightClickMenu_PrepareTRZMenu()
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TRZ_ID].menuText);
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_CUR_INSTANCE, TRZ_ID, "ShowCurInstance");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_FACTION, TRZ_ID, "ShowFaction");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_CONTINENT, TRZ_ID, "ShowContinent");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_INSTANCE, TRZ_ID, "ShowInstance");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_BG, TRZ_ID, "ShowBattleground");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_RAID, TRZ_ID, "ShowRaid");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_LOC, TRZ_ID, "ShowLoc");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_LOWER, TRZ_ID, "ShowLower");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_HIGHER, TRZ_ID, "ShowHigher");
TitanPanelRightClickMenu_AddToggleVar(TRZ_TOGGLE_MAP_TEXT, TRZ_ID, "ShowMap");
TitanPanelRightClickMenu_AddSpacer();
TitanPanelRightClickMenu_AddToggleColoredText(TRZ_ID)
TitanPanelRightClickMenu_AddToggleLabelText(TRZ_ID);
TitanPanelRightClickMenu_AddSpacer();
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TRZ_ID, TITAN_PANEL_MENU_FUNC_HIDE);
end
-- end titan panel setup
function TRZ_GetColor(low,high)
-- PlayerLevel <= low for zone - 4 == RED
-- PlayerLevel < low for zone == ORANGE
-- PlayerLevel <= high == YELLOW
-- PlayerLevel < high + 5 == GREEN
-- Otherwise == GRAY
local playerLevel = UnitLevel("player");
if (playerLevel <= (low-4)) then
return TRZ_RED;
elseif (playerLevel < low) then
return TRZ_ORANGE;
elseif (playerLevel <= high) then
return TRZ_YELLOW;
elseif (playerLevel < (high+5)) then
return TRZ_GREEN;
else
return TRZ_GRAY;
end
end
function TRZ_GetInstanceText(index,colors)
local instanceColor = TRZ_WHITE;
local instanceType = "";
if ( TRZ_INSTANCES[index] == nil ) then
return "";
end
if (colors) then
instanceColor = TRZ_GetColor(TRZ_INSTANCES[index].low,TRZ_INSTANCES[index].high);
end
if (TRZ_INSTANCES[index].type ~= TRZ_INSTANCE) then
return instanceColor .. TRZ_INSTANCES[index].zone .. TRZ_INSTANCE_TYPE[TRZ_INSTANCES[index].type];
end
if (TRZ_INSTANCES[index].low == TRZ_INSTANCES[index].high) then
return format(TRZ_INSTANCE_TEXT2, instanceColor, TRZ_INSTANCES[index].zone,
TRZ_INSTANCE_TYPE[TRZ_INSTANCES[index].type],
TRZ_INSTANCES[index].low );
end
return format(TRZ_INSTANCE_TEXT, instanceColor, TRZ_INSTANCES[index].zone,
TRZ_INSTANCE_TYPE[TRZ_INSTANCES[index].type],
TRZ_INSTANCES[index].low, TRZ_INSTANCES[index].high );
end
function TRZ_GetZoneText(index,colors)
local zoneColor = TRZ_WHITE;
if ( TRZ_ZONES[index] == nil ) then
return "";
end
-- No level range for city zones
if ( TRZ_ZONES[index].faction == TRZ_CITY ) then
return TRZ_WHITE .. TRZ_ZONES[index].zone .. TRZ_FONT_OFF;
end
if (colors) then
zoneColor = TRZ_GetColor(TRZ_ZONES[index].low,TRZ_ZONES[index].high);
end
-- Add zone name and level range.
return zoneColor .. TRZ_ZONES[index].zone ..
" (" .. TRZ_ZONES[index].low .. "-" .. TRZ_ZONES[index].high .. ")" .. TRZ_FONT_OFF;
end
function TRZ_GetFactionText(index,colors)
local factionColor = TRZ_WHITE;
if ( TRZ_ZONES[index] == nil ) then
return "";
end
if (colors) then
if ( TRZ_ZONES[index].faction == TRZ_CONTESTED ) then
factionColor = TRZ_YELLOW;
else
factionColor = TRZ_GREEN;
end
end
return factionColor .. " [" .. TRZ_FACTION[TRZ_ZONES[index].faction] .. "]" .. TRZ_FONT_OFF;
end
function TRZ_GetContinentText(index,colors)
local continentColor = TRZ_WHITE;
if ( TRZ_ZONES[index] == nil ) then
return "";
end
if (colors) then
if ( TRZ_ZONES[index].continent == trz_current_continent ) then
continentColor = TRZ_GREEN;
else
continentColor = TRZ_YELLOW;
end
end
return continentColor .. " (" .. TRZ_CONTINENT[TRZ_ZONES[index].continent] .. ")";
end
function TRZ_GetLevelText(low,high,colors)
local levelColor = TRZ_WHITE;
if ( colors ) then
levelColor = TRZ_GetColor(low,high);
end
return levelColor .. format("%d-%d", low, high) .. TRZ_FONT_OFF;
end
function TRZ_UpdateButtonText()
local i;
local zoneColor;
local playerLevel = UnitLevel("player");
local zoneName = GetRealZoneText();
local colorTooltip = TitanGetVar(TRZ_ID, "ShowColoredText");
trz_button_text = "";
for i = 0, table.getn(TRZ_ZONES), 1 do
if (string.find(zoneName, TRZ_ZONES[i].zone)) then
trz_current_continent = TRZ_ZONES[i].continent;
trz_current_zone = i;
if (TRZ_ZONES[i].faction == TRZ_CITY) then
trz_button_text = TRZ_WHITE .. TRZ_FACTION[TRZ_ZONES[i].faction] .. TRZ_FONT_OFF;
else
trz_button_text = TRZ_GetLevelText(TRZ_ZONES[i].low, TRZ_ZONES[i].high, colorTooltip);
end
return
end
end
-- Check if we are in an instance
for i = 0, table.getn(TRZ_INSTANCES), 1 do
if (string.find(zoneName, TRZ_INSTANCES[i].zone)) then
trz_current_zone = i+100;
trz_button_text = TRZ_GetLevelText(TRZ_INSTANCES[i].low, TRZ_INSTANCES[i].high, colorTooltip);
return;
end
end
return
end
function TRZ_UpdateTooltipText()
local player_level = UnitLevel("player");
local c,i;
local tempText;
local firstShown;
local showLower = 0;
local showHigher = 0;
local colorTooltip = TitanGetVar(TRZ_ID, "ShowColoredText");
local showInstance = TitanGetVar(TRZ_ID, "ShowInstance");
local showCurInstance = TitanGetVar(TRZ_ID, "ShowCurInstance");
local showBattleground = TitanGetVar(TRZ_ID, "ShowBattleground");
local showRaid = TitanGetVar(TRZ_ID, "ShowRaid");
local showFaction = TitanGetVar(TRZ_ID, "ShowFaction");
local showContinent = TitanGetVar(TRZ_ID, "ShowContinent");
local showLoc = TitanGetVar(TRZ_ID, "ShowLoc");
local rows = 4;
trz_tooltip_text = "";
if ( TitanGetVar(TRZ_ID, "ShowLower" ) ) then
showLower = 5;
end
if ( TitanGetVar(TRZ_ID, "ShowHigher" ) ) then
showHigher = 5;
end
if (trz_current_zone >= 100 ) then
tempText = TRZ_TOOLTIP_CZONE .. TRZ_GetInstanceText(trz_current_zone-100,colorTooltip);
else
tempText = TRZ_TOOLTIP_CZONE .. TRZ_GetZoneText(trz_current_zone,colorTooltip) .. "\t";
-- Show faction
if ( showFaction ) then
tempText = tempText .. TRZ_GetFactionText(trz_current_zone,colorTooltip);
end
-- show continent
if ( showContinent ) then
tempText = tempText .. TRZ_GetContinentText(trz_current_zone,colorTooltip);
end
-- Show instances for current zone.
if ( showCurInstance ) then
if ( TRZ_ZONES[trz_current_zone].instances[0] ~= nil ) then
for c = 0, table.getn(TRZ_ZONES[trz_current_zone].instances), 1 do
local f = TRZ_INSTANCES[TRZ_ZONES[trz_current_zone].instances[c]].faction;
if ( (f == TRZ_CONTESTED) or (TRZ_FACTION[f] == UnitFactionGroup("player")) ) then
tempText = tempText .. "\n" .. TRZ_TOOLTIP_CINSTANCES ..
TRZ_GetInstanceText(TRZ_ZONES[trz_current_zone].instances[c], colorTooltip);
rows = rows + 1;
end
end
end
end
end
-- Show recommended zones.
tempText = tempText .. "\n\n" .. TRZ_WHITE .. TRZ_TOOLTIP_RECOMMEND .. TRZ_FONT_OFF;
for i = 0, table.getn(TRZ_ZONES), 1 do
if ( (TRZ_ZONES[i].low - showHigher) <= player_level and
(TRZ_ZONES[i].high + showLower) >= player_level ) then
if ( (TRZ_ZONES[i].faction == TRZ_CONTESTED) or (UnitFactionGroup("player") == TRZ_FACTION[TRZ_ZONES[i].faction]) ) then
if ( rows >= TRZ_MAX_ROWS ) then
tempText = tempText .. "\n" .. TRZ_TOOLTIP_MORE;
trz_tooltip_text = tempText;
return
end
-- Add zone name and level range.
tempText = tempText .. "\n" .. TRZ_GetZoneText(i,colorTooltip) .. "\t";
rows = rows + 1;
-- Show faction
if ( showFaction ) then
tempText = tempText .. TRZ_GetFactionText(i,colorTooltip);
end
-- show continent
if ( showContinent ) then
tempText = tempText .. TRZ_GetContinentText(i,colorTooltip);
end
end
end
end
-- Show recommended instances/battlegrounds/raids
if( showInstance or showRaid or showBattleground ) then
firstShown = nil;
for i = 0, table.getn(TRZ_INSTANCES), 1 do
if ( (TRZ_INSTANCES[i].low - showHigher) <= player_level and
(TRZ_INSTANCES[i].high + showLower) >= player_level ) then
local f = TRZ_INSTANCES[i].faction;
if ( (f == TRZ_CONTESTED) or (TRZ_FACTION[f] == UnitFactionGroup("player")) ) then
local t = TRZ_INSTANCES[i].type
if ( (t == TRZ_INSTANCE and showInstance) or
((t == TRZ_RAID20 or t == TRZ_RAID40) and showRaid) or
(t == TRZ_BATTLEGROUND and showBattleground)) then
if ( rows >= TRZ_MAX_ROWS ) then
tempText = tempText .. "\n" .. TRZ_TOOLTIP_MORE;
trz_tooltip_text = tempText;
return
end
if ( not firstShown ) then
tempText = tempText .. "\n\n" .. TRZ_WHITE .. TRZ_TOOLTIP_RECOMMEND_INSTANCES .. TRZ_FONT_OFF;
firstShown = 1;
rows = rows + 1;
end
if ( rows >= TRZ_MAX_ROWS ) then
tempText = tempText .. "\n" .. TRZ_TOOLTIP_MORE;
trz_tooltip_text = tempText;
return
end
tempText = tempText .. "\n" .. TRZ_GetInstanceText(i,colorTooltip);
rows = rows + 1;
if ( showLoc ) then
if ( TRZ_INSTANCES[i].iloc ) then
tempText = tempText .. "\t" .. TRZ_WHITE .. "<" .. TRZ_INSTANCES[TRZ_INSTANCES[i].iloc].zone .. ">" .. TRZ_FONT_OFF
else
tempText = tempText .. "\t" .. TRZ_WHITE .. "<" .. TRZ_ZONES[TRZ_INSTANCES[i].loc].zone .. ">" .. TRZ_FONT_OFF
end
end
end
end
end
end
end
trz_tooltip_text = tempText;
return
end
-- Worldmap function --
function TRZ_ToggleWorldMapText()
if (TitanGetVar(TRZ_ID, "ShowMap")) then
TRZ_WorldMap_Frame:Show();
else
TRZ_WorldMap_Frame:Hide();
end
end
function TRZ_WorldMapButton_OnUpdate()
local player_level = UnitLevel("player");
local zoneColor;
if (WorldMapFrame.areaName ~= nil) then
for i = 0, table.getn(TRZ_ZONES), 1 do
if (string.find(WorldMapFrame.areaName, TRZ_ZONES[i].zone)) then
zoneColor = TRZ_GetColor(TRZ_ZONES[i].low, TRZ_ZONES[i].high);
zoneText = zoneColor .. format(TRZ_WORLDMAP_TEXT, TRZ_ZONES[i].low, TRZ_ZONES[i].high);
if ( TRZ_ZONES[i].instances[0] ~= nil ) then
zoneText = zoneText .. TRZ_NORMAL .. TRZ_TOOLTIP_CINSTANCES .. "\n" .. TRZ_FONT_OFF;
for c = 0, table.getn(TRZ_ZONES[i].instances), 1 do
zoneText = zoneText .. TRZ_GetInstanceText(TRZ_ZONES[i].instances[c], true) .. "\n";
end
end
TRZ_WorldMap_Text:SetText(zoneText);
end
end
else
TRZ_WorldMap_Text:SetText("");
end
if (WorldMapFrame.poiHighlight == 1) then
for i = 0, table.getn(TRZ_ZONES), 1 do
if (string.find(WorldMapFrameAreaLabel:GetText(), TRZ_ZONES[i].zone)) then
zoneText = TRZ_WHITE .. TRZ_FACTION[TRZ_ZONES[i].faction] .. "\n\n" .. TRZ_FONT_OFF;
if (TRZ_ZONES[i].instances ~= nil) then
zoneText = zoneText .. TRZ_NORMAL .. TRZ_TOOLTIP_RINSTANCES .. "\n" .. TRZ_FONT_OFF;
for c = 0, table.getn(TRZ_ZONES[i].instances), 1 do
zoneText = zoneText .. TRZ_GetInstanceText(TRZ_ZONES[i].instances[c], true) .. "\n";
end
end
TRZ_WorldMap_Text:SetText(zoneText);
end
end
end
end