161 lines
4.8 KiB
Lua
161 lines
4.8 KiB
Lua
CHARACTERFRAME_SUBFRAMES = { "PaperDollFrame", "PetPaperDollFrame", "SkillFrame", "ReputationFrame", "TokenFrame" };
|
|
local NUM_CHARACTERFRAME_TABS = 5;
|
|
function ToggleCharacter (tab)
|
|
local subFrame = _G[tab];
|
|
if ( subFrame ) then
|
|
if (not subFrame.hidden) then
|
|
PanelTemplates_SetTab(CharacterFrame, subFrame:GetID());
|
|
if ( CharacterFrame:IsShown() ) then
|
|
if ( subFrame:IsShown() ) then
|
|
HideUIPanel(CharacterFrame);
|
|
else
|
|
PlaySound("igCharacterInfoTab");
|
|
CharacterFrame_ShowSubFrame(tab);
|
|
end
|
|
else
|
|
ShowUIPanel(CharacterFrame);
|
|
CharacterFrame_ShowSubFrame(tab);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function CharacterFrame_ShowSubFrame (frameName)
|
|
for index, value in pairs(CHARACTERFRAME_SUBFRAMES) do
|
|
if ( value == frameName ) then
|
|
_G[value]:Show()
|
|
else
|
|
_G[value]:Hide();
|
|
end
|
|
end
|
|
end
|
|
|
|
function CharacterFrameTab_OnClick (self, button)
|
|
local name = self:GetName();
|
|
|
|
if ( name == "CharacterFrameTab1" ) then
|
|
ToggleCharacter("PaperDollFrame");
|
|
elseif ( name == "CharacterFrameTab2" ) then
|
|
ToggleCharacter("PetPaperDollFrame");
|
|
elseif ( name == "CharacterFrameTab3" ) then
|
|
ToggleCharacter("ReputationFrame");
|
|
elseif ( name == "CharacterFrameTab4" ) then
|
|
ToggleCharacter("SkillFrame");
|
|
elseif ( name == "CharacterFrameTab5" ) then
|
|
ToggleCharacter("TokenFrame");
|
|
end
|
|
PlaySound("igCharacterInfoTab");
|
|
end
|
|
|
|
function CharacterFrame_OnLoad (self)
|
|
self:RegisterEvent("UNIT_NAME_UPDATE");
|
|
self:RegisterEvent("UNIT_PORTRAIT_UPDATE");
|
|
self:RegisterEvent("PLAYER_PVP_RANK_CHANGED");
|
|
|
|
SetTextStatusBarTextPrefix(PlayerFrameHealthBar, HEALTH);
|
|
SetTextStatusBarTextPrefix(PlayerFrameManaBar, MANA);
|
|
SetTextStatusBarTextPrefix(MainMenuExpBar, XP);
|
|
TextStatusBar_UpdateTextString(MainMenuExpBar);
|
|
-- Tab Handling code
|
|
PanelTemplates_SetNumTabs(self, 5);
|
|
PanelTemplates_SetTab(self, 1);
|
|
end
|
|
|
|
function CharacterFrame_OnEvent (self, event, ...)
|
|
if ( not self:IsShown() ) then
|
|
return;
|
|
end
|
|
|
|
local arg1 = ...;
|
|
if ( event == "UNIT_PORTRAIT_UPDATE" ) then
|
|
if ( arg1 == "player" ) then
|
|
SetPortraitTexture(CharacterFramePortrait, arg1);
|
|
end
|
|
return;
|
|
elseif ( event == "UNIT_NAME_UPDATE" ) then
|
|
if ( arg1 == "player" ) then
|
|
CharacterNameText:SetText(UnitPVPName(arg1));
|
|
end
|
|
return;
|
|
elseif ( event == "PLAYER_PVP_RANK_CHANGED" ) then
|
|
CharacterNameText:SetText(UnitPVPName("player"));
|
|
end
|
|
end
|
|
|
|
function CharacterFrame_OnShow (self)
|
|
PlaySound("igCharacterInfoOpen");
|
|
SetPortraitTexture(CharacterFramePortrait, "player");
|
|
CharacterNameText:SetText(UnitPVPName("player"));
|
|
UpdateMicroButtons();
|
|
PlayerFrameHealthBar.showNumeric = true;
|
|
PlayerFrameManaBar.showNumeric = true;
|
|
PlayerFrameAlternateManaBar.showNumeric = true;
|
|
MainMenuExpBar.showNumeric = true;
|
|
PetFrameHealthBar.showNumeric = true;
|
|
PetFrameManaBar.showNumeric = true;
|
|
ShowTextStatusBarText(PlayerFrameHealthBar);
|
|
ShowTextStatusBarText(PlayerFrameManaBar);
|
|
ShowTextStatusBarText(PlayerFrameAlternateManaBar);
|
|
ShowTextStatusBarText(MainMenuExpBar);
|
|
ShowTextStatusBarText(PetFrameHealthBar);
|
|
ShowTextStatusBarText(PetFrameManaBar);
|
|
ShowWatchedReputationBarText();
|
|
|
|
SetButtonPulse(CharacterMicroButton, 0, 1); --Stop the button pulse
|
|
end
|
|
|
|
function CharacterFrame_OnHide (self)
|
|
PlaySound("igCharacterInfoClose");
|
|
UpdateMicroButtons();
|
|
PlayerFrameHealthBar.showNumeric = nil;
|
|
PlayerFrameManaBar.showNumeric = nil;
|
|
PlayerFrameAlternateManaBar.showNumeric = nil;
|
|
MainMenuExpBar.showNumeric =nil;
|
|
PetFrameHealthBar.showNumeric = nil;
|
|
PetFrameManaBar.showNumeric = nil;
|
|
HideTextStatusBarText(PlayerFrameHealthBar);
|
|
HideTextStatusBarText(PlayerFrameManaBar);
|
|
HideTextStatusBarText(PlayerFrameAlternateManaBar);
|
|
HideTextStatusBarText(MainMenuExpBar);
|
|
HideTextStatusBarText(PetFrameHealthBar);
|
|
HideTextStatusBarText(PetFrameManaBar);
|
|
HideWatchedReputationBarText();
|
|
end
|
|
|
|
local function CompareFrameSize(frame1, frame2)
|
|
return frame1:GetWidth() > frame2:GetWidth();
|
|
end
|
|
local CharTabtable = {};
|
|
function CharacterFrame_TabBoundsCheck(self)
|
|
if ( string.sub(self:GetName(), 1, 17) ~= "CharacterFrameTab" ) then
|
|
return;
|
|
end
|
|
|
|
local totalSize = 60;
|
|
for i=1, NUM_CHARACTERFRAME_TABS do
|
|
_G["CharacterFrameTab"..i.."Text"]:SetWidth(0);
|
|
PanelTemplates_TabResize(_G["CharacterFrameTab"..i], 0);
|
|
totalSize = totalSize + _G["CharacterFrameTab"..i]:GetWidth();
|
|
end
|
|
|
|
local diff = totalSize - 465
|
|
|
|
if ( diff > 0 and CharacterFrameTab5:IsShown() and CharacterFrameTab2:IsShown()) then
|
|
--Find the biggest tab
|
|
for i=1, NUM_CHARACTERFRAME_TABS do
|
|
CharTabtable[i]=_G["CharacterFrameTab"..i];
|
|
end
|
|
table.sort(CharTabtable, CompareFrameSize);
|
|
|
|
local i=1;
|
|
while ( diff > 0 and i <= NUM_CHARACTERFRAME_TABS) do
|
|
local tabText = _G[CharTabtable[i]:GetName().."Text"]
|
|
local change = min(10, diff);
|
|
tabText:SetWidth(tabText:GetWidth() - change);
|
|
diff = diff - change;
|
|
PanelTemplates_TabResize(CharTabtable[i], 0);
|
|
i = i+1;
|
|
end
|
|
end
|
|
end
|