574 lines
19 KiB
Lua
574 lines
19 KiB
Lua
local MAINMENU_SLIDETIME = 0.30;
|
|
local MAINMENU_GONEYPOS = 130; --Distance off screen for MainMenuBar to be completely hidden
|
|
local MAINMENU_XPOS = 0;
|
|
local MAINMENU_VEHICLE_ENDCAPPOS = 548;
|
|
|
|
function MainMenuExpBar_Update()
|
|
local currXP = UnitXP("player");
|
|
local nextXP = UnitXPMax("player");
|
|
MainMenuExpBar:SetMinMaxValues(min(0, currXP), nextXP);
|
|
MainMenuExpBar:SetValue(currXP);
|
|
end
|
|
|
|
local function MainMenuBar_GetAnimPos(self, fraction)
|
|
return "BOTTOM", UIParent, "BOTTOM", MAINMENU_XPOS, (sin(fraction*90+90)-1) * MAINMENU_GONEYPOS;
|
|
end
|
|
|
|
local function MainMenuBar_GetRightABPos(self, fraction)
|
|
|
|
local finaloffset;
|
|
if ( SHOW_MULTI_ACTIONBAR_3 and SHOW_MULTI_ACTIONBAR_4 ) then
|
|
finaloffset = 100;
|
|
else
|
|
finaloffset = 62;
|
|
end
|
|
|
|
return "BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", (sin(fraction*90)) * finaloffset, 98;
|
|
end
|
|
|
|
local function MainMenuBar_GetSeatIndicatorPos(self, fraction)
|
|
|
|
local finaloffset;
|
|
if ( SHOW_MULTI_ACTIONBAR_3 and SHOW_MULTI_ACTIONBAR_4 ) then
|
|
finaloffset = -100;
|
|
elseif ( SHOW_MULTI_ACTIONBAR_3 ) then
|
|
finaloffset = -62;
|
|
else
|
|
finaloffset = 0;
|
|
end
|
|
|
|
return "TOPRIGHT", MinimapCluster, "BOTTOMRIGHT", (cos(fraction*90)) * finaloffset, -13;
|
|
end
|
|
|
|
function MainMenuBar_AnimFinished(self)
|
|
MainMenuBar.busy = false;
|
|
if ( GetBonusBarOffset() > 0 ) then
|
|
ShowBonusActionBar(true);
|
|
else
|
|
HideBonusActionBar(true);
|
|
end
|
|
MainMenuBar_UpdateArt(self);
|
|
end
|
|
|
|
function MainMenuBar_UnlockAB(self)
|
|
MultiBarRight.ignoreFramePositionManager = nil;
|
|
end
|
|
|
|
function MainMenuBar_UpdateArt(self)
|
|
if ( MainMenuBar.animComplete and not MainMenuBar.busy) then
|
|
if ( UnitHasVehicleUI("player") ) then
|
|
MainMenuBar_ToVehicleArt(self);
|
|
else
|
|
if ( MainMenuBar.state ~= "player" ) then
|
|
MainMenuBar_ToPlayerArt(self)
|
|
else
|
|
MainMenuBarVehicleLeaveButton_Update();
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local AnimDataTable = {
|
|
MenuBar_Slide = {
|
|
totalTime = MAINMENU_SLIDETIME,
|
|
updateFunc = "SetPoint",
|
|
getPosFunc = MainMenuBar_GetAnimPos,
|
|
},
|
|
ActionBar_Slide = {
|
|
totalTime = MAINMENU_SLIDETIME,
|
|
updateFunc = "SetPoint",
|
|
getPosFunc = MainMenuBar_GetRightABPos,
|
|
},
|
|
SeatIndicator_Slide = {
|
|
totalTime = MAINMENU_SLIDETIME,
|
|
updateFunc = "SetPoint",
|
|
getPosFunc = MainMenuBar_GetSeatIndicatorPos,
|
|
},
|
|
}
|
|
|
|
function MainMenuBar_ToVehicleArt(self)
|
|
MainMenuBar.state = "vehicle";
|
|
|
|
SetUpAnimation(VehicleMenuBar, AnimDataTable.MenuBar_Slide, nil, true);
|
|
|
|
MultiBarLeft:Hide();
|
|
MultiBarRight:Hide();
|
|
MultiBarBottomLeft:Hide();
|
|
MultiBarBottomRight:Hide();
|
|
|
|
MainMenuBar:Hide();
|
|
VehicleMenuBar:SetPoint(MainMenuBar_GetAnimPos(VehicleMenuBar, 1))
|
|
VehicleMenuBar:Show();
|
|
PossessBar_Update(true);
|
|
ShowBonusActionBar(true); --Now, when we are switching to vehicle art we will ALWAYS be using the BonusActionBar
|
|
UIParent_ManageFramePositions(); --This is called in PossessBar_Update, but it doesn't actually do anything but change an attribute, so it is worth keeping
|
|
|
|
VehicleMenuBar_SetSkin(VehicleMenuBar.skin, IsVehicleAimAngleAdjustable());
|
|
end
|
|
|
|
function MainMenuBar_ToPlayerArt(self)
|
|
MainMenuBar.state = "player";
|
|
|
|
MultiActionBar_Update();
|
|
|
|
MultiBarRight:SetPoint(MainMenuBar_GetRightABPos(MultiBarRight, 1));
|
|
|
|
SetUpAnimation(MainMenuBar, AnimDataTable.MenuBar_Slide, nil, true);
|
|
SetUpAnimation(MultiBarRight, AnimDataTable.ActionBar_Slide, MainMenuBar_UnlockAB, true);
|
|
SetUpAnimation(VehicleSeatIndicator, AnimDataTable.SeatIndicator_Slide, nil, true);
|
|
|
|
|
|
|
|
VehicleMenuBar:Hide();
|
|
|
|
|
|
MainMenuBar:Show();
|
|
|
|
PossessBar_Update(true);
|
|
if ( GetBonusBarOffset() > 0 ) then
|
|
ShowBonusActionBar(true);
|
|
else
|
|
HideBonusActionBar(true);
|
|
end
|
|
--UIParent_ManageFramePositions() --This is called in PossessBar_Update
|
|
MainMenuBarVehicleLeaveButton_Update();
|
|
|
|
VehicleMenuBar_MoveMicroButtons();
|
|
VehicleMenuBar_ReleaseSkins();
|
|
end
|
|
|
|
function MainMenuBarVehicleLeaveButton_OnLoad(self)
|
|
self:RegisterEvent("UPDATE_BONUS_ACTIONBAR");
|
|
self:RegisterEvent("UPDATE_MULTI_CAST_ACTIONBAR");
|
|
self:RegisterEvent("VEHICLE_UPDATE");
|
|
end
|
|
|
|
function MainMenuBarVehicleLeaveButton_OnEvent(self, event, ...)
|
|
MainMenuBarVehicleLeaveButton_Update();
|
|
end
|
|
|
|
function MainMenuBarVehicleLeaveButton_Update()
|
|
if ( CanExitVehicle() ) then
|
|
MainMenuBarVehicleLeaveButton:ClearAllPoints();
|
|
if ( IsPossessBarVisible() ) then
|
|
MainMenuBarVehicleLeaveButton:SetPoint("LEFT", PossessButton2, "RIGHT", 30, 0);
|
|
elseif ( GetNumShapeshiftForms() > 0 ) then
|
|
MainMenuBarVehicleLeaveButton:SetPoint("LEFT", "ShapeshiftButton"..GetNumShapeshiftForms(), "RIGHT", 30, 0);
|
|
elseif ( HasMultiCastActionBar() ) then
|
|
MainMenuBarVehicleLeaveButton:SetPoint("LEFT", MultiCastActionBarFrame, "RIGHT", 30, 0);
|
|
else
|
|
MainMenuBarVehicleLeaveButton:SetPoint("LEFT", PossessBarFrame, "LEFT", 10, 0);
|
|
end
|
|
MainMenuBarVehicleLeaveButton:Show();
|
|
ShowPetActionBar(true);
|
|
else
|
|
MainMenuBarVehicleLeaveButton:Hide();
|
|
ShowPetActionBar(true);
|
|
end
|
|
|
|
UIParent_ManageFramePositions();
|
|
end
|
|
|
|
function MainMenuBar_OnLoad(self)
|
|
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
|
self:RegisterEvent("BAG_UPDATE");
|
|
self:RegisterEvent("ACTIONBAR_PAGE_CHANGED");
|
|
self:RegisterEvent("KNOWN_CURRENCY_TYPES_UPDATE");
|
|
self:RegisterEvent("CURRENCY_DISPLAY_UPDATE");
|
|
self:RegisterEvent("ADDON_LOADED");
|
|
self:RegisterEvent("UNIT_ENTERING_VEHICLE");
|
|
self:RegisterEvent("UNIT_ENTERED_VEHICLE");
|
|
self:RegisterEvent("UNIT_EXITING_VEHICLE");
|
|
self:RegisterEvent("UNIT_EXITED_VEHICLE");
|
|
|
|
MainMenuBar.state = "player";
|
|
MainMenuBarPageNumber:SetText(GetActionBarPage());
|
|
end
|
|
|
|
local firstEnteringWorld = true;
|
|
function MainMenuBar_OnEvent(self, event, ...)
|
|
local arg1, arg2, arg3, arg4, arg5 = ...;
|
|
if ( event == "ACTIONBAR_PAGE_CHANGED" ) then
|
|
MainMenuBarPageNumber:SetText(GetActionBarPage());
|
|
elseif ( event == "KNOWN_CURRENCY_TYPES_UPDATE" or event == "CURRENCY_DISPLAY_UPDATE" ) then
|
|
local showTokenFrame, showTokenFrameHonor = GetCVarBool("showTokenFrame"), GetCVarBool("showTokenFrameHonor");
|
|
if ( not showTokenFrame or not showTokenFrameHonor ) then
|
|
local name, isHeader, isExpanded, isUnused, isWatched, count, icon, extraCurrencyType;
|
|
local hasPVPTokens, hasNormalTokens;
|
|
for index=1, GetCurrencyListSize() do
|
|
name, isHeader, isExpanded, isUnused, isWatched, count, extraCurrencyType, icon = GetCurrencyListInfo(index);
|
|
if ( (not isHeader) and (extraCurrencyType > 0) and (count>0) ) then
|
|
hasPVPTokens = true;
|
|
elseif ( (not isHeader) and (extraCurrencyType <= 0) and (count>0) ) then
|
|
hasNormalTokens = true;
|
|
end
|
|
end
|
|
if ( (not showTokenFrame) and (hasNormalTokens) ) then
|
|
SetCVar("showTokenFrame", 1);
|
|
if ( not CharacterFrame:IsVisible() ) then
|
|
SetButtonPulse(CharacterMicroButton, 60, 1);
|
|
end
|
|
if ( not TokenFrame:IsVisible() ) then
|
|
SetButtonPulse(CharacterFrameTab5, 60, 1);
|
|
end
|
|
end
|
|
if ( (not showTokenFrameHonor) and (hasPVPTokens) ) then
|
|
SetCVar("showTokenFrameHonor", 1);
|
|
if ( not CharacterFrame:IsVisible() ) then
|
|
SetButtonPulse(CharacterMicroButton, 60, 1);
|
|
end
|
|
if ( not TokenFrame:IsVisible() ) then
|
|
SetButtonPulse(CharacterFrameTab5, 60, 1);
|
|
end
|
|
end
|
|
if ( hasNormalTokens or hasPVPTokens or showTokenFrame or showTokenFrameHonor ) then
|
|
TokenFrame_LoadUI();
|
|
TokenFrame_Update();
|
|
BackpackTokenFrame_Update();
|
|
else
|
|
CharacterFrameTab5:Hide();
|
|
end
|
|
else
|
|
TokenFrame_LoadUI();
|
|
TokenFrame_Update();
|
|
BackpackTokenFrame_Update();
|
|
end
|
|
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
|
|
MainMenuBar_UpdateKeyRing();
|
|
if ( not firstEnteringWorld ) then
|
|
MainMenuBar_ToPlayerArt();
|
|
end
|
|
firstEnteringWorld = false;
|
|
elseif ( event == "BAG_UPDATE" ) then
|
|
if ( not GetCVarBool("showKeyring") ) then
|
|
if ( HasKey() ) then
|
|
-- Show Tutorial and flash keyring
|
|
SetButtonPulse(KeyRingButton, 60, 1);
|
|
SetCVar("showKeyring", 1);
|
|
end
|
|
MainMenuBar_UpdateKeyRing();
|
|
end
|
|
elseif ( (event == "UNIT_ENTERED_VEHICLE") and (arg1=="player") ) then
|
|
MainMenuBar.animComplete = true;
|
|
MainMenuBar_UpdateArt(self);
|
|
elseif ( (event == "UNIT_EXITED_VEHICLE") and (arg1=="player") )then
|
|
MainMenuBar.animComplete = true;
|
|
MainMenuBar_UpdateArt(self);
|
|
elseif ( (event == "UNIT_ENTERING_VEHICLE") and (arg1=="player") ) then
|
|
MainMenuBar.busy = true;
|
|
MainMenuBar.animComplete = false;
|
|
VehicleMenuBar.skin = arg3;
|
|
if ( arg2 ) then --We are going to show a vehicle UI
|
|
if ( MainMenuBar.state == "vehicle" ) then
|
|
MultiBarRight.ignoreFramePositionManager = true;
|
|
SetUpAnimation(VehicleMenuBar, AnimDataTable.MenuBar_Slide, MainMenuBar_AnimFinished, false);
|
|
else
|
|
MainMenuBar.state = "vehicle";
|
|
MultiBarRight.ignoreFramePositionManager = true;
|
|
SetUpAnimation(MultiBarRight, AnimDataTable.ActionBar_Slide, nil, false);
|
|
SetUpAnimation(MainMenuBar, AnimDataTable.MenuBar_Slide, MainMenuBar_AnimFinished, false);
|
|
SetUpAnimation(VehicleSeatIndicator, AnimDataTable.SeatIndicator_Slide, nil, false);
|
|
end
|
|
else
|
|
if ( MainMenuBar.state == "vehicle" ) then
|
|
MultiBarRight.ignoreFramePositionManager = true;
|
|
SetUpAnimation(VehicleMenuBar, AnimDataTable.MenuBar_Slide, MainMenuBar_AnimFinished, false);
|
|
--MainMenuBar_SetUpAnimation(MultiBarRight, true, MAINMENU_SLIDETIME, MainMenuBar_GetRightABPos, nil, true);
|
|
else
|
|
MainMenuBar.busy = false;
|
|
MainMenuBar.animComplete = true;
|
|
MainMenuBarVehicleLeaveButton_Update();
|
|
end
|
|
end
|
|
elseif ( (event == "UNIT_EXITING_VEHICLE") and (arg1=="player") ) then
|
|
if ( MainMenuBar.state ~= "player" ) then
|
|
MainMenuBar.busy = true;
|
|
MainMenuBar.animComplete = false;
|
|
MultiBarRight.ignoreFramePositionManager = true;
|
|
SetUpAnimation(VehicleMenuBar, AnimDataTable.MenuBar_Slide, MainMenuBar_AnimFinished, false);
|
|
else
|
|
if ( GetBonusBarOffset() > 0 ) then
|
|
ShowBonusActionBar();
|
|
else
|
|
HideBonusActionBar();
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function ExhaustionTick_OnLoad(self)
|
|
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
|
self:RegisterEvent("PLAYER_XP_UPDATE");
|
|
self:RegisterEvent("UPDATE_EXHAUSTION");
|
|
self:RegisterEvent("PLAYER_LEVEL_UP");
|
|
self:RegisterEvent("PLAYER_UPDATE_RESTING");
|
|
end
|
|
|
|
function ExhaustionTick_OnEvent(self, event, ...)
|
|
if ((event == "PLAYER_ENTERING_WORLD") or (event == "PLAYER_XP_UPDATE") or (event == "UPDATE_EXHAUSTION") or (event == "PLAYER_LEVEL_UP")) then
|
|
local playerCurrXP = UnitXP("player");
|
|
local playerMaxXP = UnitXPMax("player");
|
|
--local exhaustionCurrXP, exhaustionMaxXP;
|
|
--exhaustionCurrXP, exhaustionMaxXP = GetXPExhaustion();
|
|
local exhaustionThreshold = GetXPExhaustion();
|
|
local exhaustionStateID, exhaustionStateName, exhaustionStateMultiplier;
|
|
exhaustionStateID, exhaustionStateName, exhaustionStateMultiplier = GetRestState();
|
|
if (exhaustionStateID >= 3) then
|
|
ExhaustionTick:SetPoint("CENTER", "MainMenuExpBar", "RIGHT", 0, 0);
|
|
end
|
|
|
|
if (not exhaustionThreshold) then
|
|
ExhaustionTick:Hide();
|
|
ExhaustionLevelFillBar:Hide();
|
|
else
|
|
local exhaustionTickSet = max(((playerCurrXP + exhaustionThreshold) / playerMaxXP) * MainMenuExpBar:GetWidth(), 0);
|
|
-- local exhaustionTotalXP = playerCurrXP + (exhaustionMaxXP - exhaustionCurrXP);
|
|
-- local exhaustionTickSet = (exhaustionTotalXP / playerMaxXP) * MainMenuExpBar:GetWidth();
|
|
ExhaustionTick:ClearAllPoints();
|
|
if (exhaustionTickSet > MainMenuExpBar:GetWidth() or MainMenuBarMaxLevelBar:IsShown()) then
|
|
ExhaustionTick:Hide();
|
|
ExhaustionLevelFillBar:Hide();
|
|
-- Saving this code in case we want to always leave the exhaustion tick onscreen
|
|
-- ExhaustionTick:SetPoint("CENTER", "MainMenuExpBar", "RIGHT", 0, 0);
|
|
-- ExhaustionLevelFillBar:SetPoint("TOPRIGHT", "MainMenuExpBar", "TOPRIGHT", 0, 0);
|
|
else
|
|
ExhaustionTick:Show();
|
|
ExhaustionTick:SetPoint("CENTER", "MainMenuExpBar", "LEFT", exhaustionTickSet, 0);
|
|
ExhaustionLevelFillBar:Show();
|
|
ExhaustionLevelFillBar:SetPoint("TOPRIGHT", "MainMenuExpBar", "TOPLEFT", exhaustionTickSet, 0);
|
|
end
|
|
end
|
|
|
|
-- Hide exhaustion tick if player is max level or XP is turned off
|
|
if ( UnitLevel("player") == MAX_PLAYER_LEVEL or IsXPUserDisabled() ) then
|
|
ExhaustionTick:Hide();
|
|
end
|
|
end
|
|
if ((event == "PLAYER_ENTERING_WORLD") or (event == "UPDATE_EXHAUSTION")) then
|
|
local exhaustionStateID = GetRestState();
|
|
if (exhaustionStateID == 1) then
|
|
MainMenuExpBar:SetStatusBarColor(0.0, 0.39, 0.88, 1.0);
|
|
ExhaustionLevelFillBar:SetVertexColor(0.0, 0.39, 0.88, 0.15);
|
|
ExhaustionTickHighlight:SetVertexColor(0.0, 0.39, 0.88);
|
|
elseif (exhaustionStateID == 2) then
|
|
MainMenuExpBar:SetStatusBarColor(0.58, 0.0, 0.55, 1.0);
|
|
ExhaustionLevelFillBar:SetVertexColor(0.58, 0.0, 0.55, 0.15);
|
|
ExhaustionTickHighlight:SetVertexColor(0.58, 0.0, 0.55);
|
|
end
|
|
|
|
end
|
|
if ( not MainMenuExpBar:IsShown() ) then
|
|
ExhaustionTick:Hide();
|
|
end
|
|
end
|
|
|
|
function ExhaustionToolTipText()
|
|
-- If showing newbie tips then only show the explanation
|
|
--[[if ( SHOW_NEWBIE_TIPS == "1" ) then
|
|
return;
|
|
end
|
|
]]
|
|
|
|
if ( SHOW_NEWBIE_TIPS ~= "1" ) then
|
|
local x,y;
|
|
x,y = ExhaustionTick:GetCenter();
|
|
if ( ExhaustionTick:IsShown() ) then
|
|
if ( x >= ( GetScreenWidth() / 2 ) ) then
|
|
GameTooltip:SetOwner(ExhaustionTick, "ANCHOR_LEFT");
|
|
else
|
|
GameTooltip:SetOwner(ExhaustionTick, "ANCHOR_RIGHT");
|
|
end
|
|
else
|
|
GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);
|
|
end
|
|
end
|
|
|
|
local exhaustionStateID, exhaustionStateName, exhaustionStateMultiplier;
|
|
exhaustionStateID, exhaustionStateName, exhaustionStateMultiplier = GetRestState();
|
|
|
|
-- Saving this code in case we want to display xp to next rest state
|
|
local exhaustionCurrXP, exhaustionMaxXP;
|
|
local exhaustionThreshold = GetXPExhaustion();
|
|
-- local exhaustionXPDifference;
|
|
-- if (exhaustionMaxXP) then
|
|
-- exhaustionXPDifference = (exhaustionMaxXP - exhaustionCurrXP) * exhaustionStateMultiplier;
|
|
-- else
|
|
-- exhaustionXPDifference = 0;
|
|
-- end
|
|
|
|
exhaustionStateMultiplier = exhaustionStateMultiplier * 100;
|
|
local exhaustionCountdown = nil;
|
|
if ( GetTimeToWellRested() ) then
|
|
exhaustionCountdown = GetTimeToWellRested() / 60;
|
|
end
|
|
|
|
local currXP = UnitXP("player");
|
|
local nextXP = UnitXPMax("player");
|
|
local percentXP = math.ceil(currXP/nextXP*100);
|
|
|
|
local XPText = format( XP_TEXT, currXP, nextXP, percentXP );
|
|
local tooltipText = XPText..format(EXHAUST_TOOLTIP1, exhaustionStateName, exhaustionStateMultiplier);
|
|
local append = nil;
|
|
if ( IsResting() ) then
|
|
if ( exhaustionThreshold and exhaustionCountdown ) then
|
|
append = format(EXHAUST_TOOLTIP4, exhaustionCountdown);
|
|
end
|
|
elseif ( (exhaustionStateID == 4) or (exhaustionStateID == 5) ) then
|
|
append = EXHAUST_TOOLTIP2;
|
|
end
|
|
|
|
if ( append ) then
|
|
tooltipText = tooltipText..append;
|
|
end
|
|
|
|
if ( SHOW_NEWBIE_TIPS ~= "1" ) then
|
|
GameTooltip:SetText(tooltipText);
|
|
else
|
|
if ( GameTooltip.canAddRestStateLine ) then
|
|
GameTooltip:AddLine("\n"..tooltipText);
|
|
GameTooltip:Show();
|
|
GameTooltip.canAddRestStateLine = nil;
|
|
end
|
|
end
|
|
|
|
--[[
|
|
if ((exhaustionStateID == 1) and (IsResting()) and (not exhaustionThreshold)) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1, exhaustionStateName, exhaustionStateMultiplier));
|
|
elseif ((exhaustionStateID == 1) and (IsResting())) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. format(EXHAUST_TOOLTIP4,exhaustionCountdown));
|
|
elseif ((exhaustionStateID == 2) and (IsResting())) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. format(EXHAUST_TOOLTIP4,exhaustionCountdown));
|
|
elseif ((exhaustionStateID == 3) and (IsResting())) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. format(EXHAUST_TOOLTIP4,exhaustionCountdown));
|
|
elseif ((exhaustionStateID == 4) and (IsResting())) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. format(EXHAUST_TOOLTIP4,exhaustionCountdown));
|
|
elseif ((exhaustionStateID == 5) and (IsResting())) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. format(EXHAUST_TOOLTIP4,exhaustionCountdown));
|
|
elseif (exhaustionStateID <= 3) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier));
|
|
elseif (exhaustionStateID == 4) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. EXHAUST_TOOLTIP2);
|
|
elseif (exhaustionStateID == 5) then
|
|
GameTooltip:SetText(format(EXHAUST_TOOLTIP1,exhaustionStateName,exhaustionStateMultiplier) .. EXHAUST_TOOLTIP2);
|
|
end
|
|
]]
|
|
end
|
|
|
|
function ExhaustionTick_OnUpdate(self, elapsed)
|
|
if ( self.timer ) then
|
|
if ( self.timer < 0 ) then
|
|
ExhaustionToolTipText();
|
|
self.timer = nil;
|
|
else
|
|
self.timer = self.timer - elapsed;
|
|
end
|
|
end
|
|
end
|
|
|
|
--KeyRing Functions
|
|
|
|
function MainMenuBar_UpdateKeyRing()
|
|
if ( GetCVarBool("showKeyring") ) then
|
|
MainMenuBarTexture3:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-KeyRing");
|
|
MainMenuBarTexture3:SetTexCoord(0, 1, 0.1640625, 0.5);
|
|
MainMenuBarTexture2:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-KeyRing");
|
|
MainMenuBarTexture2:SetTexCoord(0, 1, 0.6640625, 1);
|
|
KeyRingButton:Show();
|
|
end
|
|
end
|
|
|
|
-- latency bar
|
|
|
|
local NUM_ADDONS_TO_DISPLAY = 3;
|
|
local topAddOns = {}
|
|
for i=1, NUM_ADDONS_TO_DISPLAY do
|
|
topAddOns[i] = { value = 0, name = "" };
|
|
end
|
|
|
|
function MainMenuBarPerformanceBarFrame_OnEnter(self)
|
|
local string = "";
|
|
local i, j, k = 0, 0, 0;
|
|
|
|
GameTooltip_SetDefaultAnchor(GameTooltip, self);
|
|
|
|
GameTooltip_AddNewbieTip(self, self.tooltipText, 1.0, 1.0, 1.0, self.newbieText);
|
|
|
|
-- latency
|
|
local bandwidthIn, bandwidthOut, latency = GetNetStats();
|
|
string = format(MAINMENUBAR_LATENCY_LABEL, latency);
|
|
GameTooltip:AddLine("\n");
|
|
GameTooltip:AddLine(string, 1.0, 1.0, 1.0);
|
|
if ( SHOW_NEWBIE_TIPS == "1" ) then
|
|
GameTooltip:AddLine(NEWBIE_TOOLTIP_LATENCY, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1);
|
|
end
|
|
GameTooltip:AddLine("\n");
|
|
|
|
-- framerate
|
|
string = format(MAINMENUBAR_FPS_LABEL, GetFramerate());
|
|
GameTooltip:AddLine(string, 1.0, 1.0, 1.0);
|
|
if ( SHOW_NEWBIE_TIPS == "1" ) then
|
|
GameTooltip:AddLine(NEWBIE_TOOLTIP_FRAMERATE, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1);
|
|
end
|
|
|
|
-- AddOn mem usage
|
|
for i=1, NUM_ADDONS_TO_DISPLAY, 1 do
|
|
topAddOns[i].value = 0;
|
|
end
|
|
|
|
UpdateAddOnMemoryUsage();
|
|
local totalMem = 0;
|
|
|
|
for i=1, GetNumAddOns(), 1 do
|
|
local mem = GetAddOnMemoryUsage(i);
|
|
totalMem = totalMem + mem;
|
|
for j=1, NUM_ADDONS_TO_DISPLAY, 1 do
|
|
if(mem > topAddOns[j].value) then
|
|
for k=NUM_ADDONS_TO_DISPLAY, 1, -1 do
|
|
if(k == j) then
|
|
topAddOns[k].value = mem;
|
|
topAddOns[k].name = GetAddOnInfo(i);
|
|
break;
|
|
elseif(k ~= 1) then
|
|
topAddOns[k].value = topAddOns[k-1].value;
|
|
topAddOns[k].name = topAddOns[k-1].name;
|
|
end
|
|
end
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
|
|
if ( totalMem > 0 ) then
|
|
if ( totalMem > 1000 ) then
|
|
totalMem = totalMem / 1000;
|
|
string = format(TOTAL_MEM_MB_ABBR, totalMem);
|
|
else
|
|
string = format(TOTAL_MEM_KB_ABBR, totalMem);
|
|
end
|
|
|
|
GameTooltip:AddLine("\n");
|
|
GameTooltip:AddLine(string, 1.0, 1.0, 1.0);
|
|
if ( SHOW_NEWBIE_TIPS == "1" ) then
|
|
GameTooltip:AddLine(NEWBIE_TOOLTIP_MEMORY, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1);
|
|
end
|
|
|
|
local size;
|
|
for i=1, NUM_ADDONS_TO_DISPLAY, 1 do
|
|
if ( topAddOns[i].value == 0 ) then
|
|
break;
|
|
end
|
|
size = topAddOns[i].value;
|
|
if ( size > 1000 ) then
|
|
size = size / 1000;
|
|
string = format(ADDON_MEM_MB_ABBR, size, topAddOns[i].name);
|
|
else
|
|
string = format(ADDON_MEM_KB_ABBR, size, topAddOns[i].name);
|
|
end
|
|
GameTooltip:AddLine(string, 1.0, 1.0, 1.0);
|
|
end
|
|
end
|
|
|
|
GameTooltip:Show();
|
|
end
|