added __on_start and defined better meta-events

This commit is contained in:
gnembon committed 2021-02-08 18:08:38 -04:00
1 parent 0a45778e4a
commit 4c09d6b736
8 files changed
+86 -22

No files matched your search

+21
View File
@@ -27,11 +27,32 @@ Here is a list of events that are handled by default in scarpet. This list inclu
to autoload them, but you can always add any function to any event (using `/script event` command)
if it accepts required number of parameters.
## Meta-events
These events are not controlled / triggered by the game per se, but are important for the flow of the apps, however for all
intent and purpose can be treated as regular events. Unlike regular events, they cannot be hooked up to with 'handle_event',
but the apps themselves need to have them defined as distinct function definitions, same they cannot be signalled.
### `__on_start()`
Called once per app in its logical execution run. For `'global'` scope apps its executed right after the app is loaded. For
`'player'` scope apps, it is triggered once per player before the app can be used by that player. Since each player app acts
independently from other player apps, this is probably the best location to include some player specific initializations. Static
code (i.e. code typed directly in the app code that executes immediately, outside of function definitions), will only execute once
per app, regardless of scope, `'__on_start()'` allows to reliably call player specific initializations.
### `__on_close()`
Called once per app when the app is closing or reloading, right before the app is removed.
For player scoped apps, its called once per player. Scarpet app engine will attempt to call `'__on_close()'` even if
the system is closing down exceptionally.
## Built-in global events
Global events will be handled once per app that is with `'global'` scope. With `player` scoped apps, each player instance
is responsible independently from handling their events, so a global event may be executed multiple times for each player.
### `__on_server_starts()`
Event triggers after world is loaded and after all startup apps have started. It won't be triggered with `/reload`.