zeal/scripts/engine.lua
2026-04-08 23:27:01 +02:00

115 lines
3.8 KiB
Lua

---@meta engine
---
--- LSP type stubs for the Zig engine API.
--- This file is NEVER executed — it only exists so lua-language-server
--- can provide autocomplete, type checking, and inline docs.
---
--- Usage in your scripts:
--- ---@param self RectNode (or NodeBase for base nodes)
-- ─── Color type ──────────────────────────────────────────────────────────────
---@class Color
---@field r number Red 0-255
---@field g number Green 0-255
---@field b number Blue 0-255
---@field a number Alpha 0-255
-- ─── Node self types ─────────────────────────────────────────────────────────
---@class NodeBase
---@field x number World X position (read/write)
---@field y number World Y position (read/write)
--- Extends NodeBase with rectangle geometry.
--- The engine draws the rect each frame; modify fields to change it.
---@class RectNode : NodeBase
---@field width number Rectangle width
---@field height number Rectangle height
---@field color Color Fill color (r/g/b/a subtable)
-- ─── Drawing ─────────────────────────────────────────────────────────────────
---@param x number
---@param y number
---@param w number
---@param h number
---@param r number Red 0-255
---@param g number Green 0-255
---@param b number Blue 0-255
---@param a? number Alpha 0-255 (default 255)
function draw_rect(x, y, w, h, r, g, b, a) end
---@param x number
---@param y number
---@param radius number
---@param r number
---@param g number
---@param b number
---@param a? number
function draw_circle(x, y, radius, r, g, b, a) end
---@param text string
---@param x number
---@param y number
---@param size number Font size in pixels
---@param r number
---@param g number
---@param b number
---@param a? number
function draw_text(text, x, y, size, r, g, b, a) end
---@param x1 number
---@param y1 number
---@param x2 number
---@param y2 number
---@param r number
---@param g number
---@param b number
---@param a? number
function draw_line(x1, y1, x2, y2, r, g, b, a) end
-- ─── Input ───────────────────────────────────────────────────────────────────
--- Returns true while key is held.
---@param key integer Use Key.X constants
---@return boolean
function key_down(key) end
--- Returns true only on the first frame the key is pressed.
---@param key integer
---@return boolean
function key_pressed(key) end
--- Returns true while mouse button is held. 0=left 1=right 2=middle
---@param button integer
---@return boolean
function mouse_down(button) end
---@return number
function mouse_x() end
---@return number
function mouse_y() end
-- ─── Key constants ───────────────────────────────────────────────────────────
---@class KeyTable
---@field LEFT integer
---@field RIGHT integer
---@field UP integer
---@field DOWN integer
---@field SPACE integer
---@field W integer
---@field A integer
---@field S integer
---@field D integer
---@type KeyTable
Key = {}
-- ─── Utility ─────────────────────────────────────────────────────────────────
---@param message string
function log(message) end