режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,294 @@
|
||||
BONUSACTIONBAR_SLIDETIME = 0.15;
|
||||
BONUSACTIONBAR_YPOS = 43;
|
||||
BONUSACTIONBAR_XPOS = 4;
|
||||
NUM_BONUS_ACTION_SLOTS = 12;
|
||||
NUM_SHAPESHIFT_SLOTS = 10;
|
||||
NUM_POSSESS_SLOTS = 2;
|
||||
POSSESS_CANCEL_SLOT = 2;
|
||||
|
||||
function BonusActionBar_OnLoad (self)
|
||||
self:RegisterEvent("UPDATE_BONUS_ACTIONBAR");
|
||||
self:SetFrameLevel(self:GetFrameLevel() + 2);
|
||||
self.mode = "none";
|
||||
self.completed = 1;
|
||||
self.lastBonusBar = 1;
|
||||
if ( GetBonusBarOffset() > 0 and GetActionBarPage() == 1 ) then
|
||||
ShowBonusActionBar();
|
||||
end
|
||||
end
|
||||
|
||||
function BonusActionBar_OnEvent (self, event, ...)
|
||||
if ( event == "UPDATE_BONUS_ACTIONBAR" ) then
|
||||
if ( GetBonusBarOffset() > 0 ) then
|
||||
self.lastBonusBar = GetBonusBarOffset();
|
||||
ShowBonusActionBar();
|
||||
else
|
||||
HideBonusActionBar();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BonusActionBar_OnUpdate(self, elapsed)
|
||||
local yPos;
|
||||
if ( self.slideTimer and (self.slideTimer < self.timeToSlide) ) then
|
||||
-- Animating
|
||||
self.completed = nil;
|
||||
if ( self.mode == "show" ) then
|
||||
yPos = (self.slideTimer/self.timeToSlide) * BONUSACTIONBAR_YPOS;
|
||||
self:SetPoint("TOPLEFT", self:GetParent(), "BOTTOMLEFT", BONUSACTIONBAR_XPOS, yPos);
|
||||
self.state = "showing";
|
||||
self:Show();
|
||||
elseif ( self.mode == "hide" ) then
|
||||
yPos = (1 - (self.slideTimer/self.timeToSlide)) * BONUSACTIONBAR_YPOS;
|
||||
self:SetPoint("TOPLEFT", self:GetParent(), "BOTTOMLEFT", BONUSACTIONBAR_XPOS, yPos);
|
||||
self.state = "hiding";
|
||||
end
|
||||
self.slideTimer = self.slideTimer + elapsed;
|
||||
else
|
||||
-- Animation complete
|
||||
if ( self.completed == 1 ) then
|
||||
return;
|
||||
else
|
||||
self.completed = 1;
|
||||
end
|
||||
if ( self.mode == "show" ) then
|
||||
self:SetPoint("TOPLEFT", self:GetParent(), "BOTTOMLEFT", BONUSACTIONBAR_XPOS, BONUSACTIONBAR_YPOS);
|
||||
self.state = "top";
|
||||
PlaySound("igBonusBarOpen");
|
||||
elseif ( self.mode == "hide" ) then
|
||||
self:SetPoint("TOPLEFT", self:GetParent(), "BOTTOMLEFT", BONUSACTIONBAR_XPOS, 0);
|
||||
self.state = "bottom";
|
||||
self:Hide();
|
||||
end
|
||||
self.mode = "none";
|
||||
end
|
||||
end
|
||||
|
||||
function ShowBonusActionBar (override)
|
||||
if (( (not MainMenuBar.busy) and (not UnitHasVehicleUI("player")) ) or override) then --Don't change while we're animating out MainMenuBar for vehicle UI
|
||||
if ( (BonusActionBarFrame.mode ~= "show" and BonusActionBarFrame.state ~= "top") or (not UIParent:IsShown())) then
|
||||
BonusActionBarFrame:Show();
|
||||
if ( BonusActionBarFrame.completed ) then
|
||||
BonusActionBarFrame.slideTimer = 0;
|
||||
end
|
||||
BonusActionBarFrame.timeToSlide = BONUSACTIONBAR_SLIDETIME;
|
||||
BonusActionBarFrame.mode = "show";
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HideBonusActionBar (override)
|
||||
if (( (not MainMenuBar.busy) and (not UnitHasVehicleUI("player")) ) or override) then --Don't change while we're animating out MainMenuBar for vehicle UI
|
||||
if ( (BonusActionBarFrame:IsShown()) or (not UIParent:IsShown())) then
|
||||
if ( BonusActionBarFrame.completed ) then
|
||||
BonusActionBarFrame.slideTimer = 0;
|
||||
end
|
||||
BonusActionBarFrame.timeToSlide = BONUSACTIONBAR_SLIDETIME;
|
||||
BonusActionBarFrame.mode = "hide";
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BonusActionButtonUp (id)
|
||||
PetActionButtonUp(id);
|
||||
end
|
||||
|
||||
function BonusActionButtonDown (id)
|
||||
PetActionButtonDown(id);
|
||||
end
|
||||
|
||||
function ShapeshiftBar_OnLoad (self)
|
||||
ShapeshiftBar_Update();
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
self:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
||||
self:RegisterEvent("UPDATE_SHAPESHIFT_USABLE");
|
||||
self:RegisterEvent("UPDATE_SHAPESHIFT_COOLDOWN");
|
||||
self:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
||||
self:RegisterEvent("UPDATE_INVENTORY_ALERTS"); -- Wha?? Still Wha...
|
||||
self:RegisterEvent("ACTIONBAR_PAGE_CHANGED");
|
||||
end
|
||||
|
||||
function ShapeshiftBar_OnEvent (self, event, ...)
|
||||
if ( event == "PLAYER_ENTERING_WORLD" or event == "UPDATE_SHAPESHIFT_FORMS" ) then
|
||||
ShapeshiftBar_Update();
|
||||
elseif ( event == "ACTIONBAR_PAGE_CHANGED" ) then
|
||||
if ( GetBonusBarOffset() > 0 ) then
|
||||
ShowBonusActionBar();
|
||||
else
|
||||
HideBonusActionBar();
|
||||
end
|
||||
else
|
||||
ShapeshiftBar_UpdateState();
|
||||
end
|
||||
end
|
||||
|
||||
function ShapeshiftBar_Update ()
|
||||
local numForms = GetNumShapeshiftForms();
|
||||
if ( numForms > 0 ) then
|
||||
--Setup the shapeshift bar to display the appropriate number of slots
|
||||
if ( numForms == 1 ) then
|
||||
ShapeshiftBarMiddle:Hide();
|
||||
ShapeshiftBarRight:SetPoint("LEFT", "ShapeshiftBarLeft", "LEFT", 12, 0);
|
||||
ShapeshiftButton1:SetPoint("BOTTOMLEFT", "ShapeshiftBarFrame", "BOTTOMLEFT", 12, 3);
|
||||
elseif ( numForms == 2 ) then
|
||||
ShapeshiftBarMiddle:Hide();
|
||||
ShapeshiftBarRight:SetPoint("LEFT", "ShapeshiftBarLeft", "RIGHT", 0, 0);
|
||||
else
|
||||
ShapeshiftBarMiddle:Show();
|
||||
ShapeshiftBarMiddle:SetPoint("LEFT", "ShapeshiftBarLeft", "RIGHT", 0, 0);
|
||||
ShapeshiftBarMiddle:SetWidth(37 * (numForms-2));
|
||||
ShapeshiftBarMiddle:SetTexCoord(0, numForms-2, 0, 1);
|
||||
ShapeshiftBarRight:SetPoint("LEFT", "ShapeshiftBarMiddle", "RIGHT", 0, 0);
|
||||
end
|
||||
|
||||
ShapeshiftBarFrame:Show();
|
||||
else
|
||||
ShapeshiftBarFrame:Hide();
|
||||
end
|
||||
ShapeshiftBar_UpdateState();
|
||||
UIParent_ManageFramePositions();
|
||||
end
|
||||
|
||||
function ShapeshiftBar_UpdateState ()
|
||||
local numForms = GetNumShapeshiftForms();
|
||||
local texture, name, isActive, isCastable;
|
||||
local button, icon, cooldown;
|
||||
local start, duration, enable;
|
||||
for i=1, NUM_SHAPESHIFT_SLOTS do
|
||||
button = _G["ShapeshiftButton"..i];
|
||||
icon = _G["ShapeshiftButton"..i.."Icon"];
|
||||
if ( i <= numForms ) then
|
||||
texture, name, isActive, isCastable = GetShapeshiftFormInfo(i);
|
||||
icon:SetTexture(texture);
|
||||
|
||||
--Cooldown stuffs
|
||||
cooldown = _G["ShapeshiftButton"..i.."Cooldown"];
|
||||
if ( texture ) then
|
||||
cooldown:Show();
|
||||
else
|
||||
cooldown:Hide();
|
||||
end
|
||||
start, duration, enable = GetShapeshiftFormCooldown(i);
|
||||
CooldownFrame_SetTimer(cooldown, start, duration, enable);
|
||||
|
||||
if ( isActive ) then
|
||||
ShapeshiftBarFrame.lastSelected = button:GetID();
|
||||
button:SetChecked(1);
|
||||
else
|
||||
button:SetChecked(0);
|
||||
end
|
||||
|
||||
if ( isCastable ) then
|
||||
icon:SetVertexColor(1.0, 1.0, 1.0);
|
||||
else
|
||||
icon:SetVertexColor(0.4, 0.4, 0.4);
|
||||
end
|
||||
|
||||
button:Show();
|
||||
else
|
||||
button:Hide();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ShapeshiftBar_ChangeForm (id)
|
||||
ShapeshiftBarFrame.lastSelected = id;
|
||||
CastShapeshiftForm(id);
|
||||
end
|
||||
|
||||
function PossessBar_OnLoad (self)
|
||||
PossessBar_Update();
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
self:RegisterEvent("UPDATE_BONUS_ACTIONBAR");
|
||||
self:RegisterEvent("UNIT_AURA");
|
||||
self:RegisterEvent("ACTIONBAR_PAGE_CHANGED");
|
||||
end
|
||||
|
||||
function PossessBar_OnEvent (self, event, ...)
|
||||
if ( event == "PLAYER_ENTERING_WORLD" or event == "UPDATE_BONUS_ACTIONBAR" ) then
|
||||
PossessBar_Update();
|
||||
elseif ( event == "ACTIONBAR_PAGE_CHANGED" ) then
|
||||
if ( GetBonusBarOffset() > 0 ) then
|
||||
ShowBonusActionBar();
|
||||
else
|
||||
HideBonusActionBar();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PossessBar_Update (override)
|
||||
if ( (not MainMenuBar.busy and not UnitHasVehicleUI("player")) or override ) then --Don't change while we're animating out MainMenuBar for vehicle UI
|
||||
if ( IsPossessBarVisible() ) then
|
||||
PossessBarFrame:Show();
|
||||
ShapeshiftBarFrame:Hide();
|
||||
ShowPetActionBar(true);
|
||||
else
|
||||
PossessBarFrame:Hide();
|
||||
if(GetNumShapeshiftForms() > 0) then
|
||||
ShapeshiftBarFrame:Show();
|
||||
ShowPetActionBar(true);
|
||||
end
|
||||
end
|
||||
PossessBar_UpdateState();
|
||||
UIParent_ManageFramePositions();
|
||||
end
|
||||
end
|
||||
|
||||
function PossessBar_UpdateState ()
|
||||
local texture, name, enabled;
|
||||
local button, background, icon, cooldown;
|
||||
|
||||
for i=1, NUM_POSSESS_SLOTS do
|
||||
-- Possess Icon
|
||||
button = _G["PossessButton"..i];
|
||||
background = _G["PossessBackground"..i];
|
||||
icon = _G["PossessButton"..i.."Icon"];
|
||||
texture, name, enabled = GetPossessInfo(i);
|
||||
icon:SetTexture(texture);
|
||||
|
||||
--Cooldown stuffs
|
||||
cooldown = _G["PossessButton"..i.."Cooldown"];
|
||||
cooldown:Hide();
|
||||
|
||||
button:SetChecked(nil);
|
||||
icon:SetVertexColor(1.0, 1.0, 1.0);
|
||||
|
||||
if ( enabled ) then
|
||||
button:Show();
|
||||
background:Show();
|
||||
else
|
||||
button:Hide();
|
||||
background:Hide();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PossessButton_OnClick (self)
|
||||
self:SetChecked(nil);
|
||||
|
||||
local id = self:GetID();
|
||||
if ( id == POSSESS_CANCEL_SLOT ) then
|
||||
if ( UnitControllingVehicle("player") and CanExitVehicle() ) then
|
||||
VehicleExit();
|
||||
else
|
||||
local texture, name = GetPossessInfo(id);
|
||||
CancelUnitBuff("player", name);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function PossessButton_OnEnter (self)
|
||||
local id = self:GetID();
|
||||
|
||||
if ( GetCVar("UberTooltips") == "1" ) then
|
||||
GameTooltip_SetDefaultAnchor(GameTooltip, self);
|
||||
else
|
||||
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
|
||||
end
|
||||
|
||||
if ( id == POSSESS_CANCEL_SLOT ) then
|
||||
GameTooltip:SetText(CANCEL);
|
||||
else
|
||||
GameTooltip:SetPossession(id);
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user