def evacuate_phase

bendvy-ecs-core@0.1.0.3 · column.bend:205

import bendvy-ecs-core@0.1.0.3/column.bend as Column
import Base
import owner_handoff.bend as H

205def evacuate_phase(~S:Data,~C:Type,gas:Nat,phase:EvacuationPhase<S,C>) -> Array<Maybe<&1,C>> & H.PrototypeHandoffRows<S,C>:
206  match gas phase:
207    case _ Fetch{0n,_,values,rows}: (values,rows)
208    case 0n Fetch{_,_,values,rows}: (values,rows)
209    case 0n Taken{_,_,rows,(values,None{})}: (values,rows)
210    case 0n Taken{_,id,rows,(values,Some{owner})}: (values,H.HandoffCon{id,owner,rows})
211    case 1n+more Fetch{1n+rest,+id,values,rows}: evacuate_phase(~S,~C,more,Taken{rest,id,rows,Array.swap(Maybe<&1,C>,values,U32.sub(id,1),None{})})
212    case 1n+more Taken{fuel,+id,rows,(values,None{})}: evacuate_phase(~S,~C,more,Fetch{fuel,U32.sub(id,1),values,rows})
213    case 1n+more Taken{fuel,+id,rows,(values,Some{owner})}: evacuate_phase(~S,~C,more,Fetch{fuel,U32.sub(id,1),values,H.HandoffCon{id,owner,rows}})

Uses (9)

Used by (0)

No other definition uses this definition.