protected override ReserveStatus Reserve(Actor self) { var status = base.Reserve(self); if (status != ReserveStatus.Ready) { return(status); } if (passenger.Reserve(self, cargo)) { return(ReserveStatus.Ready); } return(ReserveStatus.Pending); }
protected override bool TryStartEnter(Actor self, Actor targetActor) { enterActor = targetActor; enterCargo = targetActor.TraitOrDefault <SharedCargo>(); // Make sure we can still enter the transport // (but not before, because this may stop the actor in the middle of nowhere) if (enterCargo == null || !passenger.Reserve(self, enterCargo)) { Cancel(self, true); return(false); } return(true); }