# 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