Esempio n. 1
0
        private bool TryInsert(DisposalHolderComponent holder)
        {
            if (!Contents.Insert(holder.Owner))
            {
                return(false);
            }

            holder.EnterTube(this);

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        ///     Ejects contents when they come from the same direction the entry is facing.
        /// </summary>
        public override Direction NextDirection(DisposalHolderComponent holder)
        {
            if (holder.PreviousTube != null && DirectionTo(holder.PreviousTube) == ConnectableDirections()[0])
            {
                var invalidDirections = new[] { ConnectableDirections()[0], Direction.Invalid };
                var directions        = Enum.GetValues(typeof(Direction))
                                        .Cast <Direction>().Except(invalidDirections).ToList();
                return(_random.Pick(directions));
            }

            return(ConnectableDirections()[0]);
        }
Esempio n. 3
0
        public override Direction NextDirection(DisposalHolderComponent holder)
        {
            var next       = Owner.Transform.LocalRotation.GetDir();
            var directions = ConnectableDirections().Skip(1).ToArray();

            if (holder.PreviousTube == null ||
                DirectionTo(holder.PreviousTube) == next)
            {
                return(_random.Pick(directions));
            }

            return(next);
        }
        public override Direction NextDirection(DisposalHolderComponent holder)
        {
            var directions   = ConnectableDirections();
            var previousTube = holder.PreviousTube;

            if (previousTube == null)
            {
                return(directions[0]);
            }

            var previousDirection = DirectionTo(previousTube);

            return(previousDirection == directions[0] ? directions[1] : directions[0]);
        }
        public override Direction NextDirection(DisposalHolderComponent holder)
        {
            var directions   = ConnectableDirections();
            var previousTube = holder.PreviousTube;
            var forward      = directions[0];

            if (previousTube == null)
            {
                return(forward);
            }

            var backward = directions[1];

            return(DirectionTo(previousTube) == forward ? backward : forward);
        }
Esempio n. 6
0
 public override Direction NextDirection(DisposalHolderComponent holder)
 {
     return(ConnectableDirections()[0]);
 }