daily pastebin goal
15%
SHARE
TWEET

Untitled

a guest Mar 19th, 2014 134 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public static Dictionary<uint, Dictionary<uint, List<GpoControlPoint>>> ParseRoutes(IEnumerable<GpoControlPoint> controlPoints)
  2. {
  3.         Dictionary<uint, Dictionary<uint, List<GpoControlPoint>>> routes = new Dictionary<uint, Dictionary<uint, List<GpoControlPoint>>>();
  4.         Dictionary<uint, List<GpoControlPoint>> allRouteFlags = new Dictionary<uint, List<GpoControlPoint>>();
  5.         List<GpoControlPoint> noSgidFlags = new List<GpoControlPoint>();
  6.         bool hasRoutes = false;
  7.  
  8.         foreach (var controlPoint in controlPoints) {
  9.                 if (controlPoint.UnableToChangeTeam)
  10.                         controlPoint.SupplyGroupId = 0;
  11.  
  12.                 uint group = 0, random = 0, route = 0;
  13.                 if (controlPoint.SupplyGroupId > 0) {
  14.                         string s = controlPoint.SupplyGroupId.ToString();
  15.                         if (s.Length >= 1)
  16.                                 group = UInt32.Parse(s.Substring(0, 1), CultureInfo.InvariantCulture);
  17.                         if (s.Length >= 2)
  18.                                 random = UInt32.Parse(s.Substring(1, 1), CultureInfo.InvariantCulture);
  19.                         if (s.Length >= 3)
  20.                                 route = UInt32.Parse(s.Substring(2, 1), CultureInfo.InvariantCulture);
  21.  
  22.                         if (route == 0) {
  23.                                 if (allRouteFlags.ContainsKey(group))
  24.                                         allRouteFlags[group].Add(controlPoint);
  25.                                 else
  26.                                         allRouteFlags.Add(group, new List<GpoControlPoint>() { controlPoint });
  27.  
  28.                                 continue;
  29.                         } else {
  30.                                 hasRoutes = true;
  31.                         }
  32.  
  33.                         if (routes.ContainsKey(route)) {
  34.                                 if (routes[route].ContainsKey(group)) {
  35.                                         routes[route][group].Add(controlPoint);
  36.                                 } else {
  37.                                         routes[route].Add(group, new List<GpoControlPoint>() { controlPoint });
  38.                                 }
  39.                         } else {
  40.                                 routes.Add(route, new Dictionary<uint, List<GpoControlPoint>>());
  41.                                 routes[route].Add(group, new List<GpoControlPoint>() { controlPoint });
  42.                         }
  43.                 } else {
  44.                         noSgidFlags.Add(controlPoint);
  45.                 }
  46.         }
  47.  
  48.         if (!hasRoutes) {
  49.                 routes.Add(1, new Dictionary<uint, List<GpoControlPoint>>());
  50.         }
  51.  
  52.         foreach (var kvr in routes.ToDictionary(x => x.Key, x => x.Value)) {
  53.                 foreach (var kv in allRouteFlags) {
  54.                         if (routes[kvr.Key].ContainsKey(kv.Key))
  55.                                 routes[kvr.Key][kv.Key].AddRange(kv.Value);
  56.                         else
  57.                                 routes[kvr.Key].Add(kv.Key, kv.Value);
  58.                 }
  59.         }
  60.  
  61.         foreach (var kvr in routes.ToDictionary(x => x.Key, x => x.Value)) {
  62.                 uint lastIndex = 0;
  63.                 if (kvr.Value.Count > 0)
  64.                         lastIndex = kvr.Value.Select(x => x.Key).OrderBy(x => x).Last() + 1;
  65.  
  66.                 foreach (var flag in noSgidFlags) {
  67.                         if (flag.Team == 2) {
  68.                                 if (routes[kvr.Key].ContainsKey(lastIndex))
  69.                                         routes[kvr.Key][lastIndex].Add(flag);
  70.                                 else
  71.                                         routes[kvr.Key].Add(lastIndex, new List<GpoControlPoint>() { flag });
  72.                         } else {
  73.                                 if (routes[kvr.Key].ContainsKey(0))
  74.                                         routes[kvr.Key][0].Add(flag);
  75.                                 else
  76.                                         routes[kvr.Key].Add(0, new List<GpoControlPoint>() { flag });
  77.                         }
  78.                 }
  79.         }
  80.  
  81.         return routes;
  82. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top