режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,688 @@
|
||||
REQUIRED_REST_HOURS = 5;
|
||||
|
||||
function PlayerFrame_OnLoad(self)
|
||||
UnitFrame_Initialize(self, "player", PlayerName, PlayerPortrait,
|
||||
PlayerFrameHealthBar, PlayerFrameHealthBarText,
|
||||
PlayerFrameManaBar, PlayerFrameManaBarText,
|
||||
PlayerFrameFlash);
|
||||
|
||||
self.statusCounter = 0;
|
||||
self.statusSign = -1;
|
||||
CombatFeedback_Initialize(self, PlayerHitIndicator, 30);
|
||||
PlayerFrame_Update();
|
||||
self:RegisterEvent("UNIT_LEVEL");
|
||||
self:RegisterEvent("UNIT_COMBAT");
|
||||
self:RegisterEvent("UNIT_FACTION");
|
||||
self:RegisterEvent("UNIT_MAXMANA");
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
self:RegisterEvent("PLAYER_ENTER_COMBAT");
|
||||
self:RegisterEvent("PLAYER_LEAVE_COMBAT");
|
||||
self:RegisterEvent("PLAYER_REGEN_DISABLED");
|
||||
self:RegisterEvent("PLAYER_REGEN_ENABLED");
|
||||
self:RegisterEvent("PLAYER_UPDATE_RESTING");
|
||||
self:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||
self:RegisterEvent("PARTY_LEADER_CHANGED");
|
||||
self:RegisterEvent("PARTY_LOOT_METHOD_CHANGED");
|
||||
self:RegisterEvent("VOICE_START");
|
||||
self:RegisterEvent("VOICE_STOP");
|
||||
self:RegisterEvent("RAID_ROSTER_UPDATE");
|
||||
self:RegisterEvent("READY_CHECK");
|
||||
self:RegisterEvent("READY_CHECK_CONFIRM");
|
||||
self:RegisterEvent("READY_CHECK_FINISHED");
|
||||
self:RegisterEvent("UNIT_ENTERED_VEHICLE");
|
||||
self:RegisterEvent("UNIT_ENTERING_VEHICLE");
|
||||
self:RegisterEvent("UNIT_EXITING_VEHICLE");
|
||||
self:RegisterEvent("UNIT_EXITED_VEHICLE");
|
||||
self:RegisterEvent("PLAYER_FLAGS_CHANGED");
|
||||
self:RegisterEvent("PLAYER_ROLES_ASSIGNED");
|
||||
|
||||
-- Chinese playtime stuff
|
||||
self:RegisterEvent("PLAYTIME_CHANGED");
|
||||
|
||||
PlayerAttackBackground:SetVertexColor(0.8, 0.1, 0.1);
|
||||
PlayerAttackBackground:SetAlpha(0.4);
|
||||
|
||||
local showmenu = function()
|
||||
ToggleDropDownMenu(1, nil, PlayerFrameDropDown, "PlayerFrame", 106, 27);
|
||||
end
|
||||
SecureUnitButton_OnLoad(self, "player", showmenu);
|
||||
end
|
||||
|
||||
function PlayerFrame_Update ()
|
||||
if ( UnitExists("player") ) then
|
||||
PlayerLevelText:SetText(UnitLevel(PlayerFrame.unit));
|
||||
PlayerFrame_UpdatePartyLeader();
|
||||
PlayerFrame_UpdatePvPStatus();
|
||||
PlayerFrame_UpdateStatus();
|
||||
PlayerFrame_UpdatePlaytime();
|
||||
PlayerFrame_UpdateLayout();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdatePartyLeader()
|
||||
if ( IsPartyLeader() ) then
|
||||
if ( HasLFGRestrictions() ) then
|
||||
PlayerGuideIcon:Show();
|
||||
PlayerLeaderIcon:Hide();
|
||||
else
|
||||
PlayerLeaderIcon:Show()
|
||||
PlayerGuideIcon:Hide();
|
||||
end
|
||||
else
|
||||
PlayerLeaderIcon:Hide();
|
||||
PlayerGuideIcon:Hide();
|
||||
end
|
||||
|
||||
local lootMethod;
|
||||
local lootMaster;
|
||||
lootMethod, lootMaster = GetLootMethod();
|
||||
if ( lootMaster == 0 and ((GetNumPartyMembers() > 0) or (GetNumRaidMembers() > 0)) ) then
|
||||
PlayerMasterIcon:Show();
|
||||
else
|
||||
PlayerMasterIcon:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdatePvPStatus()
|
||||
local factionGroup, factionName = UnitFactionGroup("player");
|
||||
if ( UnitIsPVPFreeForAll("player") ) then
|
||||
if ( not PlayerPVPIcon:IsShown() ) then
|
||||
PlaySound("igPVPUpdate");
|
||||
end
|
||||
PlayerPVPIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA");
|
||||
PlayerPVPIcon:Show();
|
||||
|
||||
-- Setup newbie tooltip
|
||||
PlayerPVPIconHitArea.tooltipTitle = PVPFFA;
|
||||
PlayerPVPIconHitArea.tooltipText = NEWBIE_TOOLTIP_PVPFFA;
|
||||
PlayerPVPIconHitArea:Show();
|
||||
|
||||
PlayerPVPTimerText:Hide();
|
||||
PlayerPVPTimerText.timeLeft = nil;
|
||||
elseif ( factionGroup and UnitIsPVP("player") ) then
|
||||
if ( not PlayerPVPIcon:IsShown() ) then
|
||||
PlaySound("igPVPUpdate");
|
||||
end
|
||||
-- MoonWell: traitors display the opposite faction icon
|
||||
local displayFaction = factionGroup;
|
||||
if ( MoonWell_IsTraitor ) then
|
||||
displayFaction = (factionGroup == "Alliance") and "Horde" or "Alliance";
|
||||
end
|
||||
PlayerPVPIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..displayFaction);
|
||||
PlayerPVPIcon:Show();
|
||||
|
||||
-- Setup newbie tooltip
|
||||
PlayerPVPIconHitArea.tooltipTitle = factionName;
|
||||
PlayerPVPIconHitArea.tooltipText = _G["NEWBIE_TOOLTIP_"..strupper(factionGroup)];
|
||||
PlayerPVPIconHitArea:Show();
|
||||
else
|
||||
PlayerPVPIcon:Hide();
|
||||
PlayerPVPIconHitArea:Hide();
|
||||
PlayerPVPTimerText:Hide();
|
||||
PlayerPVPTimerText.timeLeft = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_OnEvent(self, event, ...)
|
||||
UnitFrame_OnEvent(self, event, ...);
|
||||
|
||||
local arg1, arg2, arg3, arg4, arg5 = ...;
|
||||
if ( event == "UNIT_LEVEL" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
PlayerLevelText:SetText(UnitLevel(self.unit));
|
||||
end
|
||||
elseif ( event == "UNIT_COMBAT" ) then
|
||||
if ( arg1 == self.unit ) then
|
||||
CombatFeedback_OnCombatEvent(self, arg2, arg3, arg4, arg5);
|
||||
end
|
||||
elseif ( event == "UNIT_FACTION" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
PlayerFrame_UpdatePvPStatus();
|
||||
end
|
||||
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
|
||||
PlayerFrame_ToPlayerArt(self);
|
||||
-- if ( UnitHasVehicleUI("player") ) then
|
||||
-- UnitFrame_SetUnit(self, "vehicle", PlayerFrameHealthBar, PlayerFrameManaBar);
|
||||
-- else
|
||||
-- UnitFrame_SetUnit(self, "player", PlayerFrameHealthBar, PlayerFrameManaBar);
|
||||
-- end
|
||||
self.inCombat = nil;
|
||||
self.onHateList = nil;
|
||||
PlayerFrame_Update();
|
||||
PlayerFrame_UpdateStatus();
|
||||
PlayerFrame_UpdateRolesAssigned();
|
||||
PlayerSpeakerFrame:Show();
|
||||
PlayerFrame_UpdateVoiceStatus(UnitIsTalking(UnitName("player")));
|
||||
|
||||
if ( IsPVPTimerRunning() ) then
|
||||
PlayerPVPTimerText:Show();
|
||||
PlayerPVPTimerText.timeLeft = GetPVPTimer();
|
||||
else
|
||||
PlayerPVPTimerText:Hide();
|
||||
PlayerPVPTimerText.timeLeft = nil;
|
||||
end
|
||||
elseif ( event == "PLAYER_ENTER_COMBAT" ) then
|
||||
self.inCombat = 1;
|
||||
PlayerFrame_UpdateStatus();
|
||||
elseif ( event == "PLAYER_LEAVE_COMBAT" ) then
|
||||
self.inCombat = nil;
|
||||
PlayerFrame_UpdateStatus();
|
||||
elseif ( event == "PLAYER_REGEN_DISABLED" ) then
|
||||
self.onHateList = 1;
|
||||
PlayerFrame_UpdateStatus();
|
||||
|
||||
if ( GetCVarBool("screenEdgeFlash") ) then
|
||||
CombatFeedback_StartFullscreenStatus();
|
||||
end
|
||||
elseif ( event == "PLAYER_REGEN_ENABLED" ) then
|
||||
self.onHateList = nil;
|
||||
PlayerFrame_UpdateStatus();
|
||||
|
||||
CombatFeedback_StopFullscreenStatus();
|
||||
elseif ( event == "PLAYER_UPDATE_RESTING" ) then
|
||||
PlayerFrame_UpdateStatus();
|
||||
elseif ( event == "PARTY_MEMBERS_CHANGED" or event == "PARTY_LEADER_CHANGED" or event == "RAID_ROSTER_UPDATE" ) then
|
||||
PlayerFrame_UpdateGroupIndicator();
|
||||
PlayerFrame_UpdatePartyLeader();
|
||||
PlayerFrame_UpdateReadyCheck();
|
||||
elseif ( event == "PARTY_LOOT_METHOD_CHANGED" ) then
|
||||
local lootMethod;
|
||||
local lootMaster;
|
||||
lootMethod, lootMaster = GetLootMethod();
|
||||
if ( lootMaster == 0 and ((GetNumPartyMembers() > 0) or (GetNumRaidMembers() > 0)) ) then
|
||||
PlayerMasterIcon:Show();
|
||||
else
|
||||
PlayerMasterIcon:Hide();
|
||||
end
|
||||
elseif ( event == "VOICE_START") then
|
||||
if ( arg1 == "player" ) then
|
||||
PlayerFrame_UpdateVoiceStatus(true);
|
||||
end
|
||||
elseif ( event == "VOICE_STOP" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
PlayerFrame_UpdateVoiceStatus(false);
|
||||
end
|
||||
elseif ( event == "PLAYTIME_CHANGED" ) then
|
||||
PlayerFrame_UpdatePlaytime();
|
||||
elseif ( event == "READY_CHECK" or event == "READY_CHECK_CONFIRM" ) then
|
||||
PlayerFrame_UpdateReadyCheck();
|
||||
elseif ( event == "READY_CHECK_FINISHED" ) then
|
||||
ReadyCheck_Finish(PlayerFrameReadyCheck);
|
||||
elseif ( event == "UNIT_RUNIC_POWER" and arg1 == "player" ) then
|
||||
PlayerFrame_SetRunicPower(UnitPower("player"));
|
||||
elseif ( event == "UNIT_ENTERING_VEHICLE" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
if ( arg2 ) then
|
||||
PlayerFrame_AnimateOut(self);
|
||||
else
|
||||
if ( PlayerFrame.state == "vehicle" ) then
|
||||
PlayerFrame_AnimateOut(self);
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif ( event == "UNIT_ENTERED_VEHICLE" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
self.inSeat = true;
|
||||
PlayerFrame_UpdateArt(self);
|
||||
end
|
||||
elseif ( event == "UNIT_EXITING_VEHICLE" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
if ( self.state == "vehicle" ) then
|
||||
PlayerFrame_AnimateOut(self);
|
||||
end
|
||||
end
|
||||
elseif ( event == "UNIT_EXITED_VEHICLE" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
self.inSeat = true;
|
||||
PlayerFrame_UpdateArt(self);
|
||||
end
|
||||
elseif ( event == "PLAYER_FLAGS_CHANGED" ) then
|
||||
if ( IsPVPTimerRunning() ) then
|
||||
PlayerPVPTimerText:Show();
|
||||
PlayerPVPTimerText.timeLeft = GetPVPTimer();
|
||||
else
|
||||
PlayerPVPTimerText:Hide();
|
||||
PlayerPVPTimerText.timeLeft = nil;
|
||||
end
|
||||
elseif ( event == "PLAYER_ROLES_ASSIGNED" ) then
|
||||
PlayerFrame_UpdateRolesAssigned();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateRolesAssigned()
|
||||
local frame = PlayerFrame;
|
||||
local icon = _G[frame:GetName().."RoleIcon"];
|
||||
local isTank, isHealer, isDamage = UnitGroupRolesAssigned("player");
|
||||
|
||||
if ( isTank ) then
|
||||
icon:SetTexCoord(0, 19/64, 22/64, 41/64);
|
||||
icon:Show();
|
||||
elseif ( isHealer ) then
|
||||
icon:SetTexCoord(20/64, 39/64, 1/64, 20/64);
|
||||
icon:Show();
|
||||
elseif ( isDamage ) then
|
||||
icon:SetTexCoord(20/64, 39/64, 22/64, 41/64);
|
||||
icon:Show();
|
||||
else
|
||||
icon:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
local function PlayerFrame_AnimPos(self, fraction)
|
||||
return "TOPLEFT", UIParent, "TOPLEFT", -19, fraction*140-4;
|
||||
end
|
||||
|
||||
local PlayerFrameAnimTable = {
|
||||
totalTime = 0.3,
|
||||
updateFunc = "SetPoint",
|
||||
getPosFunc = PlayerFrame_AnimPos,
|
||||
}
|
||||
function PlayerFrame_AnimateOut(self)
|
||||
self.inSeat = false;
|
||||
self.animFinished = false;
|
||||
self.inSequence = true;
|
||||
SetUpAnimation(PlayerFrame, PlayerFrameAnimTable, PlayerFrame_AnimFinished, false)
|
||||
end
|
||||
|
||||
function PlayerFrame_AnimFinished(self)
|
||||
self.animFinished = true;
|
||||
PlayerFrame_UpdateArt(self);
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateArt(self)
|
||||
if ( self.animFinished and self.inSeat and self.inSequence) then
|
||||
SetUpAnimation(PlayerFrame, PlayerFrameAnimTable, PlayerFrame_SequenceFinished, true)
|
||||
if ( UnitHasVehicleUI("player") ) then
|
||||
PlayerFrame_ToVehicleArt(self, UnitVehicleSkin("player"));
|
||||
else
|
||||
PlayerFrame_ToPlayerArt(self);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_SequenceFinished(self)
|
||||
self.inSequence = false;
|
||||
PetFrame_Update(PetFrame);
|
||||
end
|
||||
|
||||
function PlayerFrame_ToVehicleArt(self, vehicleType)
|
||||
--Swap frame
|
||||
|
||||
PlayerFrame.state = "vehicle";
|
||||
|
||||
UnitFrame_SetUnit(self, "vehicle", PlayerFrameHealthBar, PlayerFrameManaBar);
|
||||
UnitFrame_SetUnit(PetFrame, "player", PetFrameHealthBar, PetFrameManaBar);
|
||||
PetFrame_Update(PetFrame);
|
||||
PlayerFrame_Update();
|
||||
BuffFrame_Update();
|
||||
ComboFrame_Update();
|
||||
|
||||
PlayerFrameTexture:Hide();
|
||||
if ( vehicleType == "Natural" ) then
|
||||
PlayerFrameVehicleTexture:SetTexture("Interface\\Vehicles\\UI-Vehicle-Frame-Organic");
|
||||
PlayerFrameHealthBar:SetWidth(103);
|
||||
PlayerFrameHealthBar:SetPoint("TOPLEFT",116,-41);
|
||||
PlayerFrameManaBar:SetWidth(103);
|
||||
PlayerFrameManaBar:SetPoint("TOPLEFT",116,-52);
|
||||
else
|
||||
PlayerFrameVehicleTexture:SetTexture("Interface\\Vehicles\\UI-Vehicle-Frame");
|
||||
PlayerFrameHealthBar:SetWidth(100);
|
||||
PlayerFrameHealthBar:SetPoint("TOPLEFT",119,-41);
|
||||
PlayerFrameManaBar:SetWidth(100);
|
||||
PlayerFrameManaBar:SetPoint("TOPLEFT",119,-52);
|
||||
end
|
||||
PlayerFrameVehicleTexture:Show();
|
||||
|
||||
PlayerName:SetPoint("CENTER",50,23);
|
||||
PlayerLeaderIcon:SetPoint("TOPLEFT",40,-12);
|
||||
PlayerMasterIcon:SetPoint("TOPLEFT",86,0);
|
||||
PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -13);
|
||||
|
||||
PlayerFrameBackground:SetWidth(114);
|
||||
PlayerLevelText:Hide();
|
||||
end
|
||||
|
||||
function PlayerFrame_ToPlayerArt(self)
|
||||
--Unswap frame
|
||||
|
||||
PlayerFrame.state = "player";
|
||||
|
||||
UnitFrame_SetUnit(self, "player", PlayerFrameHealthBar, PlayerFrameManaBar);
|
||||
UnitFrame_SetUnit(PetFrame, "pet", PetFrameHealthBar, PetFrameManaBar);
|
||||
PetFrame_Update(PetFrame);
|
||||
PlayerFrame_Update();
|
||||
BuffFrame_Update();
|
||||
ComboFrame_Update();
|
||||
|
||||
PlayerFrameTexture:Show();
|
||||
PlayerFrameVehicleTexture:Hide();
|
||||
PlayerName:SetPoint("CENTER",50,19);
|
||||
PlayerLeaderIcon:SetPoint("TOPLEFT",40,-12);
|
||||
PlayerMasterIcon:SetPoint("TOPLEFT",80,-10);
|
||||
PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -20);
|
||||
PlayerFrameHealthBar:SetWidth(119);
|
||||
PlayerFrameHealthBar:SetPoint("TOPLEFT",106,-41);
|
||||
PlayerFrameManaBar:SetWidth(119);
|
||||
PlayerFrameManaBar:SetPoint("TOPLEFT",106,-52);
|
||||
PlayerFrameBackground:SetWidth(119);
|
||||
PlayerLevelText:Show();
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateVoiceStatus (status)
|
||||
if ( status ) then
|
||||
UIFrameFadeIn(PlayerSpeakerFrame, 0.2, PlayerSpeakerFrame:GetAlpha(), 1);
|
||||
VoiceChat_Animate(PlayerSpeakerFrame, 1);
|
||||
else
|
||||
UIFrameFadeOut(PlayerSpeakerFrame, 0.2, PlayerSpeakerFrame:GetAlpha(), 0);
|
||||
VoiceChat_Animate(PlayerSpeakerFrame, nil);
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateReadyCheck ()
|
||||
local readyCheckStatus = GetReadyCheckStatus("player");
|
||||
if ( readyCheckStatus ) then
|
||||
if ( readyCheckStatus == "ready" ) then
|
||||
ReadyCheck_Confirm(PlayerFrameReadyCheck, 1);
|
||||
elseif ( readyCheckStatus == "notready" ) then
|
||||
ReadyCheck_Confirm(PlayerFrameReadyCheck, 0);
|
||||
else -- "waiting"
|
||||
ReadyCheck_Start(PlayerFrameReadyCheck);
|
||||
end
|
||||
else
|
||||
PlayerFrameReadyCheck:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_OnUpdate (self, elapsed)
|
||||
if ( PlayerStatusTexture:IsShown() ) then
|
||||
local alpha = 255;
|
||||
local counter = self.statusCounter + elapsed;
|
||||
local sign = self.statusSign;
|
||||
|
||||
if ( counter > 0.5 ) then
|
||||
sign = -sign;
|
||||
self.statusSign = sign;
|
||||
end
|
||||
counter = mod(counter, 0.5);
|
||||
self.statusCounter = counter;
|
||||
|
||||
if ( sign == 1 ) then
|
||||
alpha = (55 + (counter * 400)) / 255;
|
||||
else
|
||||
alpha = (255 - (counter * 400)) / 255;
|
||||
end
|
||||
PlayerStatusTexture:SetAlpha(alpha);
|
||||
PlayerStatusGlow:SetAlpha(alpha);
|
||||
end
|
||||
|
||||
if ( PlayerPVPTimerText.timeLeft ) then
|
||||
PlayerPVPTimerText.timeLeft = PlayerPVPTimerText.timeLeft - elapsed*1000;
|
||||
local timeLeft = PlayerPVPTimerText.timeLeft;
|
||||
if ( timeLeft < 0 ) then
|
||||
PlayerPVPTimerText:Hide()
|
||||
end
|
||||
PlayerPVPTimerText:SetFormattedText(SecondsToTimeAbbrev(floor(timeLeft/1000)));
|
||||
else
|
||||
PlayerPVPTimerText:Hide();
|
||||
end
|
||||
CombatFeedback_OnUpdate(self, elapsed);
|
||||
end
|
||||
|
||||
function PlayerFrame_OnReceiveDrag ()
|
||||
if ( CursorHasItem() ) then
|
||||
AutoEquipCursorItem();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateStatus()
|
||||
if ( UnitHasVehicleUI("player") ) then
|
||||
PlayerStatusTexture:Hide()
|
||||
PlayerRestIcon:Hide()
|
||||
PlayerAttackIcon:Hide()
|
||||
PlayerRestGlow:Hide()
|
||||
PlayerAttackGlow:Hide()
|
||||
PlayerStatusGlow:Hide()
|
||||
PlayerAttackBackground:Hide()
|
||||
elseif ( IsResting() ) then
|
||||
PlayerStatusTexture:SetVertexColor(1.0, 0.88, 0.25, 1.0);
|
||||
PlayerStatusTexture:Show();
|
||||
PlayerRestIcon:Show();
|
||||
PlayerAttackIcon:Hide();
|
||||
PlayerRestGlow:Show();
|
||||
PlayerAttackGlow:Hide();
|
||||
PlayerStatusGlow:Show();
|
||||
PlayerAttackBackground:Hide();
|
||||
elseif ( PlayerFrame.inCombat ) then
|
||||
PlayerStatusTexture:SetVertexColor(1.0, 0.0, 0.0, 1.0);
|
||||
PlayerStatusTexture:Show();
|
||||
PlayerAttackIcon:Show();
|
||||
PlayerRestIcon:Hide();
|
||||
PlayerAttackGlow:Show();
|
||||
PlayerRestGlow:Hide();
|
||||
PlayerStatusGlow:Show();
|
||||
PlayerAttackBackground:Show();
|
||||
elseif ( PlayerFrame.onHateList ) then
|
||||
PlayerAttackIcon:Show();
|
||||
PlayerRestIcon:Hide();
|
||||
PlayerStatusGlow:Hide();
|
||||
PlayerAttackBackground:Hide();
|
||||
else
|
||||
PlayerStatusTexture:Hide();
|
||||
PlayerRestIcon:Hide();
|
||||
PlayerAttackIcon:Hide();
|
||||
PlayerStatusGlow:Hide();
|
||||
PlayerAttackBackground:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdateGroupIndicator()
|
||||
PlayerFrameGroupIndicator:Hide();
|
||||
local name, rank, subgroup;
|
||||
if ( GetNumRaidMembers() == 0 ) then
|
||||
PlayerFrameGroupIndicator:Hide();
|
||||
return;
|
||||
end
|
||||
local numRaidMembers = GetNumRaidMembers();
|
||||
for i=1, MAX_RAID_MEMBERS do
|
||||
if ( i <= numRaidMembers ) then
|
||||
name, rank, subgroup = GetRaidRosterInfo(i);
|
||||
-- Set the player's group number indicator
|
||||
if ( name == UnitName("player") ) then
|
||||
PlayerFrameGroupIndicatorText:SetText(GROUP.." "..subgroup);
|
||||
PlayerFrameGroupIndicator:SetWidth(PlayerFrameGroupIndicatorText:GetWidth()+40);
|
||||
PlayerFrameGroupIndicator:Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrameDropDown_OnLoad (self)
|
||||
UIDropDownMenu_Initialize(self, PlayerFrameDropDown_Initialize, "MENU");
|
||||
end
|
||||
|
||||
function PlayerFrameDropDown_Initialize ()
|
||||
if ( PlayerFrame.unit == "vehicle" ) then
|
||||
UnitPopup_ShowMenu(PlayerFrameDropDown, "VEHICLE", "vehicle");
|
||||
else
|
||||
UnitPopup_ShowMenu(PlayerFrameDropDown, "SELF", "player");
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_UpdatePlaytime()
|
||||
if ( PartialPlayTime() ) then
|
||||
PlayerPlayTimeIcon:SetTexture("Interface\\CharacterFrame\\UI-Player-PlayTimeTired");
|
||||
PlayerPlayTime.tooltip = format(PLAYTIME_TIRED, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
||||
PlayerPlayTime:Show();
|
||||
elseif ( NoPlayTime() ) then
|
||||
PlayerPlayTimeIcon:SetTexture("Interface\\CharacterFrame\\UI-Player-PlayTimeUnhealthy");
|
||||
PlayerPlayTime.tooltip = format(PLAYTIME_UNHEALTHY, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
||||
PlayerPlayTime:Show();
|
||||
else
|
||||
PlayerPlayTime:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerFrame_SetupDeathKnniggetLayout ()
|
||||
PlayerFrame:SetHitRectInsets(0,0,0,35);
|
||||
|
||||
--[[ PlayerFrame:SetPoint("TOPLEFT", -11, -8);
|
||||
PlayerFrame:RegisterEvent("UNIT_RUNIC_POWER");
|
||||
PlayerPortrait:SetDrawLayer("BACKGROUND");
|
||||
PlayerFrameTexture:ClearAllPoints();
|
||||
PlayerFrameTexture:SetTexture("Interface\\PlayerFrame\\UI-PlayerFrame-Deathknight");
|
||||
PlayerFrameTexture:SetPoint("TOPLEFT", 15, 15);
|
||||
PlayerFrameTexture:SetTexCoord(0, 1, 0, 1)
|
||||
PlayerFrameTexture:SetHeight(128);
|
||||
PlayerFrameTexture:SetWidth(256)
|
||||
|
||||
PlayerFrame:CreateTexture("PlayerFrameBackgroundTexture", "BACKGROUND");
|
||||
PlayerFrameBackgroundTexture:SetTexture("Interface\\PlayerFrame\\UI-PlayerFrame-DeathKnight-Background");
|
||||
PlayerFrameBackgroundTexture:SetPoint("TOPLEFT", 15, 15);
|
||||
PlayerFrameBackgroundTexture:SetWidth(256);
|
||||
PlayerFrameBackgroundTexture:SetHeight(128);
|
||||
PlayerFrameBackgroundTexture:SetDrawLayer("BORDER");
|
||||
PlayerFrameBackground:SetDrawLayer("ARTWORK");
|
||||
PlayerFrameBackground:SetHeight(4);
|
||||
PlayerFrameBackground:SetWidth(4);
|
||||
PlayerFrameBackground:SetPoint("TOPLEFT", 108, -24);
|
||||
|
||||
PlayerName:SetPoint("CENTER", 50, 18);
|
||||
PlayerFrameHealthBar:SetPoint("TOPLEFT", PlayerFrame, "TOPLEFT", 113, -41);
|
||||
PlayerFrameHealthBar:SetWidth(112);
|
||||
PlayerFrameHealthBarText:SetPoint("CENTER", 53, 3);
|
||||
|
||||
-- Death Knight Specific Border Frame
|
||||
PlayerFrame:CreateTexture("PlayerFrameRunicPowerOverlay", "OVERLAY");
|
||||
PlayerFrameRunicPowerOverlay:SetPoint("TOPLEFT", 15, 15);
|
||||
PlayerFrameRunicPowerOverlay:SetWidth(256);
|
||||
PlayerFrameRunicPowerOverlay:SetHeight(128);
|
||||
PlayerFrameRunicPowerOverlay:SetTexture("Interface\\PlayerFrame\\UI-PlayerFrame-DeathKnight-GoldBorder");
|
||||
|
||||
-- Death Knight Runic Power Glow
|
||||
local frame = CreateFrame("Frame");
|
||||
frame:SetPoint("TOPLEFT", PlayerFrame);
|
||||
frame:SetPoint("BOTTOMRIGHT", PlayerFrame);
|
||||
|
||||
frame:CreateTexture("PlayerFrameRunicPowerGlow", "BORDER");
|
||||
PlayerFrameRunicPowerGlow:SetPoint("TOPLEFT", 15, 15);
|
||||
PlayerFrameRunicPowerGlow:SetPoint("BOTTOMRIGHT", PlayerFrameBackgroundTexture);
|
||||
PlayerFrameRunicPowerGlow:SetAlpha(0.050);
|
||||
PlayerFrameRunicPowerGlow:SetWidth(256);
|
||||
PlayerFrameRunicPowerGlow:SetHeight(128);
|
||||
PlayerFrameRunicPowerGlow:Hide();
|
||||
PlayerFrameRunicPowerGlow:SetTexture("Interface\\PlayerFrame\\UI-PlayerFrame-DeathKnight-Sword-Glow");
|
||||
|
||||
--Hoorah for hacks!
|
||||
PlayerFrameManaBar:UnregisterAllEvents();
|
||||
PlayerFrameManaBar:Hide();
|
||||
PlayerFrameManaBar:ClearAllPoints();
|
||||
PlayerFrameManaBar:SetPoint("TOPLEFT", UIParent, "BOTTOMRIGHT");
|
||||
PlayerFrameManaBarText:SetParent(PlayerFrameManaBar);
|
||||
|
||||
local runicPowerBar = PlayerFrame:CreateTexture("$parentRunicPowerBar", "ARTWORK");
|
||||
-- Mmmm, runic Power Bars, my favorite kind. Tastes like Death Knnigget.
|
||||
runicPowerBar:SetTexture("Interface\\PlayerFrame\\UI-PlayerFrame-DeathKnight-RunicPower");
|
||||
runicPowerBar:SetPoint("BOTTOMLEFT", "$parent", "BOTTOMLEFT", 70, 24);
|
||||
runicPowerBar:SetWidth(64);
|
||||
runicPowerBar:SetHeight(63);
|
||||
|
||||
PlayerFrame_SetRunicPower(UnitPower("player"));--]]
|
||||
end
|
||||
|
||||
CustomClassLayouts = {
|
||||
["DEATHKNIGHT"] = PlayerFrame_SetupDeathKnniggetLayout,
|
||||
}
|
||||
|
||||
local layoutUpdated = false;
|
||||
|
||||
function PlayerFrame_UpdateLayout ()
|
||||
if ( layoutUpdated ) then
|
||||
return;
|
||||
end
|
||||
layoutUpdated = true;
|
||||
|
||||
local _, class = UnitClass("player");
|
||||
|
||||
if ( CustomClassLayouts[class] ) then
|
||||
CustomClassLayouts[class]();
|
||||
end
|
||||
end
|
||||
|
||||
local RUNICPOWERBARHEIGHT = 63;
|
||||
local RUNICPOWERBARWIDTH = 64;
|
||||
|
||||
local RUNICGLOW_FADEALPHA = .050
|
||||
local RUNICGLOW_MINALPHA = .40
|
||||
local RUNICGLOW_MAXALPHA = .80
|
||||
local RUNICGLOW_THROBINTERVAL = .8;
|
||||
|
||||
RUNICGLOW_FINISHTHROBANDHIDE = false;
|
||||
local RUNICGLOW_THROBSTART = 0;
|
||||
|
||||
function PlayerFrame_SetRunicPower (runicPower)
|
||||
PlayerFrameRunicPowerBar:SetHeight(RUNICPOWERBARHEIGHT * (runicPower / 100));
|
||||
PlayerFrameRunicPowerBar:SetTexCoord(0, 1, (1 - (runicPower / 100)), 1);
|
||||
|
||||
if ( runicPower >= 90 ) then
|
||||
-- Oh, God help us for these function and variable names.
|
||||
RUNICGLOW_FINISHTHROBANDHIDE = false;
|
||||
if ( not PlayerFrameRunicPowerGlow:IsShown() ) then
|
||||
PlayerFrameRunicPowerGlow:Show();
|
||||
end
|
||||
PlayerFrameRunicPowerGlow:GetParent():SetScript("OnUpdate", DeathKnniggetThrobFunction);
|
||||
elseif ( PlayerFrameRunicPowerGlow:GetParent():GetScript("OnUpdate") ) then
|
||||
RUNICGLOW_FINISHTHROBANDHIDE = true;
|
||||
else
|
||||
PlayerFrameRunicPowerGlow:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
local firstFadeIn = true;
|
||||
function DeathKnniggetThrobFunction (self, elapsed)
|
||||
if ( RUNICGLOW_THROBSTART == 0 ) then
|
||||
RUNICGLOW_THROBSTART = GetTime();
|
||||
elseif ( not RUNICGLOW_FINISHTHROBANDHIDE ) then
|
||||
local interval = RUNICGLOW_THROBINTERVAL - math.abs( .9 - (UnitPower("player") / 100));
|
||||
local animTime = GetTime() - RUNICGLOW_THROBSTART;
|
||||
if ( animTime >= interval ) then
|
||||
-- Fading out
|
||||
PlayerFrameRunicPowerGlow:SetAlpha(math.max(RUNICGLOW_MINALPHA, math.min(RUNICGLOW_MAXALPHA, RUNICGLOW_MAXALPHA * interval/animTime)));
|
||||
if ( animTime >= interval * 2 ) then
|
||||
self.timeSinceThrob = 0;
|
||||
RUNICGLOW_THROBSTART = GetTime();
|
||||
end
|
||||
firstFadeIn = false;
|
||||
else
|
||||
-- Fading in
|
||||
if ( firstFadeIn ) then
|
||||
PlayerFrameRunicPowerGlow:SetAlpha(math.max(RUNICGLOW_FADEALPHA, math.min(RUNICGLOW_MAXALPHA, RUNICGLOW_MAXALPHA * animTime/interval)));
|
||||
else
|
||||
PlayerFrameRunicPowerGlow:SetAlpha(math.max(RUNICGLOW_MINALPHA, math.min(RUNICGLOW_MAXALPHA, RUNICGLOW_MAXALPHA * animTime/interval)));
|
||||
end
|
||||
end
|
||||
elseif ( RUNICGLOW_FINISHTHROBANDHIDE ) then
|
||||
local currentAlpha = PlayerFrameRunicPowerGlow:GetAlpha();
|
||||
local animTime = GetTime() - RUNICGLOW_THROBSTART;
|
||||
local interval = RUNICGLOW_THROBINTERVAL;
|
||||
firstFadeIn = true;
|
||||
|
||||
if ( animTime >= interval ) then
|
||||
-- Already fading out, just keep fading out.
|
||||
local alpha = math.min(PlayerFrameRunicPowerGlow:GetAlpha(), RUNICGLOW_MAXALPHA * (interval/(animTime*(animTime/2))));
|
||||
|
||||
PlayerFrameRunicPowerGlow:SetAlpha(alpha);
|
||||
if ( alpha <= RUNICGLOW_FADEALPHA ) then
|
||||
self.timeSinceThrob = 0;
|
||||
RUNICGLOW_THROBSTART = 0;
|
||||
PlayerFrameRunicPowerGlow:Hide();
|
||||
self:SetScript("OnUpdate", nil);
|
||||
RUNICGLOW_FINISHTHROBANDHIDE = false;
|
||||
return;
|
||||
end
|
||||
else
|
||||
-- Was fading in, start fading out
|
||||
animTime = interval;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user