コード例 #1
0
        private void SetRoamState(Floor parent)
        {
            var myPosition = parent.Entities.Reverse[this];

            CurrentState = State.Roaming;
            var visible = VisiblePoints.ToArray();

            if (visible.Length != 0)
            {
                var roamPoint = visible[RandomHelper.Random.Next(0, visible.Length)];
                var path      = PathFinder.AStar(parent, myPosition, roamPoint);

                if (path != null)
                {
                    Path = path;
                    return;
                }
            }

            RandomMoveDirection.Shuffle();
            foreach (var direction in RandomMoveDirection)
            {
                if (parent.IsPointPassable(NewPosition(direction, myPosition)))
                {
                    MoveTo(parent, direction);
                    return;
                }
            }
            SetWaitState();
        }
コード例 #2
0
ファイル: Commands.cs プロジェクト: tj-miller/TextAdventure
 public static ActorInstanceRandomMoveCommand ActorInstanceRandomMove(ActorInstance actorInstance, RandomMoveDirection directions = RandomMoveDirection.AnyUnoccupied)
 {
     return new ActorInstanceRandomMoveCommand(actorInstance, directions);
 }
 public ActorInstanceRandomMoveCommand(ActorInstance actorInstance, RandomMoveDirection direction = RandomMoveDirection.AnyUnoccupied)
     : base(actorInstance)
 {
     _direction = direction;
 }
        private static string GetDirectionText(RandomMoveDirection direction)
        {
            string directionText;

            switch (direction)
            {
                case RandomMoveDirection.AnyUnoccupied:
                    directionText = "Any unoccupied";
                    break;
                default:
                    directionText = direction.ToString();
                    break;
            }
            return directionText;
        }