def enter_with

bendvy-ecs-core@0.1.0.4 · machine_handler_phases.bend:66

import bendvy-ecs-core@0.1.0.4/machine_handler_phases.bend as MachineHandlerPhases
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/machine.bend as M
import bendvy-ecs-core@0.1.0.4/machine_handlers.bend as H
import bendvy-ecs-core@0.1.0.4/machine_handler_engine.bend as Engine

66def enter_with(~S:Data,~K:Data,~V:Data,~C:Type,~R:Type,~E:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~State:Type,~invoke:H.Entry<S,C,R,E,V,runner> -> State -> H.Phase -> V -> V -> H.Entry<S,C,R,E,V,runner> & Sys.Outcome<State,String,Unit>,~initial:H.Entry<S,C,R,E,V,runner> -> State -> V -> H.Entry<S,C,R,E,V,runner> & Sys.Outcome<State,String,Unit>,~take:State -> State & M.Slot<S,K,V>,~put:State -> M.Slot<S,K,V> -> State,~publish:State -> M.Transition<V> -> State,~same:V -> V -> Bool,~frame:State -> State,owners:Owners<S,K,V,C,R,E,runner>,world:State) -> Owners<S,K,V,C,R,E,runner> & Sys.Outcome<State,String,Unit>:
67  match owners:
68    case Owners{handlers,Idle{}}:(Owners{handlers,Idle{}},Sys.Succeeded{world,Unit{}})
69    case Owners{H.Owners{exit,transition,enter},InitialReady{+to}}:entered_with(~S,~K,~V,~C,~R,~E,~runner,~State,~invoke,~initial,~take,~put,~publish,~same,~frame,exit,transition,InitialReady{to},Engine.run_initial(~S,~State,~H.Entry<S,C,R,E,V,runner>,~H.Phase,~V,~invoke,~initial,~H.BendvyExit{},~H.Transition{},~H.Enter{},enter,world,to,None{}))
70    case Owners{H.Owners{exit,transition,enter},BendvyReady{+from,+to,+skipSame}}:entered_with(~S,~K,~V,~C,~R,~E,~runner,~State,~invoke,~initial,~take,~put,~publish,~same,~frame,exit,transition,BendvyReady{from,to,skipSame},Engine.run_phase(~S,~State,~H.Entry<S,C,R,E,V,runner>,~H.Phase,~V,~invoke,~initial,~H.BendvyExit{},~H.Transition{},~H.Enter{},enter,world,H.Enter{},from,to,None{}))

Uses (19)

Used by (2)