Skip to content

task_decorator

Source: base/tealdef/mission/tasks/task_decorator.d.tl

Notes

Wraps a task script with a second script (decorator) that adds behaviour.

TaskDecorator

record global base/tealdef/mission/tasks/task_decorator.d.tl:3

global record TaskDecorator

Load: local task_decorator = ug_require "::/mission/tasks/task_decorator.tl"

Notes

Combines a task script with a decorator script into one task script.

Details

The decorated task is named <taskScriptName>_decorated. Its state is a DecoratorState and its params a DecoratorParam. The wrapped task's callbacks get only their own part (taskParam, taskState); the decorator's callbacks get the whole context. The task is complete when the decorator's isComplete (if any) and the task's isComplete both return true. The decorator's getInfo is ignored.

Example

-- urbangames_campaign_mission_01
taskScript = task_decorator.decorate(collect_entity, guide_collect_entity) as MissionInterface.TaskScript<any, any>,
taskParams : DecoratorParam<MissionTaskCollectEntity.Params, MissionTaskGuideCollectEntity.Param> = {
    taskParam = { soundEffectFile = params.crocodileSound, getEntities = getEntities },
    decoratorParam = guideParam,
},

Functions

decorate<S, P, GS, GP>(task : MissionInterface.TaskScript<S, P>, decorator : MissionInterface.TaskScript<DecoratorState<S, GS>, DecoratorParam<P, GP>>) : MissionInterface.TaskScript<DecoratorState<S, GS>, DecoratorParam<P, GP>> base/tealdef/mission/tasks/task_decorator.d.tl:4

Call as task_decorator.decorate

Notes

Builds a task script that runs task and decorator side by side.

Parameter Type Description
task MissionInterface.TaskScript<S, P> Task script to wrap.
decorator MissionInterface.TaskScript<DecoratorState<S, GS>, DecoratorParam<P, GP>> Decorator script working on the combined state and params.

Returns MissionInterface.TaskScript<DecoratorState<S, GS>, DecoratorParam<P, GP>>: Combined task script.

Used in the base game: 5 times in 3 files

mods/release/urbangames_campaign_mission_06/content/mission/mission/mission_story.tl:553

taskScript = task_decorator.decorate(subsidies, guide_subsidies) as MissionInterface.TaskScript<any, any>,
mods/release/urbangames_campaign_mission_01/content/mission/mission/mission_story.tl:464
taskScript = task_decorator.decorate(collect_entity, guide_collect_entity) as MissionInterface.TaskScript<any, any>,
mods/release/urbangames_campaign_mission_04/content/mission/mission/mission_story.tl:921
taskScript = task_decorator.decorate(collect_entity, guide_collect_entity) as MissionInterface.TaskScript<any, any>,

DecoratorState

record global base/tealdef/mission/tasks/task_decorator.d.tl:7

global record DecoratorState<SpecificState, DecoratorSpecificState>

Notes

State of a decorated task.

Fields

Name Type Description
taskState SpecificState State of the wrapped task.
decoratorState DecoratorSpecificState State of the decorator.

DecoratorParam

record global base/tealdef/mission/tasks/task_decorator.d.tl:12

global record DecoratorParam<TaskSpecificParam, DecoratorSpecificParam>

Notes

Params of a decorated task.

Fields

Name Type Description
taskParam TaskSpecificParam Params of the wrapped task.
decoratorParam DecoratorSpecificParam Params of the decorator.