Esempio n. 1
0
        private void CreatePath(IMapNodeViewModel targetNode)
        {
            var actor      = PlayerState.ActiveActor.Actor;
            var startNode  = actor.Node;
            var finishNode = targetNode.Node;
            var map        = SectorManager.CurrentSector.Map;

            Path.Clear();

            if (!map.IsPositionAvailableFor(finishNode, actor))
            {
                return;
            }

            var context = new PathFindingContext(actor);

            var astar       = new AStar(map, context, startNode, finishNode);
            var resultState = astar.Run();

            if (resultState != State.GoalFound)
            {
                return;
            }

            RememberFoundPath(astar);
        }
Esempio n. 2
0
        private void CreatePath(IMapNodeViewModel targetNode)
        {
            var actor = PlayerState.ActiveActor?.Actor;

            if (actor is null)
            {
                throw new InvalidOperationException();
            }

            var startNode  = actor.Node;
            var finishNode = targetNode.Node;

            if (startNode == finishNode)
            {
                Path.Clear();
                return;
            }

            var sector = _player.SectorNode.Sector;

            if (sector is null)
            {
                throw new InvalidOperationException();
            }

            var map = sector.Map;

            Path.Clear();

            if (!map.IsPositionAvailableFor(finishNode, actor))
            {
                return;
            }

            var context = new ActorPathFindingContext(actor, map, finishNode);

            var astar       = new AStar(context, startNode, finishNode);
            var resultState = astar.Run();

            if (resultState != State.GoalFound)
            {
                return;
            }

            RememberFoundPath(astar);
        }