コード例 #1
0
ファイル: KeyboardHandler.cs プロジェクト: jeansberg/Rogue
        private void MoveMissile(Missile missile, Actor shooter, Point point, bool keepMoving)
        {
            var direction = DirectionExtensions.GetDirection(missile.Location, point);

            missile.Orientation = direction switch {
                Direction.Left => Orientation.Horizontal,
                Direction.Right => Orientation.Horizontal,
                _ => Orientation.Vertical
            };
            missile.Location = point;

            var actor = actors.SingleOrDefault(a => a.Location == point && a != shooter);

            if (actor != null)
            {
                missile.Moving = false;

                var action = actor.GetAction(mapConsole.map, Direction.None);
                var result = action.Perform(player);
                logConsole.Log(result.Message);
            }

            missile.Moving = missile.Moving && keepMoving;

            if (!missile.Moving)
            {
                ActivateActors();
            }
        }
コード例 #2
0
ファイル: KeyboardHandler.cs プロジェクト: jeansberg/Rogue
        private void MoveTo(Actor actor, Point target)
        {
            Point nextStep;

            bool isNextToTarget = actor.Location.IsAdjacent(target);

            if (!isNextToTarget)
            {
                nextStep = mapConsole.GetNextStep(actor, actors, target);
            }
            else
            {
                nextStep = target;
            }

            var direction = DirectionExtensions.GetDirection(actor.Location, nextStep);

            MoveOrAct(actor, direction);
        }