From 1f1deea662da4328bf588c0642c8a90c7b1f2144 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 24 Sep 2013 21:06:41 -0400 Subject: Rough draft of manual. --- doc/scripting/actions.texi | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 doc/scripting/actions.texi (limited to 'doc/scripting/actions.texi') diff --git a/doc/scripting/actions.texi b/doc/scripting/actions.texi new file mode 100644 index 0000000..96b0c3c --- /dev/null +++ b/doc/scripting/actions.texi @@ -0,0 +1,76 @@ +@node Actions +@section Actions + +Actions are composable procedures that perform an operation over a +period of game time. Action objects have two properties: an arbitrary +procedure and a duration in game ticks. Action procedures accept one +argument: a time delta in the range [0, 1]. Use actions in combination +with coroutines for things that are a function of time, such as moving +a sprite across the screen. + +@anchor{2d actions make-action}@defun make-action proc duration +Create a new action object that takes DURATION updates to complete. PROC +is a procedure that takes a value in the range [0, 1] as its only +argument. An error is thrown if DURATION is 0. + +@end defun + +@anchor{2d actions action?}@defspec action? +@end defspec + +@anchor{2d actions null-action}@defvar null-action +[unbound!] +@end defvar + +@anchor{2d actions null-action?}@defvar null-action? +[unbound!] +@end defvar + +@anchor{2d actions action-duration}@defspec action-duration +@end defspec + +@anchor{2d actions action-proc}@defspec action-proc +@end defspec + +@anchor{2d actions perform-action}@defun perform-action action +Execute ACTION. `perform-action` must be called from within a +coroutine, as it yields back to the agenda after each step. + +@end defun + +@anchor{2d actions schedule-action}@defun schedule-action action +Schedules a coroutine in the current agenda that will perform ACTION on +the next update. + +@end defun + +@anchor{2d actions action-cons}@defun action-cons a1 a2 +Return an action that performs A1 first, followed by A2. + +@end defun + +@anchor{2d actions action-list}@defun action-list . actions +Return an action that performs every action in the list ACTIONS. + +@end defun + +@anchor{2d actions action-parallel}@defun action-parallel . actions +Perform every action in the list ACTIONS in parallel. + +@end defun + +@anchor{2d actions action-repeat}@defun action-repeat n action +Return an action that will perform ACTION N times. + +@end defun + +@anchor{2d actions idle}@defun idle duration +Return an action that does nothing. + +@end defun + +@anchor{2d actions lerp}@defun lerp proc start end duration +Linearly interpolate a number from START to END that takes DURATION +updates. Apply PROC to the linearly interpolated at each step. + +@end defun -- cgit v1.2.3