bool RegisterID(int clientID) { if (Clients.Count == 30 || Clients.FirstOrDefault(a => a.ID == clientID) != null) { return(false); } else { var d = new SafeClientAdd(AddClient); this.Invoke(d, clientID); return(true); } }
private void OnClientRequest(object sender, SimpleTCP.Message e) { if (e != null) { string response = "default"; string msg = e.MessageString; if (msg.Length > 3) { switch (msg) { case "checkID": response = GetEmptyClientID().ToString(); break; default: ClientRequest req = new ClientRequest(msg); var client = Clients.FirstOrDefault(a => a.ID == req.ClientID); if (client != null) { client.LastRequest = DateTime.Now.ToShortTimeString(); } switch (req.Message) { case "register": // add client to the list response = RegisterID(req.ClientID) ? "true" : "false"; break; case "main": // get state if (client == null) { response = RegisterID(req.ClientID) ? GetClientState(req.ClientID).ToString() : "no_response"; } else { response = GetClientState(req.ClientID).ToString(); client.LastInfo = req.Argument; // set last info Task.Run(async() => await HttpSimpleClient.SendRequestAsync(req.ClientID, response, req.Argument)); } break; case "account": // get account data if (client != null && client.LoadedAccount != null) { client.State = ClientStates.Login; response = client.LoadedAccount.Username + ":" + client.LoadedAccount.Password; Task.Run(async() => await HttpSimpleClient.SendRequestAsync(req.ClientID, "account", client.LoadedAccount.Username)); } else { response = "no_account"; } break; case "state": // get account data if (client != null) { switch (req.Argument) { case "ingame": client.State = ClientStates.InGame; break; case "queue": client.State = ClientStates.Queue; break; } response = "no_response"; } break; case "shutdown": // shutting down the client { if (Clients.Count == 0 || client == null) { response = "no_response"; } else { var d = new SafeClientAdd(RemoveClient); this.Invoke(d, req.ClientID); response = "no_response"; } } break; case "event": break; } break; } } if (response != "no_response") { e.ReplyLine(response); } } }