coroutine.lua

This script contains convenience wrapper around creation and resuming of coroutines and yielding proper sleeping times to widelands. These functions are more specially tailored to widelands and take a lot of the awkwardness out of using coroutines directly.

Note

Do not use these functions for multiplayer scripting (scenarios and winconditions) in combination with any functions in ui.lua

To make these functions available include this file at the beginning of a script via:

include "scripting/coroutine.lua"
run(func[, ...])

Start to run a function as a coroutine and hand it over to widelands for periodical resuming. All arguments passed to this function are given to the coroutine when it is first run.

Parameters:

func – Lua function to launch as a coroutine

Returns:

nil

sleep(time)

This must be called inside a coroutine. This will put the coroutine to sleep. Widelands will wake it after the given amount of time.

Parameters:

time (integer) – time to sleep in ms

Returns:

nil

wake_me(at)

This must be called inside a coroutine. This will put the coroutine to sleep. Widelands will wake it at the absolute time given. If this time is already in the past (that is at < wl.Game.time()), the coroutine will be woken at wl.Game.time() instead.

Parameters:

at (integer) – when to wake this coroutine

Returns:

nil