def queue

bendvy-ecs-core@0.1.0.4 · restore_lifecycle.bend:21

import bendvy-ecs-core@0.1.0.4/restore_lifecycle.bend as RestoreLifecycle
import Base
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/restore_data.bend as R
import bendvy-ecs-core@0.1.0.4/transaction.bend as T
import bendvy-ecs-core@0.1.0.4/commands.bend as Cmd

21def queue(~S:Data,~C:Type,~Resources:Type,~E:Data,~clear:C -> W.Handle<S> -> C & List<&2,R.Change<S>>,~emit:R.Change<S> -> E,handles:List<&2,W.Handle<S>>,tx:T.Tx<W.World<S,C,Resources,E>,E>) -> T.Tx<W.World<S,C,Resources,E>,E>:
22  match handles:
23    case []:tx
24    case handle <> rest:queued(~S,~C,~Resources,~E,next => queue(~S,~C,~Resources,~E,~clear,~emit,rest,next),Cmd.tx_despawn_observed(~S,~C,~Resources,~E,~clear_store(~S,~C,~E,~clear,~emit),~despawned(~S,~E,~emit),tx,handle))

Uses (10)

Used by (1)