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.
141 lines
4.0 KiB
141 lines
4.0 KiB
local _, addon = ...
|
|
|
|
local MainFrame;
|
|
local NavBar = Narci_NavBar;
|
|
|
|
local buttonData = {
|
|
{"Equipment", function() NavBar:SelectTab(1) end},
|
|
{"Title", function() local b = Narci_TitleManager_Switch; if not b.isOn then b:Click() end end},
|
|
{"Sets", function() NavBar:SelectTab(2) end},
|
|
--{"Soulbinds", function() NavBar:SelectTab(3) end},
|
|
{"M+", function() NavBar:SelectTab(3) end},
|
|
};
|
|
|
|
NarciGamePadNavBarButtonMixin = {};
|
|
|
|
function NarciGamePadNavBarButtonMixin:SetButtonName(name)
|
|
self.ButtonName:SetWidth(0);
|
|
self.ButtonName:SetText( string.upper(name) );
|
|
local width = math.max(48, (self.ButtonName:GetWrappedWidth() or 0) + 12);
|
|
self.ButtonName:SetWidth(width);
|
|
self:SetWidth(width);
|
|
return width
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:OnEnter()
|
|
self.ButtonName:SetTextColor(1, 1, 1);
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:OnLeave()
|
|
if not self.isOn then
|
|
self.ButtonName:SetTextColor(0.60, 0.60, 0.60);
|
|
end
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:OnMouseDown()
|
|
self.ButtonName:SetPoint("CENTER", self, "CENTER", 0, -0.8);
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:OnMouseUp()
|
|
self.ButtonName:SetPoint("CENTER", self, "CENTER", 0, 0);
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:OnClick()
|
|
MainFrame:SelectButton(self);
|
|
if self.onClickFunc then
|
|
self.onClickFunc();
|
|
end
|
|
end
|
|
|
|
function NarciGamePadNavBarButtonMixin:SetSelection(state)
|
|
if state then
|
|
self.isOn = true;
|
|
self:OnEnter();
|
|
else
|
|
self.isOn = nil;
|
|
self:OnLeave();
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
NarciGamePadNavBarMixin = {};
|
|
|
|
local function UpdateThemeColor_OnShow(self)
|
|
self.SelectionHighlight:SetVertexColor( NarciThemeUtil:GetColor() );
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:OnLoad()
|
|
addon.GamePadNavBar = self;
|
|
MainFrame = self;
|
|
if not self.NavButtons then
|
|
self.NavButtons = {};
|
|
end
|
|
self:SetScript("OnLoad", nil);
|
|
self.OnLoad = nil;
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:OnShow()
|
|
self:Init();
|
|
UpdateThemeColor_OnShow(self);
|
|
self:SetScript("OnShow", UpdateThemeColor_OnShow);
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:SetBumperStyle(id)
|
|
local styleName;
|
|
if id == 2 then
|
|
styleName = "PS";
|
|
else
|
|
styleName = "Xbox";
|
|
end
|
|
self.LeftBumper:SetTexture("Interface\\AddOns\\Narcissus_GamePad\\Art\\"..styleName.."\\Bumpers");
|
|
self.RightBumper:SetTexture("Interface\\AddOns\\Narcissus_GamePad\\Art\\"..styleName.."\\Bumpers");
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:Init()
|
|
self:ClearAllPoints();
|
|
--self:SetPoint("TOPLEFT", Narci_Character, "TOPLEFT", 24, -24);
|
|
self:SetPoint("TOP", Narci_GuideLineFrame, "TOP", 0, 0);
|
|
|
|
self:SetBumperStyle(1);
|
|
|
|
--Create Buttons
|
|
local button;
|
|
local width;
|
|
local padding = 72;
|
|
local fullWidth = padding;
|
|
for i = 1, #buttonData do
|
|
if not self.NavButtons[i] then
|
|
self.NavButtons[i] = CreateFrame("Button", nil, self, "NarciGamePadNavBarButtonTemplate");
|
|
end
|
|
button = self.NavButtons[i];
|
|
button:SetPoint("LEFT", self, "LEFT", fullWidth, 0);
|
|
button.onClickFunc = buttonData[i][2];
|
|
width = button:SetButtonName(buttonData[i][1]);
|
|
fullWidth = fullWidth + width;
|
|
end
|
|
fullWidth = fullWidth + padding;
|
|
self:SetWidth(fullWidth);
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:SelectButton(navButton)
|
|
for _, button in pairs(self.NavButtons) do
|
|
button:SetSelection(false);
|
|
end
|
|
|
|
if navButton then
|
|
navButton:SetSelection(true);
|
|
local width = navButton:GetWidth();
|
|
self.SelectionHighlight:SetWidth( math.max(width, 72) );
|
|
self.SelectionHighlight:ClearAllPoints();
|
|
self.SelectionHighlight:SetPoint("BOTTOM", navButton, "BOTTOM", 0, 0);
|
|
self.SelectionHighlight:Show();
|
|
else
|
|
self.SelectionHighlight:Hide();
|
|
end
|
|
end
|
|
|
|
function NarciGamePadNavBarMixin:SelectButtonByID(id)
|
|
self:SelectButton(self.NavButtons[id]);
|
|
end
|