The Lua scripting environment contains several callbacks which the game will call at certain points. You can define these callback functions to run code.
init(is_sandbox)
A callback that runs once on the initial load of the LuaScript.
First argument is_sandbox
can be used to check whether the level is played from the sandbox or not (true
/false
).
Example:
function init(is_sandbox)
game:message("is_sandbox: " .. (is_sandbox and "yes" or "no"))
end
step(count)
A callback that runs on every game step.
First argument count
is an incrementing counter that increments by one for every step.
function step(count)
game:show_numfeed(count)
end
on_event(id)
A callback that gets called whenever an event occurs.
First argument id
is the event ID.
Example:
function on_event(id)
if id == EVENT_ENEMY_ID then
game:message("Enemy robot just died!")
end
end
on_input(type, data)
A callback that gets called when a key is pressed.
The first argument is the input type ID. The following IDs exist, which have respective constants defined:
ID | Constant |
---|---|
4 | INPUT_KEY_DOWN |
8 | INPUT_KEY_UP |
16 | INPUT_POINTER_DOWN |
32 | INPUT_POINTER_UP |
The second argument is a table containing some data which depends on the input ID.
For keys:
One key called keycode
which contains a keycode of the pressed key. While TMS' keycodes include more than those below, these are the most common keys that also have helper constants provided:
ID | Constant |
---|---|
4 | KEY_A |
5 | KEY_B |
6 | KEY_C |
7 | KEY_D |
8 | KEY_E |
9 | KEY_F |
10 | KEY_G |
11 | KEY_H |
12 | KEY_I |
13 | KEY_J |
14 | KEY_K |
15 | KEY_L |
16 | KEY_M |
17 | KEY_N |
18 | KEY_O |
19 | KEY_P |
20 | KEY_Q |
21 | KEY_R |
22 | KEY_S |
23 | KEY_T |
24 | KEY_U |
25 | KEY_V |
26 | KEY_W |
27 | KEY_X |
28 | KEY_Y |
29 | KEY_Z |
30 | KEY_1 |
31 | KEY_2 |
32 | KEY_3 |
33 | KEY_4 |
34 | KEY_5 |
35 | KEY_6 |
36 | KEY_7 |
37 | KEY_8 |
38 | KEY_9 |
39 | KEY_0 |
40 | KEY_ENTER |
41 | KEY_ESC |
42 | KEY_BACKSPACE |
43 | KEY_TAB |
44 | KEY_SPACE |
79 | KEY_RIGHT |
80 | KEY_LEFT |
81 | KEY_DOWN |
82 | KEY_UP |
For pointer input (i.e. mouse click, finger press):
A table with three keys is provided:
pid
: The ID of the pointer.x
: X position where the input happened in the native windows resolution and with origin in the bottom left.y
: Y position where the input happened in the native windows resolution and with origin in the bottom left.Example:
function on_input(id, data)
if id == INPUT_KEY_DOWN then
if data.keycode == KEY_F then
game:message("You just paid your respects.")
end
elseif id == INPUT_POINTER_DOWN then
game:message("You pressed the screen at ("..data.x..","..data.y..")!")
end
end
on_response(response, prompt_id)
A callback that gets called when a prompt opened with game:prompt()
is closed with a button being pressed.
Example:
function on_response(response, prompt_id)
game:message('The response I got from prompt ' .. prompt_id .. ' was ' .. response)
end
on_halt()
Called when the script is halted due to reaching the execution time limit.