You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.5 KiB

local _, addon = ...
local GetItemQualityColor = NarciAPI.GetItemQualityColor;
local function IsSlotUsable(slotID)
local _, _, enable = GetInventoryItemCooldown("player", slotID);
return enable and enable == 1
end
local LAST_BUTTON;
local function OnScaleUpFinished(self)
self:GetParent():SetScale(1.150);
end
local function CreateScaleUpAnimationOnWidget(widget)
local ag = widget:CreateAnimationGroup();
ag:SetScript("OnFinished", OnScaleUpFinished);
local anim = ag:CreateAnimation("Scale");
anim:SetScale(1.150, 1.150);
anim:SetDuration(0.12);
anim:SetSmoothing("OUT");
widget.ScaleUp = ag;
end
local function PrepareAnimationForSlot(slotButton)
if not slotButton.gamepad then
CreateScaleUpAnimationOnWidget(slotButton.Border);
CreateScaleUpAnimationOnWidget(slotButton.Border.BorderMask);
CreateScaleUpAnimationOnWidget(slotButton.Icon);
CreateScaleUpAnimationOnWidget(slotButton.IconMask);
slotButton.gamepad = true;
end
end
NarciGamePadSlotOverlayMixin = {};
function NarciGamePadSlotOverlayMixin:UpdateQualityColor(slotButton)
if not slotButton then return end;
local quality = slotButton.itemQuality;
if not quality then
if slotButton.itemLocation then
quality = C_Item.GetItemQuality(slotButton.itemLocation);
end
end
self.HexGlow:SetVertexColor(GetItemQualityColor(quality));
end
function NarciGamePadSlotOverlayMixin:AnchorToSlotButton(slotButton)
if LAST_BUTTON and LAST_BUTTON.gamepadOverlay then
LAST_BUTTON.gamepadOverlay = nil;
end
LAST_BUTTON = slotButton;
LAST_BUTTON.gamepadOverlay = self;
self.HexGlow:SetScale(1);
if not slotButton then
self:Hide();
return
end
PrepareAnimationForSlot(slotButton);
self:UpdateQualityColor(slotButton);
self.HexGlow.FadeIn:Stop();
self.HexGlow.FadeIn:Play();
self:SetParent(slotButton);
self:ClearAllPoints();
self:SetPoint("CENTER", slotButton, "CENTER", 0, 0);
self:Show();
local f = self.ButtonNote;
f.Background:ClearAllPoints();
local usable = IsSlotUsable(slotButton.slotID);
local pad1, pad3;
if slotButton.isRight or slotButton.isFlyout then
if slotButton.isFlyout then
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Equip", f, "LEFT", f, "RIGHT", 8, 0, 1);
else
if usable then
pad3 = addon.GamePadButtonPool:SetupButton("PAD3", "Use", f, "BOTTOMLEFT", f, "RIGHT", 8, 4, 1);
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "TOPLEFT", f, "RIGHT", 8, -4, 1);
else
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "LEFT", f, "RIGHT", 8, 0, 1);
end
end
f.Background:SetPoint("LEFT", f, "RIGHT", -56, 0);
else
if usable then
pad3 = addon.GamePadButtonPool:SetupButton("PAD3", "Use", f, "BOTTOMRIGHT", f, "LEFT", -8, 4, -1);
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "TOPRIGHT", f, "LEFT", -8, -4, -1);
else
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "RIGHT", f, "LEFT", -8, 0, -1);
end
f.Background:SetPoint("RIGHT", f, "LEFT", 56, 0);
end
--[[
local f = NarciEquipmentTooltip;
if slotButton.isRight then
if usable then
pad3 = addon.GamePadButtonPool:SetupButton("PAD3", "Use", f, "BOTTOMLEFT", f, "RIGHT", 8, 4, 1);
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "TOPLEFT", f, "RIGHT", 8, -4, 1);
else
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "LEFT", f, "RIGHT", 8, 0, 1);
end
else
if usable then
pad3 = addon.GamePadButtonPool:SetupButton("PAD3", "Use", f, "BOTTOMLEFT", f, "TOPLEFT", 0, 8, 1);
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "BOTTOMLEFT", f, "TOPLEFT", 96, 8, 1);
else
pad1 = addon.GamePadButtonPool:SetupButton("PAD1", "Select", f, "BOTTOMLEFT", f, "TOPLEFT", 0, 8, 1);
end
end
self.ButtonNote.Background:SetPoint("CENTER", f, "TOPLEFT", 48, 0);--]]
self.ButtonNote.FadeIn:Stop();
self.ButtonNote.FadeIn:Play();
end
function NarciGamePadSlotOverlayMixin:OnHide()
self:Hide();
self:SetScale(1);
self:StopAnimating();
end