режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
--PET_WARNING_TIME = 55;
|
||||
--PET_FLASH_ON_TIME = 0.5;
|
||||
--PET_FLASH_OFF_TIME = 0.5;
|
||||
|
||||
function PetFrame_OnLoad (self)
|
||||
self.noTextPrefix = true;
|
||||
UnitFrame_Initialize(self, "pet", PetName, PetPortrait,
|
||||
PetFrameHealthBar, PetFrameHealthBarText,
|
||||
PetFrameManaBar, PetFrameManaBarText,
|
||||
PetFrameFlash);
|
||||
|
||||
self.attackModeCounter = 0;
|
||||
self.attackModeSign = -1;
|
||||
--self.flashState = 1;
|
||||
--self.flashTimer = 0;
|
||||
CombatFeedback_Initialize(self, PetHitIndicator, 30);
|
||||
PetFrame_Update(self);
|
||||
self:RegisterEvent("UNIT_PET");
|
||||
self:RegisterEvent("UNIT_COMBAT");
|
||||
self:RegisterEvent("UNIT_AURA");
|
||||
self:RegisterEvent("PET_ATTACK_START");
|
||||
self:RegisterEvent("PET_ATTACK_STOP");
|
||||
self:RegisterEvent("UNIT_HAPPINESS");
|
||||
self:RegisterEvent("PET_UI_UPDATE");
|
||||
self:RegisterEvent("PET_RENAMEABLE");
|
||||
local showmenu = function()
|
||||
ToggleDropDownMenu(1, nil, PetFrameDropDown, "PetFrame", 44, 8);
|
||||
end
|
||||
SecureUnitButton_OnLoad(self, "pet", showmenu);
|
||||
|
||||
local _, class = UnitClass("player");
|
||||
if ( class == "DEATHKNIGHT" or class == "DRUID" ) then --Death Knights need the Pet frame moved down for their Runes and Druids need it moved down for the secondary power bar.
|
||||
self:SetPoint("TOPLEFT", PlayerFrame, "TOPLEFT", 60, -75);
|
||||
elseif ( class == "SHAMAN" ) then
|
||||
self:SetPoint("TOPLEFT", PlayerFrame, "TOPLEFT", 60, -100);
|
||||
end
|
||||
end
|
||||
|
||||
function PetFrame_Update (self, override)
|
||||
if ( (not PlayerFrame.animating) or (override) ) then
|
||||
if ( UnitIsVisible(self.unit) ) then
|
||||
if ( self:IsShown() ) then
|
||||
UnitFrame_Update(self);
|
||||
else
|
||||
self:Show();
|
||||
end
|
||||
--self.flashState = 1;
|
||||
--self.flashTimer = PET_FLASH_ON_TIME;
|
||||
if ( UnitPowerMax(self.unit) == 0 ) then
|
||||
PetFrameTexture:SetTexture("Interface\\TargetingFrame\\UI-SmallTargetingFrame-NoMana");
|
||||
PetFrameManaBarText:Hide();
|
||||
else
|
||||
PetFrameTexture:SetTexture("Interface\\TargetingFrame\\UI-SmallTargetingFrame");
|
||||
end
|
||||
PetAttackModeTexture:Hide();
|
||||
|
||||
PetFrame_SetHappiness(self);
|
||||
RefreshDebuffs(self, self.unit);
|
||||
else
|
||||
self:Hide();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PetFrame_OnEvent (self, event, ...)
|
||||
UnitFrame_OnEvent(self, event, ...);
|
||||
|
||||
local arg1, arg2, arg3, arg4, arg5 = ...;
|
||||
if ( (event == "UNIT_PET" and arg1 == "player" ) or event == "PET_UI_UPDATE" ) then
|
||||
local unit
|
||||
if ( UnitInVehicle("player") and UnitHasVehicleUI("player") ) then
|
||||
unit = "player";
|
||||
else
|
||||
unit = "pet";
|
||||
end
|
||||
UnitFrame_SetUnit(self, unit, PetFrameHealthBar, PetFrameManaBar);
|
||||
PetFrame_Update(self);
|
||||
elseif ( event == "UNIT_COMBAT" ) then
|
||||
if ( arg1 == self.unit ) then
|
||||
CombatFeedback_OnCombatEvent(self, arg2, arg3, arg4, arg5);
|
||||
end
|
||||
elseif ( event == "UNIT_AURA" ) then
|
||||
if ( arg1 == self.unit ) then
|
||||
RefreshDebuffs(self, self.unit);
|
||||
end
|
||||
elseif ( event == "PET_ATTACK_START" ) then
|
||||
PetAttackModeTexture:SetVertexColor(1.0, 1.0, 1.0, 1.0);
|
||||
PetAttackModeTexture:Show();
|
||||
elseif ( event == "PET_ATTACK_STOP" ) then
|
||||
PetAttackModeTexture:Hide();
|
||||
elseif ( event == "UNIT_HAPPINESS" ) then
|
||||
PetFrame_SetHappiness(self);
|
||||
elseif ( event == "PET_RENAMEABLE" ) then
|
||||
StaticPopup_Show("RENAME_PET");
|
||||
end
|
||||
end
|
||||
|
||||
function PetFrame_OnUpdate (self, elapsed)
|
||||
if ( PetAttackModeTexture:IsShown() ) then
|
||||
local alpha = 255;
|
||||
local counter = self.attackModeCounter + elapsed;
|
||||
local sign = self.attackModeSign;
|
||||
|
||||
if ( counter > 0.5 ) then
|
||||
sign = -sign;
|
||||
self.attackModeSign = sign;
|
||||
end
|
||||
counter = mod(counter, 0.5);
|
||||
self.attackModeCounter = counter;
|
||||
|
||||
if ( sign == 1 ) then
|
||||
alpha = (55 + (counter * 400)) / 255;
|
||||
else
|
||||
alpha = (255 - (counter * 400)) / 255;
|
||||
end
|
||||
PetAttackModeTexture:SetVertexColor(1.0, 1.0, 1.0, alpha);
|
||||
end
|
||||
CombatFeedback_OnUpdate(self, elapsed);
|
||||
-- Expiration flash stuff
|
||||
--local petTimeRemaining = nil;
|
||||
--if ( GetPetTimeRemaining() ) then
|
||||
--- if ( self.flashState == 1 ) then
|
||||
-- self:SetAlpha(this.flashTimer/PET_FLASH_ON_TIME);
|
||||
-- else
|
||||
-- self:SetAlpha((PET_FLASH_OFF_TIME - this.flashTimer)/PET_FLASH_OFF_TIME);
|
||||
-- end
|
||||
-- petTimeRemaining = GetPetTimeRemaining() / 1000;
|
||||
--end
|
||||
--if ( petTimeRemaining and (petTimeRemaining < PET_WARNING_TIME) ) then
|
||||
-- PetFrame.flashTimer = PetFrame.flashTimer - elapsed;
|
||||
-- if ( PetFrame.flashTimer <= 0 ) then
|
||||
-- if ( PetFrame.flashState == 1 ) then
|
||||
-- PetFrame.flashState = 0;
|
||||
-- PetFrame.flashTimer = PET_FLASH_OFF_TIME;
|
||||
-- else
|
||||
-- PetFrame.flashState = 1;
|
||||
-- PetFrame.flashTimer = PET_FLASH_ON_TIME;
|
||||
-- end
|
||||
-- end
|
||||
--end
|
||||
|
||||
end
|
||||
|
||||
function PetFrame_SetHappiness ()
|
||||
local happiness, damagePercentage = GetPetHappiness();
|
||||
local hasPetUI, isHunterPet = HasPetUI();
|
||||
if ( not happiness or not isHunterPet ) then
|
||||
PetFrameHappiness:Hide();
|
||||
return;
|
||||
end
|
||||
PetFrameHappiness:Show();
|
||||
if ( happiness == 1 ) then
|
||||
PetFrameHappinessTexture:SetTexCoord(0.375, 0.5625, 0, 0.359375);
|
||||
elseif ( happiness == 2 ) then
|
||||
PetFrameHappinessTexture:SetTexCoord(0.1875, 0.375, 0, 0.359375);
|
||||
elseif ( happiness == 3 ) then
|
||||
PetFrameHappinessTexture:SetTexCoord(0, 0.1875, 0, 0.359375);
|
||||
end
|
||||
PetFrameHappiness.tooltip = _G["PET_HAPPINESS"..happiness];
|
||||
PetFrameHappiness.tooltipDamage = format(PET_DAMAGE_PERCENTAGE, damagePercentage);
|
||||
end
|
||||
|
||||
function PetFrameDropDown_OnLoad (self)
|
||||
UIDropDownMenu_Initialize(self, PetFrameDropDown_Initialize, "MENU");
|
||||
end
|
||||
|
||||
function PetFrameDropDown_Initialize ()
|
||||
if ( UnitExists(PetFrame.unit) ) then
|
||||
if ( PetFrame.unit == "player" ) then
|
||||
UnitPopup_ShowMenu(PetFrameDropDown, "SELF", "player");
|
||||
else
|
||||
if ( UnitIsUnit("pet", "vehicle") ) then
|
||||
UnitPopup_ShowMenu(PetFrameDropDown, "VEHICLE", "vehicle");
|
||||
else
|
||||
UnitPopup_ShowMenu(PetFrameDropDown, "PET", "pet");
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PetCastingBarFrame_OnLoad (self)
|
||||
CastingBarFrame_OnLoad(self, "pet", false, false);
|
||||
|
||||
self:RegisterEvent("UNIT_PET");
|
||||
|
||||
self.showCastbar = UnitIsPossessed("pet");
|
||||
end
|
||||
|
||||
function PetCastingBarFrame_OnEvent (self, event, ...)
|
||||
local arg1 = ...;
|
||||
if ( event == "UNIT_PET" ) then
|
||||
if ( arg1 == "player" ) then
|
||||
self.showCastbar = UnitIsPossessed("pet");
|
||||
|
||||
if ( not self.showCastbar ) then
|
||||
self:Hide();
|
||||
elseif ( self.casting or self.channeling ) then
|
||||
self:Show();
|
||||
end
|
||||
end
|
||||
return;
|
||||
end
|
||||
CastingBarFrame_OnEvent(self, event, ...);
|
||||
end
|
||||
Reference in New Issue
Block a user