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
135 lines
3.4 KiB
|
4 years ago
|
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
|