// Игровое сообщение обработано private void MessageProcessed(object sender, MessageProcessedEventArgs e) { // Аргументы сообщений, которые будут отправлены позже var changesForClients = new List <StateChange>(); // Изменить состояние сервера foreach (var change in e.Changes) { ApplyChange(change.ChangeMessage); // Добавить к отправляемым сообщениям if (change.TargetType != SendTargetType.NoOne) { changesForClients.Add(change); } } // Отправить сообщения клиентам foreach (var clientChange in changesForClients) { var args = MessageEventArgs.CreateFromChange(clientChange); GotMessageToSend?.Invoke(this, args); } }