mirror of
https://github.com/Blaststar/Questie-Octo-Vanilla.git
synced 2026-10-26 23:20:50 +00:00
218 lines
7.4 KiB
Lua
218 lines
7.4 KiB
Lua
-- Constants
|
|
TITAN_CLOCK_ID = "Clock";
|
|
TITAN_CLOCK_FORMAT_12H = "12H";
|
|
TITAN_CLOCK_FORMAT_24H = "24H";
|
|
TITAN_CLOCK_FREQUENCY = 0.5;
|
|
TITAN_CLOCK_FRAME_SHOW_TIME = 0.5;
|
|
|
|
function TitanPanelClockButton_OnLoad()
|
|
this.registry = {
|
|
id = TITAN_CLOCK_ID,
|
|
builtIn = 1,
|
|
version = TITAN_VERSION,
|
|
menuText = TITAN_CLOCK_MENU_TEXT,
|
|
buttonTextFunction = "TitanPanelClockButton_GetButtonText",
|
|
tooltipTitle = TITAN_CLOCK_TOOLTIP,
|
|
tooltipTextFunction = "TitanPanelClockButton_GetTooltipText",
|
|
frequency = TITAN_CLOCK_FREQUENCY,
|
|
updateType = TITAN_PANEL_UPDATE_BUTTON,
|
|
savedVariables = {
|
|
OffsetHour = 0,
|
|
Format = TITAN_CLOCK_FORMAT_12H,
|
|
DisplayOnRightSide = 1,
|
|
}
|
|
};
|
|
end
|
|
|
|
function TitanPanelClockButton_GetButtonText()
|
|
-- Calculate the hour/minutes considering the offset
|
|
local hour, minute = GetGameTime();
|
|
local twentyfour = "";
|
|
local offsettime = string.format("%s", TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));
|
|
local offsethour = 0;
|
|
local offsetmin = 0;
|
|
local s, e, id = string.find(offsettime, '%.5');
|
|
|
|
if s ~= nil then
|
|
offsethour = string.sub(offsettime, 1, s);
|
|
offsetmin = string.sub(offsettime, s+1);
|
|
if offsetmin == "" or offsetmin == nil then offsetmin = "0"; end
|
|
if offsethour == "" or offsethour == nil then offsethour = "0"; end
|
|
|
|
offsethour = tonumber(offsethour);
|
|
|
|
if tonumber(offsettime) < 0 then offsetmin = tonumber("-" .. offsetmin); end
|
|
|
|
minute = minute + (offsetmin*6);
|
|
|
|
if( minute > 59 ) then
|
|
minute = minute - 30;
|
|
offsethour = offsethour + 1;
|
|
elseif( minute < 0 ) then
|
|
minute = 60 + minute;
|
|
offsethour = offsethour - 1;
|
|
end
|
|
else
|
|
offsethour = TitanGetVar(TITAN_CLOCK_ID, "OffsetHour");
|
|
end
|
|
hour = hour + offsethour;
|
|
|
|
if( hour > 23 ) then
|
|
hour = hour - 24;
|
|
elseif( hour < 0 ) then
|
|
hour = 24 + hour;
|
|
end
|
|
|
|
-- Calculate the display text based on format 12H/24H
|
|
if (TitanGetVar(TITAN_CLOCK_ID, "Format") == TITAN_CLOCK_FORMAT_12H) then
|
|
local isAM;
|
|
if (hour >= 12) then
|
|
isAM = false;
|
|
hour = hour - 12;
|
|
else
|
|
isAM = true;
|
|
end
|
|
if (hour == 0) then
|
|
hour = 12;
|
|
end
|
|
if (isAM) then
|
|
return nil, format(TEXT(TIME_TWELVEHOURAM), hour, minute);
|
|
else
|
|
return nil, format(TEXT(TIME_TWELVEHOURPM), hour, minute);
|
|
end
|
|
else
|
|
twentyfour = format(TEXT(TIME_TWENTYFOURHOURS), hour, minute);
|
|
if hour < 10 then
|
|
twentyfour = "0" .. twentyfour
|
|
end
|
|
|
|
return nil, twentyfour;
|
|
end
|
|
|
|
end
|
|
|
|
function TitanPanelClockButton_GetTooltipText()
|
|
local clockText = TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));
|
|
return ""..
|
|
TITAN_CLOCK_TOOLTIP_VALUE.."\t"..TitanUtils_GetHighlightText(clockText).."\n"..
|
|
TitanUtils_GetGreenText(TITAN_CLOCK_TOOLTIP_HINT1).."\n"..
|
|
TitanUtils_GetGreenText(TITAN_CLOCK_TOOLTIP_HINT2);
|
|
end
|
|
|
|
function TitanPanelClockControlSlider_OnEnter()
|
|
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_CLOCK_CONTROL_TOOLTIP, TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
|
|
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
|
|
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
|
|
TitanUtils_StopFrameCounting(this:GetParent());
|
|
end
|
|
|
|
function TitanPanelClockControlSlider_OnLeave()
|
|
this.tooltipText = nil;
|
|
GameTooltip:Hide();
|
|
TitanUtils_StartFrameCounting(this:GetParent(), TITAN_CLOCK_FRAME_SHOW_TIME);
|
|
end
|
|
|
|
function TitanPanelClockControlSlider_OnShow()
|
|
getglobal(this:GetName().."Text"):SetText(TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
|
|
getglobal(this:GetName().."High"):SetText(TITAN_CLOCK_CONTROL_LOW);
|
|
getglobal(this:GetName().."Low"):SetText(TITAN_CLOCK_CONTROL_HIGH);
|
|
this:SetMinMaxValues(-12, 12);
|
|
this:SetValueStep(0.5);
|
|
this:SetValue(0 - TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));
|
|
|
|
position = TitanUtils_GetRealPosition(TITAN_CLOCK_ID);
|
|
|
|
TitanPanelClockControlFrame:SetPoint("BOTTOMRIGHT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "TOPRIGHT", 0, 0);
|
|
if (position == TITAN_PANEL_PLACE_TOP) then
|
|
TitanPanelClockControlFrame:ClearAllPoints();
|
|
TitanPanelClockControlFrame:SetPoint("TOPLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "BOTTOMLEFT", UIParent:GetRight() - TitanPanelClockControlFrame:GetWidth(), -4);
|
|
else
|
|
TitanPanelClockControlFrame:ClearAllPoints();
|
|
TitanPanelClockControlFrame:SetPoint("BOTTOMLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "TOPLEFT", UIParent:GetRight() - TitanPanelClockControlFrame:GetWidth(), 0);
|
|
end
|
|
|
|
end
|
|
|
|
function TitanPanelClockControlSlider_OnValueChanged()
|
|
getglobal(this:GetName().."Text"):SetText(TitanPanelClock_GetOffsetText(0 - this:GetValue()));
|
|
TitanSetVar(TITAN_CLOCK_ID, "OffsetHour", 0 - this:GetValue())
|
|
TitanPanelButton_UpdateButton(TITAN_CLOCK_ID);
|
|
|
|
-- Update GameTooltip
|
|
if (this.tooltipText) then
|
|
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_CLOCK_CONTROL_TOOLTIP, TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
|
|
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
|
|
end
|
|
end
|
|
|
|
function TitanPanelClockControlCheckButton_OnShow()
|
|
TitanPanelClockControlCheckButtonText:SetText(TITAN_CLOCK_CHECKBUTTON);
|
|
|
|
if (TitanGetVar(TITAN_CLOCK_ID, "Format") == TITAN_CLOCK_FORMAT_24H) then
|
|
this:SetChecked(1);
|
|
else
|
|
this:SetChecked(0);
|
|
end
|
|
end
|
|
|
|
function TitanPanelClockControlCheckButton_OnClick()
|
|
if (this:GetChecked()) then
|
|
TitanSetVar(TITAN_CLOCK_ID, "Format", TITAN_CLOCK_FORMAT_24H);
|
|
else
|
|
TitanSetVar(TITAN_CLOCK_ID, "Format", TITAN_CLOCK_FORMAT_12H);
|
|
end
|
|
TitanPanelButton_UpdateButton(TITAN_CLOCK_ID);
|
|
end
|
|
|
|
function TitanPanelClockControlCheckButton_OnEnter()
|
|
this.tooltipText = TITAN_CLOCK_CHECKBUTTON_TOOLTIP;
|
|
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
|
|
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
|
|
TitanUtils_StopFrameCounting(this:GetParent());
|
|
end
|
|
|
|
function TitanPanelClockControlCheckButton_OnLeave()
|
|
this.tooltipText = nil;
|
|
GameTooltip:Hide();
|
|
TitanUtils_StartFrameCounting(this:GetParent(), TITAN_CLOCK_FRAME_SHOW_TIME);
|
|
end
|
|
|
|
function TitanPanelClock_GetOffsetText(offset)
|
|
if (offset > 0) then
|
|
return "+" .. tostring(offset);
|
|
else
|
|
return tostring(offset);
|
|
end
|
|
end
|
|
|
|
function TitanPanelClockControlFrame_OnLoad()
|
|
getglobal(this:GetName().."Title"):SetText(TITAN_CLOCK_CONTROL_TITLE);
|
|
this:SetBackdropBorderColor(1, 1, 1);
|
|
this:SetBackdropColor(0, 0, 0, 1);
|
|
end
|
|
|
|
function TitanPanelClockControlFrame_OnUpdate(elapsed)
|
|
TitanUtils_CheckFrameCounting(this, elapsed);
|
|
end
|
|
|
|
function TitanPanelRightClickMenu_PrepareClockMenu()
|
|
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_CLOCK_ID].menuText);
|
|
|
|
info = {};
|
|
info.text = TITAN_CLOCK_MENU_DISPLAY_ON_RIGHT_SIDE;
|
|
info.func = TitanPanelClockButton_ToggleRightSideDisplay;
|
|
info.checked = TitanGetVar(TITAN_CLOCK_ID, "DisplayOnRightSide");
|
|
UIDropDownMenu_AddButton(info);
|
|
|
|
TitanPanelRightClickMenu_AddSpacer();
|
|
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_CLOCK_ID, TITAN_PANEL_MENU_FUNC_HIDE);
|
|
end
|
|
|
|
function TitanPanelClockButton_ToggleRightSideDisplay()
|
|
TitanToggleVar(TITAN_CLOCK_ID, "DisplayOnRightSide");
|
|
TITAN_PANEL_SELECTED = TitanUtils_GetWhichBar(TITAN_CLOCK_ID);
|
|
TitanPanel_RemoveButton(TITAN_CLOCK_ID);
|
|
TitanDebug(TITAN_PANEL_SELECTED);
|
|
TitanPanel_AddButton(TITAN_CLOCK_ID);
|
|
-- TitanPanelButton_UpdateButton(TITAN_BAG_ID);
|
|
end |