def evacuate_phase
import bendvy-ecs-core@0.1.0.3/column.bend as Columnimport 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.