String actions
Table of contents
About
The StringActions autoload allow doing all kinds of things with simple commands.
They have automatic type conversion and kwargs.
Type Conversion
The type conversion works off looking at the way you wrote you’re function, so please be explicit.
# not ideal. StringActions will have to assume.
func my_func(x, y):
pass
# better. default arguments can be used to assume.
func my_func(x := "", y := false):
pass
# ideal. no guessing on what type is needed.
func my_func(x: String = "", y: bool = false):
pass
kwargs
Inspired by Python because I really like kwargs (Key word arguments).
They allow you to skip over default arguments and are more obvious/explicit about what is happening:
The last argument needs to be named kwargs to work.
# here is our function
func doit(a: String, b := false, c := true, kwargs := {}):
pass
# we will add it as a command
StringActions.add_command(doit)
# from Godot
StringActions.do_command("doit x tint:blue")
StringActions.do_command_w_args("doit", ["x", {"tint": "blue"}])
# from Dialogue
>doit x tint:blue
All those calls will evaluate to
doit("x", false, true, {"tint": "blue"})
Symbols
| Context | Symbol | Desc |
|---|---|---|
| State | $ | The main State class |
| Persistent | ^ | The main State class |
| Nodes | @ | Nodes in the SceneTree |
| Evals | ~ | (Used for state machines) |
Actions
Actions are designed to be quick to type.
@camera_zoom 2
@Music.play my_song
@damage enemy1,enemy2 3 poison:true
@reset_score
Evaluate
Evaluations are more robust, but lengthier to type.
$score += score_calculator(true, 3)
$damage(["enemy1", "enemy2"], 3, {"poison": true})
@ Node actions
See here.
Calling from Godot
StringActions.do("@enemies reset 1,2,3")
StringActions.do_node_action("@enemies reset 1,2,3")
StringActions.do_node_action_w_args("@enemies", ["reset", [1, 2, 3]])
$ State actions
See here.
StringActions.do("$enemies reset 1,2,3")
StringActions.do_state_action("$enemies reset 1,2,3")
StringActions.do_state_action_w_args("$enemies", ["reset", [1, 2, 3]])
~ State expressions
Access properties and functions in the State scripts.
Calling from Godot
StringActions.do("~ score += 20")
StringActions.do_expression("score += 20")
Calling from dialogue
~ score += 20
~ score += pow(my_state_function(false), 2) * another_function()
~ reset_my_stats()
~ trigger(["orcs", "elves"], "trigger_x", 321)