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); }
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()); }