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.

95 lines
2.6 KiB

4 years ago
local _, addon = ...
local MainFrame;
local buttons = {};
local function UpdateTabButtonVisual(selectedID)
for i, button in pairs(buttons) do
button:SetSelected(i == selectedID);
end
end
addon.UpdateTabButtonVisual = UpdateTabButtonVisual;
NarciMythicPlusTabButtonMixin = {};
function NarciMythicPlusTabButtonMixin:OnLoad()
if not MainFrame then
MainFrame = self:GetParent():GetParent();
end
tinsert(buttons, self);
self.buttonIndex = self:GetID();
local color;
if self.buttonIndex == 1 then
self.isSelected = true;
self:SetButtonText("In Time");
self.Highlight:Show();
color = "green";
else
self:SetButtonText("Over Time");
local t = 0.5;
self.Left:SetTexCoord(0 + t, 0.125 + t, 0, 0.5);
self.Center:SetTexCoord(0.125 + t, 0.375 + t, 0, 0.5);
self.Right:SetTexCoord(0.375 + t, 0.5 + t, 0, 0.5);
color = "red";
end
local v = 0.08;
self.Left:SetVertexColor(v, v, v);
self.Center:SetVertexColor(v, v, v);
self.Right:SetVertexColor(v, v, v);
local r, g, b = NarciAPI.GetColorPresetRGB(color);
self.ButtonText:SetTextColor(r, g, b);
self.Highlight:SetVertexColor(r, g, b);
self:SetSelected(self.isSelected);
end
function NarciMythicPlusTabButtonMixin:OnEnter()
self.ButtonText:SetAlpha(1);
end
function NarciMythicPlusTabButtonMixin:OnLeave()
if not self.isSelected then
self.ButtonText:SetAlpha(0.5);
end
end
function NarciMythicPlusTabButtonMixin:OnMouseDown()
self.ButtonText:SetPoint("CENTER", self, "CENTER", 0, -1);
end
function NarciMythicPlusTabButtonMixin:OnMouseUp()
self.ButtonText:SetPoint("CENTER", self, "CENTER", 0, 0);
end
function NarciMythicPlusTabButtonMixin:OnClick()
UpdateTabButtonVisual(self.buttonIndex);
MainFrame:SetMapDetailInfoType(self.buttonIndex == 1);
end
function NarciMythicPlusTabButtonMixin:SetButtonText(text)
self.ButtonText:SetText(text);
local width = self.ButtonText:GetWidth() + 8;
if width < 38 then
width = 38;
else
width = math.floor(width + 0.5);
end
self.Center:SetWidth(width);
self:SetWidth(width + 10);
end
function NarciMythicPlusTabButtonMixin:SetSelected(state)
self.Highlight:SetShown(state);
self.Left:SetShown(state);
self.Center:SetShown(state);
self.Right:SetShown(state);
self.isSelected = state;
if state then
self.ButtonText:SetAlpha(1);
else
self.ButtonText:SetAlpha(0.5);
end
end