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.
133 lines
4.3 KiB
133 lines
4.3 KiB
local _, addon = ...
|
|
|
|
local AttributeFrame = Narci_Attribute;
|
|
local ESM = Narci_EquipmentSetManager;
|
|
local GamePadButtonPool = addon.GamePadButtonPool;
|
|
|
|
local ag = addon.CreateActionGroup("SetManager");
|
|
ag.repeatInterval = 0.25;
|
|
|
|
function ag:Init()
|
|
self.setButtons = ESM:GetSetButtons();
|
|
self.setIndex = 1;
|
|
|
|
self.scrollFrame = Narci_EquipmentSetManagerFrame.ListScrollFrame;
|
|
self.scrollScript = self.scrollFrame:GetScript("OnMouseWheel");
|
|
|
|
hooksecurefunc(ESM, "OnNumSetsChanged", function(f, numSets)
|
|
if self.scrollFrame:IsShown() then
|
|
self.numSets = numSets;
|
|
if self.setIndex > numSets then
|
|
self.setIndex = numSets;
|
|
end
|
|
self:Navigate(0, 0);
|
|
end
|
|
end);
|
|
end
|
|
|
|
function ag:OnActiveCallback()
|
|
self.numSets = ESM:GetNumSetButtons();
|
|
self.setIndex = 0;
|
|
self.editMode = nil;
|
|
|
|
self:Navigate(0, -1);
|
|
addon.GamePadNavBar:SelectButtonByID(3);
|
|
end
|
|
|
|
function ag:ResetNavigation()
|
|
|
|
end
|
|
|
|
function ag:Navigate(x, y)
|
|
local hold;
|
|
if self.editMode then
|
|
|
|
else
|
|
--Browsing saved sets
|
|
local moveDirection;
|
|
if x > 0 or y < 0 then
|
|
if self.setIndex < self.numSets then
|
|
self.setIndex = self.setIndex + 1;
|
|
hold = true;
|
|
moveDirection = -1;
|
|
else
|
|
return
|
|
end
|
|
elseif x < 0 or y > 0 then
|
|
if self.setIndex > 1 then
|
|
self.setIndex = self.setIndex - 1;
|
|
hold = true;
|
|
moveDirection = 1;
|
|
else
|
|
return
|
|
end
|
|
end
|
|
GamePadButtonPool:HideAllButtons();
|
|
self:Enter(self.setButtons[self.setIndex]);
|
|
if self.currentObj then
|
|
if self.currentObj.setID then
|
|
local pad1 = GamePadButtonPool:SetupButton("PAD3", "Equip", AttributeFrame, "TOPRIGHT", self.currentObj, "TOPLEFT", -4, 0, -1);
|
|
local pad3 = GamePadButtonPool:SetupButton("PAD1", "Edit", AttributeFrame, "BOTTOMRIGHT", self.currentObj, "BOTTOMLEFT", -4, 0, -1);
|
|
else
|
|
--"New Set" button
|
|
local pad3 = GamePadButtonPool:SetupButton("PAD1", "", AttributeFrame, "RIGHT", self.currentObj, "LEFT", -4, 0, -1);
|
|
end
|
|
|
|
if moveDirection then
|
|
if moveDirection > 0 then
|
|
if self.currentObj:GetTop() > self.scrollFrame:GetTop() + 4 then
|
|
self.scrollScript(self.scrollFrame, 1);
|
|
end
|
|
else
|
|
if self.currentObj:GetBottom() < self.scrollFrame:GetBottom() - 4 then
|
|
self.scrollScript(self.scrollFrame, -1);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return hold
|
|
end
|
|
|
|
function ag:Switch(x)
|
|
if x < 0 then
|
|
Narci_NavBar:SelectTab(1);
|
|
elseif x > 0 then
|
|
Narci_NavBar:SelectTab(3);
|
|
end
|
|
end
|
|
|
|
function ag:KeyDown(key)
|
|
if self.editMode then
|
|
if key =="PAD2" then
|
|
if self.currentObj then
|
|
self.currentObj.CancelButton:Click();
|
|
end
|
|
self.editMode = nil;
|
|
self:Navigate(0, 0);
|
|
elseif key == "PAD3" then
|
|
if self.currentObj then
|
|
self.currentObj.ConfirmButton:Click();
|
|
end
|
|
self.editMode = nil;
|
|
self:Navigate(0, 0);
|
|
end
|
|
else
|
|
if key == "PAD1" then
|
|
self:Click("RightButton");
|
|
self.editMode = true;
|
|
GamePadButtonPool:HideAllButtons();
|
|
if self.currentObj then
|
|
local pad3 = GamePadButtonPool:SetupButton("PAD3", "", AttributeFrame, "BOTTOM", self.currentObj.ConfirmButton, "TOP", 0, 0);
|
|
local pad2 = GamePadButtonPool:SetupButton("PAD2", "", AttributeFrame, "BOTTOM", self.currentObj.CancelButton, "TOP", 0, 0);
|
|
end
|
|
elseif key == "PAD3" then
|
|
if self.currentObj and self.currentObj.setID then
|
|
self.currentObj:OnDoubleClick("LeftButton");
|
|
end
|
|
elseif key == "PAD2" then
|
|
addon.SelectActionGroup("CharacterFrame", 2);
|
|
end
|
|
end
|
|
end
|