Example #1
0
        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);
        }
Example #2
0
        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);
        }