Esempio n. 1
0
    static bool DeliverGateRoute(HttpListenerResponse response, string startSystem, string endSystem)
    {
        var start = LookupSystem(startSystem);
          var end = LookupSystem(endSystem);
          if (end == null)
          return false;

          var routeParams = new GateRouteParameters();
          routeParams.RoutingOption = GateRouteOption.UseBridges;
          routeParams.ShipMass = 1f;

          var router = new GateRouter(routeParams);
          List<Vertex> path;
          router.GetShortestPath(start, end, out path);

          if (path.Count == 0)
          return false;

          response.ContentType = "text/plain";

          var b = new StringBuilder();
          b.Append("{\"route\": [\n");

          foreach (var jump in path)
          {
          b.Append("{");

          b.Append("\"name\":\"").Append(jump.SolarSystem.Name).Append("\",");
          b.Append("\"id\":\"").Append(jump.SolarSystem.ID).Append("\",");
          b.Append("\"type\":\"").Append(jump.JumpType).Append("\"");

          if (jump.JumpType == JumpType.Bridge)
          {
              b.Append(",\"pos\":\"").Append(jump.Bridge.Pos.Planet).Append("-").Append(jump.Bridge.Pos.Moon).Append("\"");
          }

          b.Append("}");

          if (jump != path[path.Count - 1])
              b.Append(",\n");
          }
          b.Append("] }");

          response.ContentType = "application/json";
          RespondWith(response, b.ToString());

          return true;
    }
Esempio n. 2
0
    static string GenerateRoute(string nameStart, string nameEnd)
    {
        var start = LookupSystem(nameStart);
        var end = LookupSystem(nameEnd);
        if (end == null)
          return null;

        var routeParams = new GateRouteParameters();
        routeParams.RoutingOption = GateRouteOption.UseBridges;
        routeParams.ShipMass = 1f;

        var router = new GateRouter(routeParams);
        List<Vertex> path;
        router.GetShortestPath(start, end, out path);

        var b = new StringBuilder();
        foreach (var v in path) {
          var s = v.SolarSystem;
          b.Append(string.Format("{0}:{1}", s.ID, s.Name));
          if (v.JumpType == JumpType.Bridge) {
        var p = v.Bridge.Pos;
        b.Append(string.Format(" @ {0}-{1}", p.Planet, p.Moon));
          }
          b.Append('\n');
        }
        return b.ToString();
    }