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.

135 lines
3.4 KiB

local _, addon = ...
local ag = addon.CreateActionGroup("EquipmentSlot");
ag.repeatInterval = 0.25;
local SlotBorder = NarciGamePadOverlay.SlotBorder;
ag:SetButtonDescription("A", "Select");
ag:SetButtonDescription("B", "Cancel");
ag:SetButtonDescription("X", "Use");
function ag:Init()
local slotFrame = Narci_Character;
self.buttons = {};
self.buttons[1] = { --Left column
slotFrame.HeadSlot,
slotFrame.NeckSlot,
slotFrame.ShoulderSlot,
slotFrame.BackSlot,
slotFrame.ChestSlot,
slotFrame.WristSlot,
slotFrame.MainHandSlot,
slotFrame.SecondaryHandSlot,
slotFrame.ShirtSlot,
};
self.buttons[2] = { --Right column
slotFrame.HandsSlot,
slotFrame.WaistSlot,
slotFrame.LegsSlot,
slotFrame.FeetSlot,
slotFrame.Finger0Slot;
slotFrame.Finger1Slot;
slotFrame.Trinket0Slot;
slotFrame.Trinket1Slot;
slotFrame.TabardSlot;
};
self.row = 0;
self.col = 1;
self.maxRow = 9;
self.maxCol = 2;
end
function ag:Enter(currentObj)
self:Leave();
if currentObj and currentObj.OnEnter then
SlotBorder:AnchorToSlotButton(currentObj);
currentObj:OnEnter(nil, true);
addon.ClickProxy:SetUseItem(currentObj.slotID);
end
self.currentObj = currentObj;
end
function ag:KeyDown(key)
local hold, propagate;
if key == "PAD1" then
if self.currentObj then
Narci_EquipmentOption:SetFromSlotButton(self.currentObj, true);
end
elseif key == "PAD2" then
self:Leave();
elseif key == "PAD3" then
--use item
if self.currentObj and self.currentObj.AnchorAlertFrame then
self.currentObj:AnchorAlertFrame();
end
propagate = true;
end
return hold, propagate
end
function ag:KeyUp(key)
end
function ag:Navigate(x, y)
-- x > 0 PADDRIGHT, x < 0 PADDLEFT
-- y > 0 PADDUP, x < 0 PADDDOWN
if x > 0 then
self.col = self.col + 1;
if self.col > self.maxCol then
self.col = 1;
end
elseif x < 0 then
self.col = self.col - 1;
if self.col < 1 then
self.col = self.maxCol;
end
end
if y > 0 then
self.row = self.row - 1;
if self.row < 1 then
self.row = self.maxRow;
end
elseif y < 0 then
self.row = self.row + 1;
if self.row > self.maxRow then
self.row = 1;
end
end
self:Enter(self.buttons[self.col][self.row]);
return true
end
function ag:Switch(x)
if x > 0 then
addon.SelectActionGroup("CharacterFrame", 0);
self:Leave();
end
end
function ag:OnActiveCallback(mode)
if mode then
if mode == 1 then
self.col = 1;
self.row = 1;
elseif mode == 2 then
self.col = 2;
self.row = 1;
elseif mode == 3 then
self.col = 1;
self.row = self.maxRow;
elseif mode == 4 then
if self.row == 0 then
self.row = 1;
end
end
end
self:Enter(self.buttons[self.col][self.row]);
addon.GamePadNavBar:SelectButtonByID(1);
end
function ag:ResetNavigation()
self.row = 0;
self.col = 1;
end