private static void Msocket_MessageReceived(object sender, MessageReceivedEventArgs e) { try { SocketCmd cmd = e.GetSocketCmd(); switch (cmd) { case SocketCmd.IpLimit: Logger.Write("(IpLimit) " + e.GetSocketData().First(), LogLevel.Service, ConsoleColor.Red); break; case SocketCmd.ServerLimit: Logger.Write("(ServerLimit) " + e.GetSocketData().First(), LogLevel.Service, ConsoleColor.Red); break; case SocketCmd.Identity: //first request UserUniequeId = e.GetSocketData().First(); SendToMSniperServer(UserUniequeId); //confirm Logger.Write($"(Identity) [ {UserUniequeId} ] connection establisted", LogLevel.Service); break; case SocketCmd.PokemonCount: //server asks what is in your hand (every 3 minutes) RefreshLocationQueue(); var x = LocationQueue.GroupBy(p => p.PokemonId) .Select(s => new PokemonCount { PokemonId = s.First().PokemonId, Count = s.Count() }) .ToList(); SendToMSniperServer(JsonConvert.SerializeObject(x)); break; case SocketCmd.SendPokemon: //sending encounters RefreshLocationQueue(); LocationQueue = LocationQueue.OrderByDescending(p => p.Iv).ToList(); int rq = 1; if (LocationQueue.Count < int.Parse(e.GetSocketData().First())) { rq = LocationQueue.Count; } else { rq = int.Parse(e.GetSocketData().First()); } var selected = LocationQueue.GetRange(0, rq); SendToMSniperServer(JsonConvert.SerializeObject(selected)); AddToVisited(selected.Select(p => p.EncounterId).ToList()); LocationQueue.RemoveRange(0, rq); break; case SocketCmd.SendOneSpecies: //server needs one type pokemon RefreshLocationQueue(); PokemonId speciesId = (PokemonId)Enum.Parse(typeof(PokemonId), e.GetSocketData().First()); int requestCount = int.Parse(e.GetSocketData()[1]); var onespecies = LocationQueue.Where(p => p.PokemonId == speciesId).ToList(); onespecies = onespecies.OrderByDescending(p => p.Iv).ToList(); if (onespecies.Count > 0) { List <EncounterInfo> oneType; if (onespecies.Count > requestCount) { oneType = LocationQueue.GetRange(0, requestCount); AddToVisited(oneType.Select(p => p.EncounterId).ToList()); LocationQueue.RemoveRange(0, requestCount); } else { oneType = LocationQueue.GetRange(0, LocationQueue.Count); LocationQueue.Clear(); } SendToMSniperServer(JsonConvert.SerializeObject(oneType)); } break; case SocketCmd.Brodcaster: //receiving encounter information from server //// disabled fornow //var xcoming = JsonConvert.DeserializeObject<List<EncounterInfo>>(e.GetSocketData().First()); //xcoming = FindNew(xcoming); //ReceivedPokemons.AddRange(xcoming); // //RefreshReceivedPokemons(); //TimeSpan ts = DateTime.Now - lastNotify; //if (ts.TotalMinutes >= 5) //{ // Logger.Write($"total active spawns:[ {ReceivedPokemons.Count} ]", LogLevel.Service); // lastNotify = DateTime.Now; //} break; case SocketCmd.None: Logger.Write("UNKNOWN ERROR", LogLevel.Service, ConsoleColor.Red); //throw Exception break; } } catch (Exception ex) { socket.Close(); Logger.Write(ex.Message, LogLevel.Service, ConsoleColor.Red); //throw ex; } }
public SocketCmdMessage(SocketCmd tp) { cmdType = tp; }