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 })); } }
private static int SendFleet(Celestial origin, Ships ships, Coordinate destination, Missions mission, Speeds speed, Model.Resources payload = null, bool force = false) { Helpers.WriteLog(LogType.Info, LogSender.Tbot, "Sending fleet from " + origin.Coordinate.ToString() + " to " + destination.ToString() + ". Mission: " + mission.ToString() + ". Ships: " + ships.ToString()); UpdateSlots(); if (slots.Free > 1 || force) { if (payload == null) { payload = new Resources { Metal = 0, Crystal = 0, Deuterium = 0 }; } try { Fleet fleet = ogamedService.SendFleet(origin, ships, destination, mission, speed, payload); fleets = ogamedService.GetFleets(); UpdateSlots(); return(fleet.ID); } catch (Exception e) { Helpers.WriteLog(LogType.Error, LogSender.Defender, "Exception: " + e.Message); return(0); } } else { Helpers.WriteLog(LogType.Warning, LogSender.Tbot, "Unable to send fleet, no slots available"); return(0); } }