Add event handler examples.
This commit is contained in:
56
examples/event_handler_main/script.rhai
Normal file
56
examples/event_handler_main/script.rhai
Normal file
@@ -0,0 +1,56 @@
|
||||
// Implementation of the Event Handler With State Pattern - Main Style
|
||||
|
||||
/// Initialize user-provided state (shadows system-provided state, if any).
|
||||
fn init() {
|
||||
// Add 'bool_state' and 'obj_state' as new state variables
|
||||
let bool_state = false;
|
||||
let value = 0;
|
||||
|
||||
// Constants can also be added!
|
||||
const EXTRA_CONSTANT = "hello, world!";
|
||||
}
|
||||
|
||||
/// Without 'OOP' support, the can only be a function.
|
||||
fn log(value, data) {
|
||||
print(`State = ${value}, data = ${data}`);
|
||||
}
|
||||
|
||||
/// 'start' event handler
|
||||
fn start(data) {
|
||||
if bool_state {
|
||||
throw "Already started!";
|
||||
}
|
||||
if value <= 0 {
|
||||
throw "Conditions not yet ready to start!";
|
||||
}
|
||||
bool_state = true;
|
||||
|
||||
// Constants 'MY_CONSTANT' and 'EXTRA_CONSTANT'
|
||||
// in custom scope are also visible!
|
||||
print(`MY_CONSTANT = ${MY_CONSTANT}`);
|
||||
print(`EXTRA_CONSTANT = ${EXTRA_CONSTANT}`);
|
||||
|
||||
value += parse_int(data);
|
||||
}
|
||||
|
||||
/// 'end' event handler
|
||||
fn end(data) {
|
||||
if !bool_state {
|
||||
throw "Not yet started!";
|
||||
}
|
||||
if value > 0 {
|
||||
throw "Conditions not yet ready to end!";
|
||||
}
|
||||
bool_state = false;
|
||||
value = parse_int(data);
|
||||
}
|
||||
|
||||
/// 'update' event handler
|
||||
fn update(data) {
|
||||
let data = parse_int(data);
|
||||
|
||||
value += data;
|
||||
|
||||
// Without OOP support, can only call function
|
||||
log(value, data);
|
||||
}
|
Reference in New Issue
Block a user