public Fleet SendFleet(Celestial origin, Ships ships, Coordinate destination, Missions mission, Speeds speed, Model.Resources payload) { var request = new RestRequest { Resource = "/bot/planets/" + origin.ID + "/send-fleet", Method = Method.POST, }; request.AddParameter(new Parameter("galaxy", destination.Galaxy, ParameterType.GetOrPost)); request.AddParameter(new Parameter("system", destination.System, ParameterType.GetOrPost)); request.AddParameter(new Parameter("position", destination.Position, ParameterType.GetOrPost)); request.AddParameter(new Parameter("type", (int)destination.Type, ParameterType.GetOrPost)); Buildables buildable; foreach (PropertyInfo prop in ships.GetType().GetProperties()) { int qty = (int)prop.GetValue(ships, null); if (qty == 0) { continue; } if (Enum.TryParse <Buildables>(prop.Name, out buildable)) { request.AddParameter(new Parameter("ships", (int)buildable + "," + prop.GetValue(ships, null), ParameterType.GetOrPost)); } } request.AddParameter(new Parameter("mission", (int)mission, ParameterType.GetOrPost)); request.AddParameter(new Parameter("speed", (int)speed, ParameterType.GetOrPost)); request.AddParameter(new Parameter("metal", payload.Metal, ParameterType.GetOrPost)); request.AddParameter(new Parameter("crystal", payload.Crystal, ParameterType.GetOrPost)); request.AddParameter(new Parameter("deuterium", payload.Deuterium, ParameterType.GetOrPost)); var result = JsonConvert.DeserializeObject <OgamedResponse>(Client.Execute(request).Content); if (result.Status != "ok") { throw new Exception("An error has occurred: Status: " + result.Status + " - Message: " + result.Message); } else { return(JsonConvert.DeserializeObject <Fleet>(JsonConvert.SerializeObject(result.Result))); } }
public Fleet SendFleet(Celestial origin, Ships ships, Coordinate destination, Missions mission, decimal speed, Model.Resources payload) { var request = new RestRequest { Resource = $"/bot/planets/{origin.ID}/send-fleet", Method = Method.POST, }; request.AddParameter("galaxy", destination.Galaxy, ParameterType.GetOrPost); request.AddParameter("system", destination.System, ParameterType.GetOrPost); request.AddParameter("position", destination.Position, ParameterType.GetOrPost); request.AddParameter("type", (int)destination.Type, ParameterType.GetOrPost); foreach (PropertyInfo prop in ships.GetType().GetProperties()) { long qty = (long)prop.GetValue(ships, null); if (qty == 0) { continue; } if (Enum.TryParse <Buildables>(prop.Name, out Buildables buildable)) { request.AddParameter("ships", (int)buildable + "," + prop.GetValue(ships, null), ParameterType.GetOrPost); } } request.AddParameter("mission", (int)mission, ParameterType.GetOrPost); request.AddParameter("speed", speed.ToString(), ParameterType.GetOrPost); request.AddParameter("metal", payload.Metal, ParameterType.GetOrPost); request.AddParameter("crystal", payload.Crystal, ParameterType.GetOrPost); request.AddParameter("deuterium", payload.Deuterium, ParameterType.GetOrPost); var result = JsonConvert.DeserializeObject <OgamedResponse>(Client.Execute(request).Content); if (result.Status != "ok") { throw new Exception($"An error has occurred: Status: {result.Status} - Message: {result.Message}"); } else { return(JsonConvert.DeserializeObject <Fleet>(JsonConvert.SerializeObject(result.Result), new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Local })); } }