public override DoublePoint GetGoal()
        {
            bool player1 = Game.Player1.Minions.ContainsValue(_owner);
            //List<WaypointNode> target_nodes = new List<WaypointNode>();
            /*      These are guesses for base nodes: ...?
                    <Waypoint X="231" Y="1586" />
                    <Waypoint X="326" Y="1760" />
                    <Waypoint X="495" Y="1777" />

                    <Waypoint X="160" Y="47" />
                    <Waypoint X="499" Y="44" />
                    <Waypoint X="810" Y="37" />
                 * */
            if (target == null || WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y) == target)
            {
                if (player1)
                {
                    Random random = new Random();
                    int randX = random.Next(0, 1000);
                    int randY = random.Next(0, 900);

                    target = WaypointGraph.GetClosestWaypoint(randX, randY);
                }
                else
                {
                    Random random = new Random();
                    int randX = random.Next(0, 1000);
                    int randY = random.Next(900, 1800);

                    target = WaypointGraph.GetClosestWaypoint(randX, randY);
                }
            }
            WaypointNode myNode = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
            List<WaypointNode> path = new List<WaypointNode>();
            /*
             * int length = Int32.MaxValue;
            foreach(WaypointNode target in target_nodes){
                List<WaypointNode> p = WaypointGraph.pathfindDijkstra(myNode, target);
                if (p.Count < length){
                    path = p;
                    length = p.Count;
                }
            }
             * */
            path = WaypointGraph.pathfindDijkstra(myNode, target);
            //path.Add(new WaypointNode((int)closest.Pos.X, (int)closest.Pos.Y, new List<WaypointNode>()));
            FollowPath fp = new FollowPath(_owner, path);

            return fp.GetGoal(); ;
        }
        public override DoublePoint GetGoal()
        {
            bool player1 = Game.Player1.Minions.ContainsValue(_owner);
            //List<WaypointNode> target_nodes = new List<WaypointNode>();
            WaypointNode target;
            /*      These are guesses for base nodes: ...?
                    <Waypoint X="231" Y="1586" />
                    <Waypoint X="326" Y="1760" />
                    <Waypoint X="495" Y="1777" />

                    <Waypoint X="160" Y="47" />
                    <Waypoint X="499" Y="44" />
                    <Waypoint X="810" Y="37" />
                 * */
            if (player1)
            {
                //target_nodes.Add(WaypointGraph.getNode(231,1586));
                //target_nodes.Add(WaypointGraph.getNode(326, 1760));
                //target_nodes.Add(WaypointGraph.getNode(495, 1777));
                target = WaypointGraph.getNode(495, 1777);
            }
            else
            {
                //target_nodes.Add(WaypointGraph.getNode(160, 47));
                //target_nodes.Add(WaypointGraph.getNode(499, 44));
                //target_nodes.Add(WaypointGraph.getNode(810, 37));
                target = WaypointGraph.getNode(499, 44);
            }
            WaypointNode myNode = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
            List<WaypointNode> path = new List<WaypointNode>();
            /*
             * int length = Int32.MaxValue;
            foreach(WaypointNode target in target_nodes){
                List<WaypointNode> p = WaypointGraph.pathfindDijkstra(myNode, target);
                if (p.Count < length){
                    path = p;
                    length = p.Count;
                }
            }
             * */
            path = WaypointGraph.pathfindDijkstra(myNode, target);
            //path.Add(new WaypointNode((int)closest.Pos.X, (int)closest.Pos.Y, new List<WaypointNode>()));
            FollowPath fp = new FollowPath(_owner, path);

            return fp.GetGoal(); ;
        }
        public override DoublePoint GetGoal()
        {
            bool player1 = Game.Player1.Minions.ContainsValue(_owner);
            Minion closest;
            if (player1)
            {
                closest = Game.Player2.Minions.Values.OrderBy(e => WaypointGraph.getDistance((int)_owner.Pos.X, (int)e.Pos.X, (int)_owner.Pos.Y, (int)e.Pos.Y)).First();
            }
            else
            {
                closest = Game.Player1.Minions.Values.OrderBy(e => WaypointGraph.getDistance((int)_owner.Pos.X, (int)e.Pos.X, (int)_owner.Pos.Y, (int)e.Pos.Y)).First();
            }

            WaypointNode farthest = WaypointGraph.GetFarthestWaypoint((int)closest.Pos.X, (int)closest.Pos.Y);
            WaypointNode myNode = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
            List<WaypointNode> path = WaypointGraph.pathfindDijkstra(myNode, farthest, (int)closest.Pos.X, (int)closest.Pos.Y);
            FollowPath fp = new FollowPath(_owner, path);
            return fp.GetGoal();
        }
        public override DoublePoint GetGoal()
        {
            bool player1 = Game.Player1.Minions.ContainsValue(_owner);
            Minion closest;
            if (player1)
            {
                closest = Game.Player2.Minions.Values.OrderBy(e => WaypointGraph.getDistance((int)_owner.Pos.X, (int)e.Pos.X, (int)_owner.Pos.Y, (int)e.Pos.Y)).First();
            }
            else
            {
                closest = Game.Player1.Minions.Values.OrderBy(e => WaypointGraph.getDistance((int)_owner.Pos.X, (int)e.Pos.X, (int)_owner.Pos.Y, (int)e.Pos.Y)).First();
            }
            //TODO: update curNode at some point
            WaypointNode enemyNode = WaypointGraph.GetClosestWaypoint((int)closest.Pos.X, (int)closest.Pos.Y);
            WaypointNode myNode = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
            List<WaypointNode> path = WaypointGraph.pathfindDijkstra(myNode, enemyNode);
            path.Add(new WaypointNode((int)closest.Pos.X, (int)closest.Pos.Y, new List<WaypointNode>()));
            FollowPath fp = new FollowPath(_owner, path);

            return fp.GetGoal();
        }
        public override DoublePoint GetGoal()
        {
            bool player1 = Game.Player1.Minions.ContainsValue(_owner);
            WaypointNode target;
            if (player1)
                {
                    Minion special = Game.Player1.Minions.Values.Where(e => e.IsSpecial).FirstOrDefault();
                    if (special != null)
                        target = WaypointGraph.GetClosestWaypoint((int)special.Pos.X, (int)special.Pos.Y + 400);
                    else
                        target = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
                }
                else
                {
                    Minion special = Game.Player2.Minions.Values.Where(e => e.IsSpecial).FirstOrDefault();
                    if (special != null)
                        target = WaypointGraph.GetClosestWaypoint((int)special.Pos.X, (int)special.Pos.Y - 400);
                    else
                        target = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
                }
            WaypointNode myNode = WaypointGraph.GetClosestWaypoint((int)_owner.Pos.X, (int)_owner.Pos.Y);
            List<WaypointNode> path = new List<WaypointNode>();
            /*
             * int length = Int32.MaxValue;
            foreach(WaypointNode target in target_nodes){
                List<WaypointNode> p = WaypointGraph.pathfindDijkstra(myNode, target);
                if (p.Count < length){
                    path = p;
                    length = p.Count;
                }
            }
             * */
            path = WaypointGraph.pathfindDijkstra(myNode, target);
            //path.Add(new WaypointNode((int)closest.Pos.X, (int)closest.Pos.Y, new List<WaypointNode>()));
            FollowPath fp = new FollowPath(_owner, path);

            return fp.GetGoal(); ;
        }