режим предателя + UI референсы и DragonUI

This commit is contained in:
2026-04-09 02:05:29 +04:00
parent 1109d19bb5
commit e8f1ae4ab9
397 changed files with 202750 additions and 37 deletions
+160
View File
@@ -0,0 +1,160 @@
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