Пример #1
0
        private void ParseCommand(string command)
        {
            if (string.IsNullOrEmpty(command))
            {
                return;
            }

            string[] split = command.Split(' ');
            string   cmd   = split[0];
            string   args  = string.Join(" ", split.Skip(1).ToArray());

            new Thread(() =>
            {
                switch (cmd)
                {
                case "send":
                    Clients.SendMessage(true, args);
                    break;

                case "send!":
                    int clientsAffected = Clients.BroadcastToClients(RemoteClient.GetNotificationPacket(NotificationLevel.NONE, args));
                    Console.WriteLine($"Sent \"{args}\" to {clientsAffected} clients.");
                    break;

                case "online":
                    Console.WriteLine($"{Clients.UsersOnline} clients online out of {Program.Settings.MaxUsers} maximum.");
                    break;

                case "list":
                    string[] usernames;
                    lock (Clients)
                    {
                        usernames = new string[Clients.Count];
                        for (int i = 0; i < Clients.Count; i++)
                        {
                            usernames[i] = Clients[i].Username;
                        }
                    }
                    string clients = string.Join(", ", usernames);
                    Console.WriteLine(clients);
                    break;

                default:
                    Console.WriteLine($"Command not found: {cmd}");
                    break;
                }
            })
            {
                IsBackground = true,
                Name         = "Command executer",
            }.Start();
        }