-- Font Colors BM_WHITE = HIGHLIGHT_FONT_COLOR_CODE; BM_RED = RED_FONT_COLOR_CODE; BM_ORANGE = "|cffff8020"; BM_YELLOW = "|cffffff20"; BM_GREEN = GREEN_FONT_COLOR_CODE; BM_GRAY = GRAY_FONT_COLOR_CODE; BM_NORMAL = NORMAL_FONT_COLOR_CODE; BM_FONT_OFF = FONT_COLOR_CODE_CLOSE; BRL_ZONE_RANGE = BM_WHITE .. BRL_TOOLTIP_CRANGE .. BM_FONT_OFF; BRL_INSTANCE_TEXT = "%s%s (%d+ " .. BRL_TOOLTIP_TO .. " %d+)" .. BM_FONT_OFF; -- Instance (35+ to 45+) BRL_WORLDMAP_TEXT = "(%d-%d)" .. "\n\n" .. BM_FONT_OFF; BM_REC_LEVEL_TOOLTIP_TEXT = ""; BM_REC_LEVEL_TOOLTIP_SHORT = ""; BM_REC_ZONE = ""; BM_PLAYER_LEVEL = 0; -- ***SAVED VARIABLES*** -- BRL_STARTUP = {}; BRL_STARTUP.m_Loaded = false; BRL_STARTUP.m_strPlayer = ""; BRL_CONFIG = {}; -- **Default values** DEFAULT_BRL_ZONE_INFO_ENABLE = true; DEFAULT_BRL_TOOLTIP_ENABLE = true; DEFAULT_BRL_MAP_TEXT_ENABLE = true; DEFAULT_BRL_TOOLTIP_OFFSET_LEFT = true; DEFAULT_BRL_TOOLTIP_OFFSET_BOTTOM = true; DEFAULT_BRL_SHOW_TOOLTIP_FACTION = false; DEFAULT_BRL_SHOW_TOOLTIP_INSTANCE = true; DEFAULT_BRL_SHOW_TOOLTIP_CONTINENT= false; DEFAULT_BRL_BORDER_ALPHASLIDER = 1; BRL_SET_LEFT_RIGHT = "LEFT"; BRL_SET_BOTTOM_TOP = "BOTTOM"; function BM_Rec_Level_OnLoad() this:RegisterEvent("VARIABLES_LOADED"); this:RegisterEvent("PLAYER_ENTERING_WORLD"); end function BM_Rec_Level_OnEvent() if (event == "VARIABLES_LOADED") then BRL_initialize(); 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"); BM_Rec_Level_Update_Text(); 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 BM_Rec_Level_Update_Text(); end end function BRL_initialize() -- double check that we are getting the player's name update if (BRL_STARTUP.m_Loaded == false) then -- add the realm to the "player's name" for the config settings BRL_STARTUP.m_strPlayer = GetCVar("realmName") .. "|" .. UnitName("player"); -- Make sure BM_CONFIG is ready if (not BRL_CONFIG) then BRL_CONFIG = { }; end if (not BRL_CONFIG[BRL_STARTUP.m_strPlayer]) then BRL_CONFIG[BRL_STARTUP.m_strPlayer] = { }; end -- Zone Info Box Show/Hide if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable = DEFAULT_BRL_ZONE_INFO_ENABLE; end -- Tooltip Show/Hide if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable = DEFAULT_BRL_TOOLTIP_ENABLE; end -- Map Text Show/Hide if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable = DEFAULT_BRL_MAP_TEXT_ENABLE; end -- Tooltip Offset Left/Right if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left = DEFAULT_BRL_TOOLTIP_OFFSET_LEFT; end -- Tooltip Offset Bottom/Top if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom = DEFAULT_BRL_TOOLTIP_OFFSET_BOTTOM; end if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha == nil) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha = DEFAULT_BRL_BORDER_ALPHASLIDER; end if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable == false) then BM_Rec_Level:Hide(); BM_Rec_Level_Text_Frame:Hide(); else BM_Rec_Level:Show(); BM_Rec_Level_Text_Frame:Show(); end if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable == false) then BM_Rec_WorldMap_Frame:Hide(); else BM_Rec_WorldMap_Frame:Show(); end if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom == false) then BRL_SET_BOTTOM_TOP = "TOP"; else BRL_SET_BOTTOM_TOP = "BOTTOM"; end if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left == false) then BRL_SET_LEFT_RIGHT = "RIGHT"; else BRL_SET_LEFT_RIGHT = "LEFT"; end BM_Rec_Level:SetAlpha(BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha); if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction == nil ) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction = DEFAULT_BRL_SHOW_TOOLTIP_FACTION; end if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance == nil ) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance = DEFAULT_BRL_SHOW_TOOLTIP_INSTANCE; end if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent == nil ) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent = DEFAULT_BRL_SHOW_TOOLTIP_CONTINENT; end -- variables are loaded, ready to go BRL_STARTUP.m_Loaded = true; if (DEFAULT_CHAT_FRAME) then DEFAULT_CHAT_FRAME:AddMessage(BRL_LOADED .. BRL_LOADED_INFO); else UIErrorsFrame:AddMessage(BRL_LOADED, 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME); end end end function BM_Get_Color(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 BM_RED; elseif (playerLevel < low) then return BM_ORANGE; elseif (playerLevel <= high) then return BM_YELLOW; elseif (playerLevel < (high+5)) then return BM_GREEN; else return BM_GRAY; end end function BM_Get_Instance_Text(index,colors) local instanceColor = BM_WHITE; if ( BM_INSTANCES[index] == nil ) then return ""; end if (colors) then instanceColor = BM_Get_Color(BM_INSTANCES[index].low,BM_INSTANCES[index].high); end return format(BRL_INSTANCE_TEXT, instanceColor, BM_INSTANCES[index].zone, BM_INSTANCES[index].low, BM_INSTANCES[index].high ); end function BM_Rec_Level_Update_Text() local playerLevel = UnitLevel("player"); local zoneColor; BM_REC_LEVEL_BUTTON_TEXT = ""; for i = 0, table.getn(BM_RECOMMEND), 1 do if (string.find(BM_RECOMMEND[i].zone, GetZoneText())) then BM_Rec_Level_Update_Tooltip_Text(i); if (BM_RECOMMEND[i].faction == BRL_CITY) then BM_REC_LEVEL_BUTTON_TEXT = BM_WHITE .. BRL_FACTION[BM_RECOMMEND[i].faction] .. BM_FONT_OFF; else zoneColor = BM_Get_Color(BM_RECOMMEND[i].low,BM_RECOMMEND[i].high); BM_REC_LEVEL_BUTTON_TEXT = zoneColor .. format("%d-%d", BM_RECOMMEND[i].low, BM_RECOMMEND[i].high) .. BM_FONT_OFF; end end end BM_Rec_Level_Text:SetText(BRL_ZONE_RANGE .. BM_REC_LEVEL_BUTTON_TEXT); return end function BM_Rec_Level_Update_Tooltip_Text(index) local player_level = UnitLevel("player"); local c,i; local tempText,tempText2; BM_REC_LEVEL_TOOLTIP_TEXT = ""; BM_REC_LEVEL_TOOLTIP_SHORT = ""; tempText = BRL_TOOLTIP_CZONE .. BM_WHITE .. GetZoneText() .. BM_FONT_OFF; if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance ) then if ( BM_RECOMMEND[index].instances[0] ~= nil ) then for c = 0, table.getn(BM_RECOMMEND[index].instances), 1 do tempText = tempText .. "\n" .. BRL_TOOLTIP_CINSTANCES .. BM_Get_Instance_Text(BM_RECOMMEND[index].instances[c], false); end end end tempText = tempText .. "\n\n" .. BM_WHITE .. BRL_TOOLTIP_RECOMMEND .. BM_FONT_OFF; tempText2 = tempText; for i = 0, table.getn(BM_RECOMMEND), 1 do if ( BM_RECOMMEND[i].low <= player_level and BM_RECOMMEND[i].high >= player_level ) then if ( (BM_RECOMMEND[i].faction == BRL_CONTESTED) or (UnitFactionGroup("player") == BRL_FACTION[BM_RECOMMEND[i].faction]) ) then -- Add zone name and level range. tempText = tempText .. "\n" .. BRL_TOOLTIP_RZONE .. BM_WHITE .. BM_RECOMMEND[i].zone .. " (" .. BM_RECOMMEND[i].low .. "-" .. BM_RECOMMEND[i].high .. ")" .. BM_FONT_OFF; tempText2 = tempText2 .. "\n" .. BRL_TOOLTIP_RZONE .. BM_WHITE .. BM_RECOMMEND[i].zone .. " (" .. BM_RECOMMEND[i].low .. "-" .. BM_RECOMMEND[i].high .. ")" .. BM_FONT_OFF; -- Show faction if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction ) then tempText = tempText .. "\n" .. BRL_TOOLTIP_RFACTION .. BM_WHITE .. BRL_FACTION[BM_RECOMMEND[i].faction] .. BM_FONT_OFF; tempText2 = tempText2 .. " [" .. BRL_FACTION[BM_RECOMMEND[i].faction] .. "]"; end -- show continent if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent ) then tempText = tempText .. "\n" .. BRL_TOOLTIP_RCONTINENT .. BM_WHITE .. BRL_CONTINENT[BM_RECOMMEND[i].continent] .. BM_FONT_OFF; tempText2 = tempText2 .. " (" .. BRL_CONTINENT[BM_RECOMMEND[i].continent] .. ")"; end -- add any instances if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance) then if ( BM_RECOMMEND[i].instances[0] ~= nil ) then for c = 0, table.getn(BM_RECOMMEND[i].instances), 1 do tempText = tempText .. "\n" .. BRL_TOOLTIP_RINSTANCES .. BM_Get_Instance_Text(BM_RECOMMEND[i].instances[c], false); end end end if ( BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance or BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent or BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction ) then tempText = tempText .. "\n"; -- Extra linebreak if we show more then just zone name end end end end tempText = tempText .. "\n\n" .. BM_WHITE .. BRL_TOOLTIP_RECOMMEND_INSTANCES .. BM_FONT_OFF; tempText2 = tempText2 .. "\n\n" .. BM_WHITE .. BRL_TOOLTIP_RECOMMEND_INSTANCES .. BM_FONT_OFF; for i = 0, table.getn(BM_INSTANCES), 1 do if ( BM_INSTANCES[i].low <= player_level and BM_INSTANCES[i].high >= player_level ) then tempText = tempText .. "\n" .. BRL_TOOLTIP_RZONE .. BM_Get_Instance_Text(i,false); tempText2 = tempText2 .. "\n" .. BRL_TOOLTIP_RZONE .. BM_Get_Instance_Text(i,false); end end BM_REC_LEVEL_TOOLTIP_TEXT = tempText; BM_REC_LEVEL_TOOLTIP_SHORT = tempText2; return end -- when the mouse goes over the main frame, this gets called function BM_Rec_Level_OnEnter() BRL_STARTUP.m_strPlayer = GetCVar("realmName") .. "|" .. UnitName("player"); if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable) then if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable == true) then if (BRL_SET_BOTTOM_TOP == "BOTTOM") then GameTooltip:SetOwner(this, "ANCHOR_NONE"); GameTooltip:SetPoint("TOP" .. BRL_SET_LEFT_RIGHT, "BM_Rec_Level", "BOTTOM" .. BRL_SET_LEFT_RIGHT, 0, 0); -- set the tool tip text GameTooltip:SetText(BRL_TOOPTIP_TITLE,nil,nil,nil,1); GameTooltip:AddLine(BM_REC_LEVEL_TOOLTIP_TEXT); GameTooltip:Show(); elseif (BRL_SET_BOTTOM_TOP == "TOP") then GameTooltip:SetOwner(this, "ANCHOR_NONE"); GameTooltip:SetPoint("BOTTOM" .. BRL_SET_LEFT_RIGHT, "BM_Rec_Level", "TOP" .. BRL_SET_LEFT_RIGHT, 0, 0); -- set the tool tip text GameTooltip:SetText(BRL_TOOPTIP_TITLE,nil,nil,nil,1); GameTooltip:AddLine(BM_REC_LEVEL_TOOLTIP_TEXT); GameTooltip:Show(); end end end end function BM_Rec_Level_OnLeave() BRL_STARTUP.m_strPlayer = GetCVar("realmName") .. "|" .. UnitName("player"); if (BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable == true) then -- put the tool tip in the default position GameTooltip_SetDefaultAnchor(GameTooltip, UIParent); GameTooltip:Hide(); end end function BM_WorldMapButton_OnUpdate() local player_level = UnitLevel("player"); local zoneColor; if (WorldMapFrame.areaName ~= nil) then for i = 0, table.getn(BM_RECOMMEND), 1 do if (string.find(BM_RECOMMEND[i].zone, WorldMapFrame.areaName)) then zoneColor = BM_Get_Color(BM_RECOMMEND[i].low, BM_RECOMMEND[i].high); zoneText = zoneColor .. format(BRL_WORLDMAP_TEXT, BM_RECOMMEND[i].low, BM_RECOMMEND[i].high); if ( BM_RECOMMEND[i].instances[0] ~= nil ) then zoneText = zoneText .. BM_NORMAL .. BRL_TOOLTIP_CINSTANCES .. "\n" .. BM_FONT_OFF; for c = 0, table.getn(BM_RECOMMEND[i].instances), 1 do zoneText = zoneText .. BM_Get_Instance_Text(BM_RECOMMEND[i].instances[c], true) .. "\n"; end end BM_Rec_WorldMap_Text:SetText(zoneText); end end else BM_Rec_WorldMap_Text:SetText(""); end if (WorldMapFrame.poiHighlight == 1) then for i = 0, table.getn(BM_RECOMMEND), 1 do if (string.find(BM_RECOMMEND[i].zone, WorldMapFrameAreaLabel:GetText())) then zoneText = BM_WHITE .. BRL_FACTION[BM_RECOMMEND[i].faction] .. "\n\n" .. BM_FONT_OFF; if (BM_RECOMMEND[i].instances ~= nil) then zoneText = zoneText .. BM_NORMAL .. BRL_TOOLTIP_RINSTANCES .. "\n" .. BM_FONT_OFF; for c = 0, table.getn(BM_RECOMMEND[i].instances), 1 do zoneText = zoneText .. BM_Get_Instance_Text(BM_RECOMMEND[i].instances[c], true) .. "\n"; end end BM_Rec_WorldMap_Text:SetText(zoneText); end end end end function BRL_Zone_Info_Enable(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable = false; BM_Rec_Level:Hide(); BM_Rec_Level_Text_Frame:Hide(); else BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable = true; BM_Rec_Level:Show(); BM_Rec_Level_Text_Frame:Show(); end end function BRL_Tooltip_Enable(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable = false; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable = true; end end function BRL_Map_Text_Enable(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable = false; BM_Rec_WorldMap_Frame:Hide(); else BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable = true; BM_Rec_WorldMap_Frame:Show(); end end function BRL_Tooltip_Offset_Left(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left = false; BRL_SET_LEFT_RIGHT = "RIGHT"; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left = true; BRL_SET_LEFT_RIGHT = "LEFT"; end end function BRL_Tooltip_Offset_Bottom(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom = false; BRL_SET_BOTTOM_TOP = "TOP"; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom = true; BRL_SET_BOTTOM_TOP = "BOTTOM"; end end function BRL_Show_Tooltip_Faction(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction = false; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction = true; end BM_Rec_Level_Update_Text(); end function BRL_Show_Tooltip_Instance(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance = false; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance = true; end BM_Rec_Level_Update_Text(); end function BRL_Show_Tooltip_Continent(msg) if (msg == false) then BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent = false; else BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent = true; end BM_Rec_Level_Update_Text(); end function BRL_Border_Alpha(msg) if (msg < 0 or msg > 1) then UIErrorsFrame:AddMessage(BRL_ERROR_MESSAGE_1, 1.0, 0.0, 0.0, 1.0, UIERRORS_HOLD_TIME); else BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha = msg; BM_Rec_Level:SetAlpha(BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha); end end function BRL_Reset_SlashHandler() StaticPopup_Show("BRL_RESET_ALL"); end function BRL_Reset_Everything() BRL_CONFIG[BRL_STARTUP.m_strPlayer].zone_info_enable = DEFAULT_BRL_ZONE_INFO_ENABLE; BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_enable = DEFAULT_BRL_TOOLTIP_ENABLE; BRL_CONFIG[BRL_STARTUP.m_strPlayer].map_text_enable = DEFAULT_BRL_MAP_TEXT_ENABLE; BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_left = DEFAULT_BRL_TOOLTIP_OFFSET_LEFT; BRL_CONFIG[BRL_STARTUP.m_strPlayer].tooltip_offset_bottom = DEFAULT_BRL_TOOLTIP_OFFSET_BOTTOM; BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_faction = DEFAULT_BRL_SHOW_TOOLTIP_FACTION; BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_instance = DEFAULT_BRL_SHOW_TOOLTIP_INSTANCE; BRL_CONFIG[BRL_STARTUP.m_strPlayer].show_tooltip_continent = DEFAULT_BRL_SHOW_TOOLTIP_CONTINENT; BRL_CONFIG[BRL_STARTUP.m_strPlayer].border_alpha = DEFAULT_BRL_BORDER_ALPHASLIDER; BM_Rec_Level:ClearAllPoints(); BM_Rec_Level:SetPoint("CENTER", "UIParent", "CENTER", 0, 0); BM_Rec_Level:Show(); BM_Rec_Level_Text_Frame:Show(); BRL_SET_BOTTOM_TOP = "BOTTOM"; BRL_SET_LEFT_RIGHT = "LEFT"; end