Example #1
0
        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)));
            }
        }
Example #2
0
        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
                }));
            }
        }
Example #3
0
 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);
     }
 }