104 lines
2.5 KiB
Lua
104 lines
2.5 KiB
Lua
---@class utils
|
|
utils = utils or {}
|
|
|
|
-- For use alongside GetSystemTime()
|
|
---@nodiscard
|
|
---@param minutes integer
|
|
---@return integer
|
|
utils.minutes = function(minutes)
|
|
return minutes * 60
|
|
end
|
|
|
|
---@nodiscard
|
|
---@param hours integer
|
|
---@return integer
|
|
-- For use alongside GetSystemTime()
|
|
utils.hours = function(hours)
|
|
return hours * 60 * 60
|
|
end
|
|
|
|
-- For use alongside GetSystemTime()
|
|
---@nodiscard
|
|
---@param days integer
|
|
---@return integer
|
|
utils.days = function(days)
|
|
return days * 60 * 60 * 24
|
|
end
|
|
|
|
---@nodiscard
|
|
---@param current table
|
|
---@param target table
|
|
---@return boolean
|
|
utils.timeIsAfterOrEqual = function(current, target)
|
|
if current.year ~= target.year then
|
|
return current.year > target.year
|
|
end
|
|
|
|
if current.month ~= target.month then
|
|
return current.month > target.month
|
|
end
|
|
|
|
if current.day ~= target.day then
|
|
return current.day > target.day
|
|
end
|
|
|
|
return current.hour >= target.hour
|
|
end
|
|
|
|
---@nodiscard
|
|
---@param current table
|
|
---@param target table
|
|
---@return boolean
|
|
utils.timeIsBefore = function(current, target)
|
|
if current.year ~= target.year then
|
|
return current.year < target.year
|
|
end
|
|
|
|
if current.month ~= target.month then
|
|
return current.month < target.month
|
|
end
|
|
|
|
if current.day ~= target.day then
|
|
return current.day < target.day
|
|
end
|
|
|
|
return current.hour < target.hour
|
|
end
|
|
|
|
-- Returns 24h Clock Time (example: 04:30 = 430, 21:30 = 2130)
|
|
---@nodiscard
|
|
---@return number?
|
|
utils.vanadielClockTime = function()
|
|
local clockTime = tonumber(VanadielHour() .. string.format('%02d', VanadielMinute()))
|
|
|
|
if not clockTime then
|
|
print('ERROR: clockTime was nil.')
|
|
end
|
|
|
|
return clockTime
|
|
end
|
|
|
|
-- Returns an integer number of minutes since midnight from a time string like "HH:MM"
|
|
---@nodiscard
|
|
---@param timeString string
|
|
---@return integer
|
|
utils.timeStringToMinutes = function(timeString)
|
|
local convertedTime = -1
|
|
local hours, minutes = timeString:match('^(%d%d?):(%d%d)$')
|
|
hours = tonumber(hours)
|
|
minutes = tonumber(minutes)
|
|
|
|
-- Validate time.
|
|
local validMinutes = minutes and minutes >= 0 and minutes < 60
|
|
local validHours = hours and hours >= 0 and (hours < 24 or (hours == 24 and minutes == 0))
|
|
|
|
if not validHours or not validMinutes then
|
|
print(fmt('[ERROR] Invalid time string: ({}). Expected HH:MM', timeString))
|
|
|
|
return convertedTime
|
|
end
|
|
|
|
convertedTime = hours * 60 + minutes
|
|
|
|
return utils.clamp(convertedTime, 0, 1440)
|
|
end
|