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;
            }
        }
Esempio n. 2
0
        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[] { "", "Сначала выберите повреждение." });
            }
        }