режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
|
||||
INSPECTFRAME_SUBFRAMES = { "InspectPaperDollFrame", "InspectPVPFrame", "InspectTalentFrame", "InspectTalentFrame", "InspectTalentFrame" };
|
||||
|
||||
UIPanelWindows["InspectFrame"] = { area = "left", pushable = 0 };
|
||||
|
||||
function InspectFrame_Show(unit)
|
||||
HideUIPanel(InspectFrame);
|
||||
if ( CanInspect(unit, true) ) then
|
||||
NotifyInspect(unit);
|
||||
InspectFrame.unit = unit;
|
||||
InspectSwitchTabs(1);
|
||||
ShowUIPanel(InspectFrame);
|
||||
InspectFrame_UpdateTalentTab();
|
||||
end
|
||||
end
|
||||
|
||||
function InspectFrame_OnLoad(self)
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED");
|
||||
self:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||
self:RegisterEvent("UNIT_NAME_UPDATE");
|
||||
self:RegisterEvent("UNIT_PORTRAIT_UPDATE");
|
||||
self.unit = nil;
|
||||
|
||||
-- Tab Handling code
|
||||
PanelTemplates_SetNumTabs(self, 3);
|
||||
PanelTemplates_SetTab(self, 1);
|
||||
end
|
||||
|
||||
function InspectFrame_OnEvent(self, event, ...)
|
||||
if ( not self:IsShown() ) then
|
||||
return;
|
||||
end
|
||||
if ( event == "PLAYER_TARGET_CHANGED" or event == "PARTY_MEMBERS_CHANGED" ) then
|
||||
if ( (event == "PLAYER_TARGET_CHANGED" and self.unit == "target") or
|
||||
(event == "PARTY_MEMBERS_CHANGED" and self.unit ~= "target") ) then
|
||||
if ( CanInspect(self.unit) ) then
|
||||
InspectFrame_UnitChanged(self);
|
||||
else
|
||||
HideUIPanel(InspectFrame);
|
||||
end
|
||||
end
|
||||
return;
|
||||
elseif ( event == "UNIT_NAME_UPDATE" ) then
|
||||
local arg1 = ...;
|
||||
if ( arg1 == self.unit ) then
|
||||
InspectNameText:SetText(UnitName(arg1));
|
||||
end
|
||||
return;
|
||||
elseif ( event == "UNIT_PORTRAIT_UPDATE" ) then
|
||||
local arg1 = ...;
|
||||
if ( arg1 == self.unit ) then
|
||||
SetPortraitTexture(InspectFramePortrait, arg1);
|
||||
end
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
function InspectFrame_UnitChanged(self)
|
||||
local unit = self.unit;
|
||||
NotifyInspect(unit);
|
||||
InspectPaperDollFrame_OnShow(self);
|
||||
SetPortraitTexture(InspectFramePortrait, unit);
|
||||
InspectNameText:SetText(UnitName(unit));
|
||||
InspectFrame_UpdateTalentTab();
|
||||
if ( InspectPVPFrame:IsShown() ) then
|
||||
InspectPVPFrame_OnShow();
|
||||
end
|
||||
end
|
||||
|
||||
function InspectFrame_OnShow(self)
|
||||
if ( not self.unit ) then
|
||||
return;
|
||||
end
|
||||
PlaySound("igCharacterInfoOpen");
|
||||
SetPortraitTexture(InspectFramePortrait, self.unit);
|
||||
InspectNameText:SetText(UnitName(self.unit));
|
||||
end
|
||||
|
||||
function InspectFrame_OnHide(self)
|
||||
self.unit = nil;
|
||||
PlaySound("igCharacterInfoClose");
|
||||
|
||||
-- Clear the player being inspected
|
||||
ClearInspectPlayer();
|
||||
|
||||
-- in the InspectTalentFrame_Update function, a default talent tab is selected smartly if there is no tab selected
|
||||
-- it actually ends up feeling natural to have this behavior happen every time the frame is shown
|
||||
PanelTemplates_SetTab(InspectTalentFrame, nil);
|
||||
end
|
||||
|
||||
function InspectFrame_OnUpdate(self)
|
||||
if ( not UnitIsVisible(self.unit) ) then
|
||||
HideUIPanel(InspectFrame);
|
||||
end
|
||||
end
|
||||
|
||||
function InspectSwitchTabs(newID)
|
||||
local newFrame = _G[INSPECTFRAME_SUBFRAMES[newID]];
|
||||
local oldFrame = _G[INSPECTFRAME_SUBFRAMES[PanelTemplates_GetSelectedTab(InspectFrame)]];
|
||||
if ( newFrame ) then
|
||||
if ( oldFrame ) then
|
||||
oldFrame:Hide();
|
||||
end
|
||||
PanelTemplates_SetTab(InspectFrame, newID);
|
||||
ShowUIPanel(InspectFrame);
|
||||
newFrame:Show();
|
||||
end
|
||||
end
|
||||
|
||||
function InspectFrameTab_OnClick(self)
|
||||
PlaySound("igCharacterInfoTab");
|
||||
InspectSwitchTabs(self:GetID());
|
||||
end
|
||||
|
||||
function InspectFrame_UpdateTalentTab()
|
||||
if ( not InspectFrame.unit ) then
|
||||
return;
|
||||
end
|
||||
local level = UnitLevel(InspectFrame.unit);
|
||||
if ( level > 0 and level < 10 ) then
|
||||
PanelTemplates_DisableTab(InspectFrame, 3);
|
||||
if ( PanelTemplates_GetSelectedTab(InspectFrame) == 3 ) then
|
||||
InspectSwitchTabs(1);
|
||||
end
|
||||
else
|
||||
PanelTemplates_EnableTab(InspectFrame, 3);
|
||||
InspectTalentFrame_UpdateTabs();
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user