Esempio n. 1
0
        public Dictionary <int, string> GetUnexploredClusters(ImissionIGCWrapper mission)
        {
            Dictionary <int, string> returnValue = new Dictionary <int, string>();

            if (Clusters != null)
            {
                foreach (var clusterInfo in Clusters)
                {
                    var missionCluster = mission.GetCluster(clusterInfo.GetObjectID());

                    if (missionCluster == null)
                    {
                        continue;
                    }

                    // Did we find all the warps?
                    if (missionCluster.GetWarps().Count < clusterInfo.GetWarps().Count)
                    {
                        returnValue.Add(clusterInfo.GetObjectID(), missionCluster.GetName());
                    }
                    // Did we find the tech rock or a station in the cluster?
                    else if (missionCluster.GetAsteroids().Where(p => p.GetName().StartsWith("a") == false && p.GetName().StartsWith("He") == false).Count() == 0 && missionCluster.GetStations().Count == 0)
                    {
                        returnValue.Add(clusterInfo.GetObjectID(), missionCluster.GetName());
                    }
                }
            }

            return(returnValue);
        }
Esempio n. 2
0
        public DijkstraPathFinder(ImissionIGCWrapper mission, IclusterIGCWrapper fromCluster, IclusterIGCWrapper toCluster)
        {
            List <ClusterInfo> clusterInfos = new List <ClusterInfo>();

            foreach (var cluster in mission.GetClusters())
            {
                clusterInfos.Add(new ClusterInfo(cluster.GetObjectID(), cluster.GetHomeSector()));
            }

            foreach (var fromClusterInfo in clusterInfos)
            {
                foreach (var warp in mission.GetCluster(fromClusterInfo.GetObjectID()).GetWarps())
                {
                    var toClusterInfo = clusterInfos.Where(p => p.GetObjectID() == warp.GetDestination().GetCluster().GetObjectID()).FirstOrDefault();

                    if (toClusterInfo != null)
                    {
                        fromClusterInfo.GetWarps().Add(new WarpInfo(fromClusterInfo, toClusterInfo));
                    }
                }
            }

            BuildPath(clusterInfos, fromCluster.GetObjectID(), toCluster.GetObjectID());
        }