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
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
|