Esempio n. 1
0
        public void Enter(SmartFarmer i)
        {
            if (i.patrolRoute.Count > 0)
            {
                AStarSearch patrolStart = new AStarSearch(
                    AStarGame.GameMap.NavigationGraph,
                    AStarGame.GameMap.ClosestNodeIndex(i.Position),
                    AStarGame.GameMap.ClosestNodeIndex(i.patrolRoute[0]),
                    AStarHeuristics.Distance);

                List<int> patrolSearchNodes;
                patrolStart.PathToTarget(out patrolSearchNodes);

                List<Vector2> patrolSearchPos;
                patrolSearchPos = AStarGame.GameMap.getWorldfromNodes(patrolSearchNodes);

                i.FollowPath(patrolSearchPos, false);
            }
        }
Esempio n. 2
0
        public void Enter(SmartFarmer i)
        {
            bushes = BushRadar.getBushes();

            if (bushes.Count == 0)
                i.doneSearching = true;
            else
            {
                bushSearch = new AStarSearch(
                    AStarGame.GameMap.NavigationGraph,
                    AStarGame.GameMap.ClosestNodeIndex(i.Position + (15.0f * i.Heading)),
                    AStarGame.GameMap.ClosestNodeIndex(bushes[0]),
                    AStarHeuristics.Distance);

                bushSearch.PathToTarget(out bushSearchNodes);
                bushSearchPos = AStarGame.GameMap.getWorldfromNodes(bushSearchNodes);

                i.FollowPath(bushSearchPos, false);
            }
        }
Esempio n. 3
0
        public void Execute(SmartFarmer i)
        {
            if (!i.doneSearching)
            {
                bool reachedBush = AStarGame.ApproximatelyEqual(i.Position, bushes[nextBush]);
                if (reachedBush)
                {
                    nextBush++;
                    i.FollowingPath = false;

                    if (nextBush >= bushes.Count)
                    {
                        i.doneSearching = true;
                        return;
                    }
                }

                if (!i.FollowingPath)
                {
                    if (!AStarGame.GameMap.WallsBetween(i.Position, bushes[nextBush]))
                    {
                        Vector2 force = i.Seek(bushes[nextBush]);
                        i.Velocity += force;
                    }
                    else
                    {
                        bushSearch = new AStarSearch(
                            AStarGame.GameMap.NavigationGraph,
                            AStarGame.GameMap.ClosestNodeIndex(i.Position),
                            AStarGame.GameMap.ClosestNodeIndex(bushes[nextBush]),
                            AStarHeuristics.Distance);

                        bushSearch.PathToTarget(out bushSearchNodes);
                        bushSearchPos = AStarGame.GameMap.getWorldfromNodes(bushSearchNodes);

                        i.FollowPath(bushSearchPos, false);
                    }
                }
            }
        }
Esempio n. 4
0
 public void Execute(SmartFarmer i)
 {
     if (i.patrolRoute.Count > 0)
         if (!i.FollowingPath)
             i.FollowPath(i.patrolRoute, true);
 }