// Если медик хочет прервать процедуру лечения...
 private void BT_Return_Click(object sender, EventArgs e)
 {
     // Проверяем кол-во предпринятых действий
     if (locattempt == 0)
     { // Если лечение не начиналось - никаких последствий, возвращаемся в меню.
         DialogResult = DialogResult.Cancel;
         Close();
     }
     else
     { // Если же было совершено хотя бы одно действие - проверяем, находится ли пациент в критическом состоянии.
         if (operation.attempt == OperationInfo.maxAttempts - 1)
         { 
             GUIMessageBox.ShowDlg(new string[] 
             { "", "Пациент в критическом состоянии!",
             "Невозможно отменить лечение." });
         }
         else // Если состояние не критическое - возвращаемся в меню операции (спросив подтверждения).
         { 
             DialogResult result = GUIMessageBox.ShowDlg(GUIMessageBox.Type.CONFIRMATION,
                 new string[] { "Вы собираетесь прервать уже начатую процедуру лечения." +
                 "Дроид сведёт урон к минимуму, но состояние пациента всё равно ухудшится.",
                 "Вы уверены?"});
             if (result == DialogResult.Yes)
             {
                 DialogResult = DialogResult.Abort;
                 Close();
             }
         }
     }
 }
        // Метод вызывается по клику кнопок действий.
        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;
                }
            }
        }
 private void BT_Remove_Click(object sender, EventArgs e)
 {
     if (LB_ActualInj.SelectedItem != null)
     {
         LB_ActualInj.Items.Remove(LB_ActualInj.SelectedItem);
     }
     else
     {
         GUIMessageBox.ShowDlg("Сначала выберите ранение.");
     }
 }
Example #4
0
        private void BT_Criofreeze_Click(object sender, EventArgs e)
        {
            switch (patient.state)
            {
            case Database.CharacterData.State.ALIVE:
            case Database.CharacterData.State.DEAD:
            {         // По какой-то причине кнопка видна - прячем её.
                BT_Criofreeze.Visible = false;
                break;
            }

            case Database.CharacterData.State.FROZEN:
            {         // Размораживаем пациента
                DialogResult result = GUIMessageBox.ShowDlg(GUIMessageBox.Type.CONFIRMATION, "Вы дейсвтительно хотите разморозить пациента?");
                if (result == DialogResult.Yes)
                {
                    /* Нереализованный контент - задержки сделаны в корне неправильно.
                     *
                     * GUIMessageBox box = GUIMessageBox.ShowTimedMessage("Начинается процедура разморозки...");
                     * Thread.Sleep(2500);
                     * box.Dispose();
                     *
                     * box = GUIMessageBox.ShowTimedMessage("Восстановление жизненных показателей...");
                     * Thread.Sleep(3000);
                     * box.Dispose();
                     *
                     * box = GUIMessageBox.ShowTimedMessage("Разгерметизация кожного покрова...");
                     * Thread.Sleep(4000);
                     * box.Dispose();
                     *
                     * box = GUIMessageBox.ShowTimedMessage("Стабилизация температуры...");
                     * Thread.Sleep(5000);
                     * box.Dispose();
                     *
                     * GUIMessageBox.ShowDlg(new string[] { "", "Процедура разморозки завершена." });
                     */

                    LB_State.Text      = "ЖИВ";
                    LB_State.ForeColor = Color.ForestGreen;

                    patient.state = Database.CharacterData.State.ALIVE;

                    BT_Criofreeze.Visible = false;
                }
                break;
            }
            }
        }
 private void BT_Add_Click(object sender, EventArgs e)
 {
     if (ObjectsAmount(LB_ActualInj, LB_PossibleInj.SelectedItem) >= 3)
     {
         GUIMessageBox.ShowDlg("Не больше трёх ранений одного типа!");
     }
     else
     {
         if (LB_PossibleInj.SelectedItem != null)
         {
             LB_ActualInj.Items.Add(LB_PossibleInj.SelectedItem);
         }
         else
         {
             GUIMessageBox.ShowDlg("Сначала выберите тип ранения.");
         }
     }
 }
Example #6
0
        // Когда вызывается закрытие (через кнопку, или же через Alt+F4), необходимо
        // сначала решить, нужно ли закрывать, и, при необходимости, прервать процедуру.
        private void CloseCalled(object sender, FormClosingEventArgs e)
        {
            // Спрашивать подтверждения нужно только в том случае, если пациент ещё жив И операция ещё не закончена.
            if ((info.patient.state != CharacterData.State.DEAD) && !info.isFinished)
            {
                DialogResult result = GUIMessageBox.ShowDlg(GUIMessageBox.Type.CONFIRMATION,
                                                            new string[] {
                    "Если вы прервёте операцию, дроид автоматически начнёт процедуру ввода пациента в криостазис.",
                    "Вы уверены, что хотите прервать операцию?"
                });

                // Решаем, нужно ли прервать закрытие.
                if (result == DialogResult.Yes)
                {
                    // Прерываем.
                    e.Cancel = false;

                    // Замораживаем пациента.
                    info.patient.state = CharacterData.State.FROZEN;
                    DialogResult       = DialogResult.Abort;


                    /* Нереализованный контент, из-за неверной имплементации задержек.
                     *
                     * LogMessage("Начинаю криогенную заморозку...");
                     * Thread.Sleep(2500);
                     * LogMessage("Герметизация кожного покрова...");
                     * Thread.Sleep(3000);
                     * LogMessage("Остановка жизненных показателей...");
                     * TMR_StatsRandomize.Enabled = false;
                     * Thread.Sleep(3000);
                     * TMR_CritFlickering.Enabled = false;
                     * Thread.Sleep(1500);
                     */

                    LB_Critical.Visible = false;
                    LogMessage("Пациент заморожен.");
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
        private void BT_Next_Click(object sender, EventArgs e)
        {
            // Проверка, было ли добавлено хотя бы одно ранение.
            if (LB_ActualInj.Items.Count == 0)
            {
                GUIMessageBox.ShowDlg(new string[] { "", "Сначала внесите инорфмацию о повреждениях." });
            }
            else
            {
                // Нужно перевести интерфейсное представление введённых ранений в программное.

                List <object> checkedList = new List <object>();
                for (int i = 0; i < LB_ActualInj.Items.Count; i++)
                {
                    object item = LB_ActualInj.Items[i];
                    if (!checkedList.Contains(item))
                    {
                        checkedList.Add(item);

                        int count = 0;
                        for (int j = 0; j < LB_ActualInj.Items.Count; j++)
                        {
                            if (item.ToString() == LB_ActualInj.Items[j].ToString() && (j != i))
                            {
                                count++;
                            }
                        }

                        input.Add(new Database.Injury(
                                      Database.Injury.FindTypeByName(item.ToString()),
                                      (Database.Injury.Amount)count)
                                  );
                    }
                }

                DialogResult = DialogResult.OK;
                Close();
            }
        }
Example #8
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[] { "", "Сначала выберите повреждение." });
            }
        }
        public static DialogResult ShowDlg(Type type, string message, int time)
        {
            GUIMessageBox box = new GUIMessageBox(type, message, time);

            return(box.ShowDialog());
        }
        public static DialogResult ShowDlg(string[] message)
        {
            GUIMessageBox box = new GUIMessageBox(Type.MESSAGE, message);

            return(box.ShowDialog());
        }