public ActionSelect(OperationInfo _operation, Damage _damage) { InitializeComponent(); operation = _operation; damage = _damage; currentAction = damage.order.Dequeue(); TMR_StatsRandomize.Enabled = true; PB_Process.Value = 0; PB_Process.Minimum = 0; PB_Process.Maximum = damage.order.Count + 1; LB_Injury.Text = damage.name; LB_InjSelection.SelectedIndex = 0; // Контроллер индикатора крит. состояния if (!operation.IsCritical()) { LB_Critical.Visible = false; TMR_CriticalFlickering.Enabled = false; } else { LB_Critical.Visible = true; TMR_CriticalFlickering.Enabled = true; } }
private void BT_Heal_Click(object sender, EventArgs e) { // Проверяем, выбрано ли вообще повреждение. if (LB_Damages.SelectedItem != null) { // Создаём объект повреждения для передачи в следующее диалоговое окно и вывода в журнал. Damage selectedDamage = new Damage(Damage.GetTypeByName(LB_Damages.SelectedItem.ToString())); LogMessage("Лечение повреждения \"" + selectedDamage.name + "\""); ActionSelect action = new ActionSelect(info, selectedDamage); DialogResult dlgResult = action.ShowDialog(); // вызываем окно switch (dlgResult) { // Повреждение вылечено case DialogResult.OK: { // убрать вылеченное из списка LB_Damages.Items.Remove(selectedDamage.ToString()); LogMessage("Повреждение устранено."); // если повреждений больше нет - операция успешно завершена if (LB_Damages.Items.Count == 0) { LogMessage("Пациент вылечен!"); info.isFinished = true; DialogResult = DialogResult.OK; Close(); } break; } case DialogResult.Cancel: { // процедура лечения ОТМЕНЕНА (т.е. не было произведено ни одного действия) LogMessage("Процедура лечения отменена."); break; } case DialogResult.Abort: { // процедура лечения ПРЕРВАНА (т.е. действие было совершено, неважно - ошибочное или нет) LogMessage("Процедура лечения прервана."); // Наносим пациенту один уровень урона. // Это не может его убить, т.к. прерывать лечение в критическом состоянии запрещено. info.HurtStats(); break; } case DialogResult.No: { // Попытки закончились, операция провалена. Убиваем пациента. info.isFinished = true; TMR_Pulse.Enabled = false; TMR_Pulse.Dispose(); SoundLibrary.PlaySoundLooping(SoundLibrary.SoundType.BEEEEEEP); info.Dead(); GUIUpdateStats(); TMR_StatsRandomize.Enabled = false; LogMessage("Пациент скончался."); GUIMessageBox.ShowDlg(new string[] { "", "Пациент скончался." }); DialogResult = DialogResult.None; Close(); SoundLibrary.Stop(); break; } } // Контроль индикатора крит. состояния. if (info.IsCritical()) { LogMessage("Пациент в критическом состоянии!"); LB_Critical.Visible = true; TMR_CritFlickering.Enabled = true; } else { TMR_CritFlickering.Enabled = false; LB_Critical.Visible = false; } } else { GUIMessageBox.ShowDlg(new string[] { "", "Сначала выберите повреждение." }); } }