From b2c6ff5050eea2742891e67468a6d4c2dc2ad2b2 Mon Sep 17 00:00:00 2001 From: yuki Date: Sun, 9 Nov 2025 20:04:02 -0300 Subject: [PATCH] add baton and hump.timer definitions --- def/Baton.d.lua | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ def/Timer.d.lua | 59 +++++++++++++++++++++++++++++++++++++++++ main.lua | 7 +++-- 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 def/Baton.d.lua create mode 100644 def/Timer.d.lua diff --git a/def/Baton.d.lua b/def/Baton.d.lua new file mode 100644 index 0000000..7f82763 --- /dev/null +++ b/def/Baton.d.lua @@ -0,0 +1,70 @@ +---@meta +---@module 'baton' + +---@class BatonConfig +---@field controls table +---@field pairs table +---@field joystick? JoystickConfig +---@field max_joysticks? integer +---@field joystick_deadzone? number + +---@class JoystickConfig +---@field controls table +---@field pairs table +---@field deadzone? number + +---@class Baton +local Baton = {} + +---Create a new input manager. +---@param config BatonConfig +---@return Baton +function Baton.new(config) end + +---Update the input manager. Call every frame. +---@param dt number +function Baton:update(dt) end + +---Get the current value of a control. +---Returns 1 for digital controls, -1/0/1 for analog axes. +---@param control_name string +---@return number +function Baton:get(control_name) end + +---Check if a control is currently down/pressed. +---@param control_name string +---@return boolean +function Baton:down(control_name) end + +---Check if a control was pressed this frame. +---@param control_name string +---@return boolean +function Baton:pressed(control_name) end + +---Check if a control was released this frame. +---@param control_name string +---@return boolean +function Baton:released(control_name) end + +---Get the value of a control pair (e.g., left/right). +---Returns -1 to 1 for opposing pairs. +---@param pair_name string +---@return number +function Baton:getPair(pair_name) end + +---Check if a pair is down. +---@param pair_name string +---@return boolean +function Baton:downPair(pair_name) end + +---Check if a pair was pressed this frame. +---@param pair_name string +---@return boolean +function Baton:pressedPair(pair_name) end + +---Check if a pair was released this frame. +---@param pair_name string +---@return boolean +function Baton:releasedPair(pair_name) end + +return Baton diff --git a/def/Timer.d.lua b/def/Timer.d.lua new file mode 100644 index 0000000..2b693a8 --- /dev/null +++ b/def/Timer.d.lua @@ -0,0 +1,59 @@ +---@meta +---@module 'hump.timer' + +---@class Timer +local Timer = {} + +---Create a new timer instance. +---@return Timer +function Timer.new() end + +---Update the timer. Must be called every frame. +---@param dt number +function Timer:update(dt) end + +---Schedule a function to run after a delay. +---@param delay number +---@param func function +---@param ... any Arguments to pass to func +---@return function cancel_function +function Timer:after(delay, func, ...) end + +---Schedule a function to run every interval. +---@param interval number +---@param func function +---@param ... any Arguments to pass to func +---@return function cancel_function +function Timer:every(interval, func, ...) end + +---Schedule a function to run during a duration, with optional easing. +---@param duration number +---@param subject table +---@param target table +---@param easing? function +---@param after? function +---@return function cancel_function +function Timer:tween(duration, subject, target, easing, after) end + +---Cancel a scheduled timer function. +---@param handle function The handle returned by after/every/tween +function Timer:cancel(handle) end + +---Clear all scheduled timers. +function Timer:clear() end + +---Run a function over time (tween-like, but returns handle). +---@param duration number +---@param func function +---@param ... any +---@return function cancel_function +function Timer:during(duration, func, ...) end + +---Run a function every frame for a duration. +---@param duration number +---@param func function +---@param ... any +---@return function cancel_function +function Timer:script(duration, func, ...) end + +return Timer diff --git a/main.lua b/main.lua index 7c043c8..bc4a35e 100644 --- a/main.lua +++ b/main.lua @@ -3,12 +3,15 @@ if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then require("lldebugger").start() end --- libraries +-- libraries -- +---@type Object Object = require 'lib/classic/classic' +---@type Baton Baton = require 'lib/baton/baton' +---@type Timer Timer = require 'lib/hump/timer' --- objects +-- objects -- Room = require 'obj/Room' function love.load()