def stamped_column

bendvy-ecs-core@0.1.0.4 · component.bend:296

import bendvy-ecs-core@0.1.0.4/component.bend as Component
import Base
import bendvy-ecs-core@0.1.0.4/change_tick.bend as Tick
import lifecycle.bend as L
import column.bend as Col

296def stamped_column(~S: Data,~Store: Type,~R: Type,~E: Data,~Rest: Type,~C: Type,~V: Data,~Token: Data,~take: Store -> Rest & Col.Column<S,C>,~put: Rest -> Col.Column<S,C> -> Store,~project: C -> C & V,rest:Rest,+id:U32,incoming:C,+tick:Tick.Tick,allowed:Bool,observed:Col.Column<S,C> & L.Stamp) -> Store & (Swap<C> & L.Stamp):
297  match allowed observed:
298    case False{}, (column,stamp): (put(rest,column),(SwapRejected{Some{incoming}},stamp))
299    case True{}, (column,stamp): stamped_store_join(~S,~Store,~R,~E,~Rest,~C,~V,~Token,~take,~put,~project,stamp,swap_join(~S,~Store,~R,~E,~Rest,~C,~V,~Token,~take,~put,~project,rest,id,True{},tick,Col.swap(~S,~C,Col.ensure(~S,~C,column,id),id,Some{incoming})))

Uses (13)

Used by (1)