def execute

bendvy-ecs-core@0.1.0.4 · ordinary_condition_composition.bend:206

import bendvy-ecs-core@0.1.0.4/ordinary_condition_composition.bend as OrdinaryConditionComposition
import Base
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/system.bend as Sys
import bendvy-ecs-core@0.1.0.4/schedule.bend as Sch

206def execute(~S:Data,~C:Type,~R:Type,~E:Data,~H:Type,~B:Type,~select:B -> W.World<S,C,R,E> -> U32 -> Evaluation<W.World<S,C,R,E>,B>,~BodyError:Data,~dispatch:H -> W.World<S,C,R,E> -> U32 -> H & Sys.Outcome<W.World<S,C,R,E>,BodyError,Unit>,steps:List<&2,Sch.Step>,owners:H & Bindings<W.World<S,C,R,E>,B,select>,world:W.World<S,C,R,E>,+namespace:U32,+name:String,+all:List<&2,Sch.Step>,observations:List<&2,Sch.Observation>) -> Sch.RunResult<S,C,R,E,H & Bindings<W.World<S,C,R,E>,B,select>,Error<BodyError>>:
207  match steps:
208    case []:Sch.Finished{Sch.Schedule{namespace,name,all,owners},world,observations}
209    case Sch.Phase{phase} <> rest:execute(~S,~C,~R,~E,~H,~B,~select,~BodyError,~dispatch,rest,owners,world,namespace,name,all,List.append(&2,Sch.Observation,observations,[Sch.Entered{phase}]))
210    case Sch.Barrier{} <> rest:execute(~S,~C,~R,~E,~H,~B,~select,~BodyError,~dispatch,rest,owners,W.barrier(~S,~C,~R,~E,world),namespace,name,all,List.append(&2,Sch.Observation,observations,[Sch.Applied{}]))
211    case Sch.System{id,_} <> rest:guard(~S,~C,~R,~E,~H,~B,~select,~BodyError,~dispatch,h => w => obs => execute(~S,~C,~R,~E,~H,~B,~select,~BodyError,~dispatch,rest,h,w,namespace,name,all,obs),owners,world,namespace,name,all,observations,id)

Uses (17)

Used by (1)