// Метод вызывается по клику кнопок действий. private void AttemptAction(Database.Action action) { locattempt++; if (action.number == currentAction) { // Выбрано верное действие PB_Process.Value++; // Проверяем, сколько ещё повреждений. Если их не осталось, // возвращаемся в окно операции, а также нейтрализуем одну ошибку. if (damage.order.Count > 0) currentAction = damage.order.Dequeue(); else { DialogResult = DialogResult.OK; // "Стабилизация" пациента. operation.HealStats(); TMR_CriticalFlickering.Enabled = false; LB_Critical.Visible = false; GUIMessageBox.ShowDlg(new string[] { "", "Повреждение вылечено.", "Дроид стабилизирует пациента..." }); Close(); } } else // Неверное действие { operation.attempt++; operation.HurtStats(); if (operation.attempt >= OperationInfo.maxAttempts) { DialogResult = DialogResult.No; Close(); } else if (operation.IsCritical()) { GUIMessageBox.ShowDlg(new string[] { "", "Пациент в критическом состоянии!"}); } else { GUIMessageBox.ShowDlg(new string[] { "", "Состояние пациента ухудшилось." }); } if (operation.IsCritical()) { LB_Critical.Visible = true; TMR_CriticalFlickering.Enabled = true; } } }