vanilla-wow-addons – Rev 1
?pathlinks?
--------------------------------------------------------------------------
-- TitanBGinfo.lua
--------------------------------------------------------------------------
--[[
Titan Panel [BGinfo]
Plug-in for Titan Panel that displays Battleground info. When you are
in a queue to enter a Battleground, the estimated wait time and your
current wait time will be displayed when hovering over BGinfo. When you
are in a Battleground your BG stats will be displayed. Can be used to
replace the Minimap Battleground icon (which can be hidden).
Author: Corgi - corgiwow@gmail.com
v0.06 (January 6, 2006 11:05 PST)
- updated for 1.90 patch
v0.05 (September 15, 2005 11:37 PST)
- updated toc# for 1.70 patch
- added support for Arathi Basin Battleground
v0.04 (June 13, 2005 20:05 PST)
- added BattleField Instance Run Time
- updated toc# for 1.60 patch
- updated for Titan Panel 1.24
- added French localization
v0.03 (June 12, 2005 22:35 PST)
- renamed "Honor Gained" to "Bonus Honor"
v0.02 (June 11, 2005 15:00 PST)
- added estimated wait time and time waited to the BGinfo button when
in a queue to enter a Battleground
- clicking on the BGinfo icon while in a Battleground will toggle the Stats
window
- added abbreviated Battleground map name to the BGinfo button when in a
queue or a Battleground
- added the ability to handle "confirm" state
v0.01 (June 10, 2005 12:40 PST)
- Initial Release
TODO: German, French and Korean translations.
NOTE: Requires Titan Panel version 1.22+
]]--
TITAN_BGINFO_ID = "BGinfo";
-- default icon
TITAN_BGINFO_ICON = "Interface\\PvPRankBadges\\PvPRankAlliance";
--
-- OnFuctions
--
function TitanPanelBGinfoButton_OnLoad()
this.registry = {
id = TITAN_BGINFO_ID,
menuText = TITAN_BGINFO_MENU_TEXT,
buttonTextFunction = "TitanPanelBGinfoButton_GetButtonText",
tooltipTitle = TITAN_BGINFO_TOOLTIP,
tooltipTextFunction = "TitanPanelBGinfoButton_GetTooltipText",
icon = TITAN_BGINFO_ICON,
iconWidth = 16,
savedVariables = {
ShowIcon = 1,
ShowLabelText = 1,
HideMinimap = TITAN_NIL,
BGINFO_AutoRes = 0,
BGINFO_AutoJoin = 0,
BGINFO_AutoRel = 0,
}
};
this:RegisterEvent("UPDATE_WORLD_STATES");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("BATTLEFIELDS_SHOW");
this:RegisterEvent("BATTLEFIELDS_CLOSED");
this:RegisterEvent("UPDATE_BATTLEFIELD_SCORE");
this:RegisterEvent("UPDATE_BATTLEFIELD_STATUS");
this:RegisterEvent("PLAYER_PVP_KILLS_CHANGED");
--this:RegisterEvent("PLAYER_PVP_RANK_CHANGED");
this:RegisterEvent("PLAYER_DEAD");
end
function TitanPanelBGinfoButton_OnEvent()
--TitanPanelBGinfo_ChatPrint("BGinfo: OnEvent MAIN : "..event);
if ( event == "UPDATE_WORLD_STATES" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Update_World_State\n");
RequestBattlefieldScoreData();
end
if ( event == "PLAYER_ENTERING_WORLD" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Player_Entering_World");
if ( UnitFactionGroup("player") == FACTION_ALLIANCE ) then
TITAN_BGINFO_ICON = "Interface\\PvPRankBadges\\PvPRankAlliance";
else
TITAN_BGINFO_ICON = "Interface\\PvPRankBadges\\PvPRankHorde";
end
TitanPlugins[TITAN_BGINFO_ID].icon = TITAN_BGINFO_ICON;
RequestBattlefieldScoreData();
end
if ( event == "BATTLEFIELDS_SHOW" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Battlefields_Show\n");
end
if ( event == "BATTLEFIELDS_CLOSED" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Battlefields_Closed\n");
end
if ( event == "UPDATE_BATTLEFIELD_SCORE" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Update_Battlefield_Score\n");
RequestBattlefieldScoreData();
end
if ( event == "UPDATE_BATTLEFIELD_STATUS" ) then
--TitanPanelBGinfo_ChatPrint("In OnEvent => Update_Battlefield_Status\n");
RequestBattlefieldScoreData();
end
if ( event == "PLAYER_PVP_KILLS_CHANGED" ) then
--TitanPanelBG_ChatPrint("In OnEvent => Player_PVP_Kills_Changed\n");
RequestBattlefieldScoreData();
end
if (event == "PLAYER_DEAD") then
--TitanPanelBGinfo_AutoRes();
-- Auto-Release upon death. But not when soulstoned, and only in battlegrounds.
--local status, _, _ = GetBattlefieldStatus();
--local queueID;
--local status, mapName, instanceID;
--for queueID = 1, MAX_BATTLEFIELD_QUEUES do
-- status, mapName, instanceID = GetBattlefieldStatus(queueID);
-- if (status == "active") and (not HasSoulstone()) and (TitanGetVar(TITAN_BGINFO_ID, "BGINFO_AutoRel") == 1) then
-- RepopMe();
-- break;
-- end
--end
end
--if ( UnitIsDeadOrGhost("player") ) then
-- TitanPanelBGinfo_AutoRes();
-- TitanPanelBGinfo_AutoRelease();
--end
if ( TitanGetVar(TITAN_BGINFO_ID, "HideMinimap") ) then
MiniMapBattlefieldFrame:Hide();
end
TitanPanelButton_UpdateButton(TITAN_BGINFO_ID);
TitanPanelButton_UpdateTooltip();
end
function TitanPanelBGinfoButton_OnClick(button)
if ( button == "LeftButton" ) then
local queueID;
local status, mapName, instanceID;
for queueID=1,MAX_BATTLEFIELD_QUEUES do
status, mapName, instanceID = GetBattlefieldStatus(queueID);
if ( status == "active" ) then
ToggleWorldStateScoreFrame();
break;
end
end
end
end
--
-- Titan functions
--
function TitanPanelBGinfoButton_GetButtonText(id)
local buttonRichText = "";
local queueID;
local status, mapName, instanceID
for queueID=1, MAX_BATTLEFIELD_QUEUES do
status, mapName, instanceID = GetBattlefieldStatus(queueID);
local abbrmapName = TitanPanelBGinfo_MapNameAbbr(mapName);
if ( abbrmapName == nil ) then
abbrmapName = "";
end
if ( instanceID ~= 0 ) then
abbrmapName = abbrmapName..instanceID;
end
if ( status == "queued" ) then
local waitTime = GetBattlefieldEstimatedWaitTime(queueID);
local timeInQueue = GetBattlefieldTimeWaited(queueID);
if ( waitTime == 0 ) then
waitTime = UNAVAILABLE;
elseif ( waitTime < 60000 ) then
waitTime = LESS_THAN_ONE_MINUTE;
else
waitTime = TitanPanelBGinfo_SecondsToTimeAbbrev(waitTime/1000);
end
if ( timeInQueue == 0 ) then
timeInQueue = UNAVAILABLE;
elseif ( timeInQueue < 60000 ) then
timeInQueue = LESS_THAN_ONE_MINUTE;
else
timeInQueue = TitanPanelBGinfo_SecondsToTimeAbbrev(timeInQueue/1000);
end
buttonRichText = buttonRichText.." "..TitanUtils_GetGreenText(abbrmapName)..":"..TitanUtils_GetHighlightText(waitTime)..TitanUtils_GetNormalText(" / ")..TitanUtils_GetHighlightText(timeInQueue);
elseif ( status == "confirm" ) then
buttonRichText = buttonRichText.." "..TitanUtils_GetGreenText(abbrmapName)..":"..TitanUtils_GetHighlightText(TITAN_BGINFO_CONFIRM_TEXT);
elseif ( status == "active" ) then
--local numStatColumns = GetNumBattlefieldStats();
--if ( numStatColumns == 2 ) then
-- buttonRichText = TitanUtils_GetHighlightText(" CTF: "..abbrmapName);
--elseif ( numStatColumns == 7 ) then
buttonRichText = TitanUtils_GetHighlightText(" "..abbrmapName);
--end
else
--buttonRichText = buttonRichText.." "..TitanUtils_GetHighlightText(" N/A");
end
end
return TITAN_BGINFO_BUTTON_LABEL, buttonRichText;
end
function TitanPanelBGinfoButton_GetTooltipText()
local tooltipRichText = "";
local bgName = nil;
RequestBattlefieldScoreData();
local playerName = UnitName("player");
local queueID;
local status, mapName, instanceID;
for queueID=1,MAX_BATTLEFIELD_QUEUES do
status, mapName, instanceID = GetBattlefieldStatus(queueID);
local abbrmapName = TitanPanelBGinfo_MapNameAbbr(mapName);
if ( abbrmapName == nil ) then
abbrmapName = "";
end
if ( instanceID ~= 0 ) then
mapName = mapName.." "..instanceID;
end
if ( status == "none" ) then
--tooltipRichText = tooltipRichText.."Queue"..queueID..": "..TITAN_BGINFO_NOTIN_TEXT.."\n";
elseif ( status == "queued" ) then
local waitTime = GetBattlefieldEstimatedWaitTime(queueID);
local timeInQueue = GetBattlefieldTimeWaited(queueID)/1000;
if ( waitTime == 0 ) then
waitTime = UNAVAILABLE;
elseif ( waitTime < 60000 ) then
waitTime = LESS_THAN_ONE_MINUTE;
else
waitTime = SecondsToTime(waitTime/1000, 1);
end
tooltipRichText = tooltipRichText..format(BATTLEFIELD_IN_QUEUE, mapName, TitanUtils_GetHighlightText(waitTime), TitanUtils_GetHighlightText(SecondsToTime(timeInQueue))).."\n\n";
elseif ( status == "confirm" ) then
tooltipRichText = tooltipRichText..format(BATTLEFIELD_QUEUE_CONFIRM, mapName, TitanUtils_GetHighlightText(SecondsToTime(GetBattlefieldPortExpiration(queueID)/1000))).."\n\n";
elseif ( status == "active" ) then
local numScores = GetNumBattlefieldScores();
local name, kills, killingBlows, deaths, honorGained, faction, rank, race, class;
--TitanPanelBGinfo_ChatPrint("numScores: "..numScores.."\n");
tooltipRichText = tooltipRichText..mapName.."\n";
for i=1, 80 do
name, killingBlows, honorableKills, deaths, honorGained, faction, rank, race, class = GetBattlefieldScore(i);
if ( name == playerName ) then
--TitanPanelBGinfo_ChatPrint(i..":"..name..":"..killingBlows..":"..honorableKills..":"..deaths.."\n");
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(KILLING_BLOWS..":").."\t"..TitanUtils_GetHighlightText(killingBlows).."\n";
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(HONORABLE_KILLS..":").."\t"..TitanUtils_GetHighlightText(honorableKills).."\n";
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(DEATHS..":").."\t"..TitanUtils_GetHighlightText(deaths).."\n";
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_BONUS_HONOR_TEXT..":").."\t"..TitanUtils_GetHighlightText(honorGained).."\n";
local numStatColumns = GetNumBattlefieldStats();
--TitanPanelBGinfo_ChatPrint(numStatColumns);
for j=1, MAX_NUM_STAT_COLUMNS do
if ( j <= numStatColumns ) then
columnData = GetBattlefieldStatData(i, j);
if ( abbrmapName == TITAN_BGINFO_WG_TEXT) then
if ( j == 1 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_FLAGS_CAPTURED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 2) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_FLAGS_RETURNED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
end
elseif ( abbrmapName == TITAN_BGINFO_AV_TEXT ) then
if ( j == 1 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_GRAVEYARDS_ASSAULTED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 2 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_GRAVEYARDS_DEFENDED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 3 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_TOWERS_ASSAULTED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 4 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_TOWERS_DEFENDED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 5 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_MINES_CAPTURED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 6 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_LEADERS_KILLED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 7 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_SECONDARY_OBJECTIVES_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
end
elseif ( abbrmapName == TITAN_BGINFO_AB_TEXT ) then
if ( j == 1 ) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_BASES_ASSAULTED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
elseif ( j == 2) then
tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(TITAN_BGINFO_BASES_DEFENDED_TEXT..": ").."\t"..TitanUtils_GetHighlightText(columnData).."\n";
end
end
end
end
break;
end
end
break;
end
local bgtime = GetBattlefieldInstanceRunTime();
end
tooltipRichText = tooltipRichText.."\n"..TitanUtils_GetGreenText(TITAN_BGINFO_HINT_TEXT);
return tooltipRichText;
end
--
-- create menus
--
function TitanPanelRightClickMenu_PrepareBGinfoMenu()
local info = {};
if ( UIDROPDOWNMENU_MENU_LEVEL == 2 ) then
if ( UIDROPDOWNMENU_MENU_VALUE == "DisplayAbout" ) then
info = {};
info.text = TITAN_BGINFO_ABOUT_POPUP_TEXT;
info.value = "AboutTextPopUP";
info.notClickable = 1;
info.isTitle = 0;
UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end
if ( UIDROPDOWNMENU_MENU_VALUE == "BGINFO_Options" ) then
--info = {};
--info.text = TITANBG_MENU_AUTOJOIN;
--info.value = "B_AutoJoin";
--info.func = TitanPanelTitanBGButton_ToggleVar;
--info.checked = TitanGetVar(TITAN_TITANBG_ID, "B_AutoJoin");
--info.keepShownOnClick = 1;
--UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
--TitanPanelRightClickMenu_AddSpacer(UIDROPDOWNMENU_MENU_LEVEL);
--info = {};
--info.text = TITAN_BGINFO_AUTORES_TEXT;
--info.value = "BGINFO_AutoRes";
--info.func = TitanPanelBGinfo_ToggleVar;
--info.checked = TitanGetVar(TITAN_BGINFO_ID, "BGINFO_AutoRes");
--info.keepShownOnClick = 1;
--UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
--info = {};
--info.text = TITAN_BGINFO_AUTOREL_TEXT;
--info.value = "BGINFO_AutoRel";
--info.func = TitanPanelBGinfo_ToggleVar;
--info.checked = TitanGetVar(TITAN_BGINFO_ID, "BGINFO_AutoRel");
--info.keepShownOnClick = 1;
--UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end
return;
end
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_BGINFO_ID].menuText);
local queueID;
local status, mapName, instanceID;
local numQueued = 0;
local activeBG = 0;
for queueID=1,MAX_BATTLEFIELD_QUEUES do
status, mapName, instanceID = GetBattlefieldStatus(queueID);
if ( status == "queued" or status == "confirm") then
numQueued = numQueued+1;
-- Add a spacer if there were dropdown items before this
if ( numQueued > 1 ) then
info = {};
info.text = "";
info.isTitle = 1;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
end
info = {};
info.text = mapName;
info.isTitle = 1;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
if ( status == "queued" ) then
info = {};
info.text = CHANGE_INSTANCE;
info.func = ShowBattlefieldList;
info.arg1 = queueID;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
info = {};
info.text = LEAVE_QUEUE;
info.func = AcceptBattlefieldPort;
info.arg1 = queueID;
info.arg2 = nil;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
elseif ( status == "confirm") then
info = {};
info.text = ENTER_BATTLE;
info.func = AcceptBattlefieldPort;
info.arg1 = queueID;
info.arg2 = 1;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
info = {};
info.text = LEAVE_QUEUE;
info.func = AcceptBattlefieldPort;
info.arg1 = queueID;
info.arg2 = nil;
--info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
end
elseif ( status == "active" ) then
activeBG = 1;
info = {};
info.text = TITAN_BGINFO_TOGGLE_SCORES_TEXT;
info.func = ToggleWorldStateScoreFrame;
UIDropDownMenu_AddButton(info);
break;
end
end
TitanPanelRightClickMenu_AddSpacer();
if ( activeBG == 1 or numQueued > 0 ) then
info = {};
info.text = TITAN_BGINFO_TOGGLE_MINIMAP_TEXT;
info.value = "ToggleMiniIcon";
info.func = function ()
if ( MiniMapBattlefieldFrame ~= nil) then
if ( MiniMapBattlefieldFrame:IsVisible() ) then
TitanSetVar(TITAN_BGINFO_ID,"HideMinimap",1);
MiniMapBattlefieldFrame:Hide();
else
TitanSetVar(TITAN_BGINFO_ID,"HideMinimap",nil);
MiniMapBattlefieldFrame:Show();
end
end
end
UIDropDownMenu_AddButton(info);
end
-- options (autores, autorelease)
--info = {};
--info.text = TITAN_BGINFO_OPTIONS_TEXT;
--info.value = "BGINFO_Options";
--info.hasArrow = 1;
--UIDropDownMenu_AddButton(info);
TitanPanelRightClickMenu_AddSpacer();
TitanPanelRightClickMenu_AddToggleLabelText(TITAN_BGINFO_ID);
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_BGINFO_ID, TITAN_PANEL_MENU_FUNC_HIDE);
-- info about plugin
local info = {};
info.text = TITAN_BGINFO_ABOUT_TEXT;
info.value = "DisplayAbout";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
end
--
-- BGinfo functions
--
function TitanPanelBGinfo_MapNameAbbr(mapName)
if ( mapName == TITAN_BGINFO_AV_FULL_TEXT ) then
mapName = TITAN_BGINFO_AV_TEXT;
elseif ( mapName == TITAN_BGINFO_WG_FULL_TEXT ) then
mapName = TITAN_BGINFO_WG_TEXT;
elseif ( mapName == TITAN_BGINFO_AB_FULL_TEXT ) then
mapName = TITAN_BGINFO_AB_TEXT;
end
return mapName;
end
function TitanPanelBGinfo_SecondsToTimeAbbrev(seconds)
local time = "";
local tempTime;
if ( seconds > 86400 ) then
tempTime = floor(seconds / 86400);
time = tempTime.." "..DAY_ONELETTER_ABBR;
return time;
end
if ( seconds > 3600 ) then
tempTime = floor(seconds / 3600);
time = tempTime.." "..HOUR_ONELETTER_ABBR;
return time;
end
if ( seconds > 60 ) then
tempTime = floor(seconds / 60);
time = tempTime.." "..MINUTE_ONELETTER_ABBR;
return time;
end
tempTime = format("%d", seconds);
time = tempTime.." "..SECOND_ONELETTER_ABBR;
return time;
end
function TitanPanelBGinfo_ToggleVar()
TitanToggleVar(TITAN_BGINFO_ID, this.value);
TitanPanelButton_UpdateButton(TITAN_BFINFO_ID);
end
function TitanPanelBGinfo_AutoRes()
--if ( TitanGetVar(TITAN_BGINFO_ID, "BGINFO_AutoRes") ) then
-- local status, _, _ = GetBattlefieldStatus();
-- if ( status == "active" ) then
-- if ( UnitIsGhost("player") ) then
-- AcceptAreaSpiritHeal();
-- for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
-- local frame = getglobal("StaticPopup"..index);
-- if ( frame:IsVisible() and frame.which == "AREA_SPIRIT_HEAL" ) then
-- getglobal("StaticPopup"..index.."Button1"):Hide();
-- getglobal("StaticPopup"..index.."Button2"):Hide();
-- end
-- end
-- end
-- end
--end
end
function TitanPanelBGinfo_AutoRelease()
--if ( TitanGetVar(TITAN_BGINFO_ID, "BGINFO_AutoRel") ) then
-- local status, _, _ = GetBattlefieldStatus();
-- if ( status == "active" ) then
-- RepopMe();
-- end
--end
end
function TitanPanelBGinfo_ChatPrint(msg)
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
Generated by GNU Enscript 1.6.5.90.