コード例 #1
0
        private async void ButtonPatientViewHealOperationReplaceOrgan_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult result = WPFCustomMessageBox.CustomMessageBox.ShowYesNoCancel("Заменить повреждение органом или протезом?", "", "Орган", "Протез", "Отменить");

            Database.Organ operatingOrgan = (DataGridPatientViewHealOperationWounds.SelectedItem as HealingDetails.Wound).Organ;
            switch (result)
            {
            case MessageBoxResult.Yes:     // Install organ
                List <Database.Organ> organsList = (await Economics.Exchange.GetUserItems(1, operatingOrgan.Slot))
                                                   .Cast <Database.Organ>().ToList();
                if (organsList.Count <= 0)
                {
                    if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("К сожалению, на складе нет подходящих органов. Просмотреть протезы?", "", "Да", "Нет, отменить")
                        == MessageBoxResult.Yes)
                    {
                        goto case MessageBoxResult.No;
                    }
                }
                else
                {
                    if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("Есть подходящий орган. Провести установку?", "", "Да", "Нет, отменить")
                        == MessageBoxResult.Yes)
                    {
                        if (operatingOrgan.IsAugmented)
                        {
                            new AugmentationDetails(AugmentationType.Primary, AugmentationAction.Remove, _target: operatingOrgan).Execute();
                        }
                        new AugmentationDetails(AugmentationType.Organ, AugmentationAction.Remove, _target: operatingOrgan).Execute();
                        new AugmentationDetails(AugmentationType.Organ, AugmentationAction.Install, _implant: organsList[0]).Execute();
                        Database.Controller.SaveCharacters();
                        DisplayCharacter();

                        if (DataGridPatientViewHealOperationWounds.SelectedItem is HealingDetails.Wound)
                        {
                            wounds.RemoveAll((HealingDetails.Wound wound) => { return(wound.OrganSlot == operatingOrgan.SlotString); });
                        }
                        UpdateDataGridPatientViewHealOperationData();
                    }
                }
                break;

            case MessageBoxResult.No:     // Install augment
                AugmentRequest augWindow = await AugmentRequest.CreateInstance(1, operatingOrgan.Slot, true);

                bool requestResult = augWindow.ShowDialog().GetValueOrDefault(false);
                if (requestResult)
                {
                    AugmentationDetails augmentation = new AugmentationDetails(AugmentationType.Primary, AugmentationAction.Install, _implant: augWindow.Selection);
                    augmentation.Execute();
                    Database.Controller.SaveCharacters();
                    DisplayCharacter();

                    if (DataGridPatientViewHealOperationWounds.SelectedItem is HealingDetails.Wound)
                    {
                        wounds.RemoveAll((HealingDetails.Wound wound) => { return(wound.OrganSlot == selectedOrgan.SlotString); });
                    }
                }
                break;
            }
        }
コード例 #2
0
        private async void OrganClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            Database.Organ organ = Database.Controller.SelectedCharacter.GetOrgan(GetSlotByImageEntity(sender as Image));
            selectedOrgan = organ;
            try
            {
                switch (CurrentOrganClickAction)
                {
                case OrganClickAction.DisplayOrganInfo:
                    textblockPatientOrganName.Text        = organ.Name;
                    textblockPatientOrganDescription.Text = organ.Description;

                    // If there is no organ, we should be able to install it
                    if (organ.Virtual)
                    {
                        ButtonPatientViewInstallOrgan.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        ButtonPatientViewInstallOrgan.Visibility = Visibility.Collapsed;
                    }

                    if (organ.IsAugmented)
                    {
                        Database.Augment aug = organ.AugmentEquivalent;
                        textblockPatientOrganAugName.Text        = aug.Name;
                        textblockPatientOrganAugDescription.Text = aug.Description;
                        textblockPatientOrganAugSlotType.Text    = organ.Name;
                        datagridPatientOrganAugParams.Items.Clear();
                        foreach (KeyValuePair <string, string> pair in aug.AllCustomParameters ?? new Dictionary <string, string>())
                        {
                            datagridPatientOrganAugParams.Items.Add(pair);
                        }

                        textblockPatientOrganAugmentNotifier.Visibility = Visibility.Visible;
                        rectanglePatientOrganAug.Visibility             = Visibility.Collapsed;
                    }
                    else
                    {
                        textblockPatientOrganAugmentNotifier.Visibility = Visibility.Collapsed;
                        rectanglePatientOrganAug.Visibility             = Visibility.Visible;
                    }
                    rectanglePatientOrgan.Visibility = Visibility.Collapsed;
                    break;

                case OrganClickAction.WoundInput:
                    wounds.Add(new HealingDetails.Wound(organ, WoundSelection.SelectWound()));
                    UpdateDataGridPatientViewHealOperationData();
                    ButtonPatientViewHealOperationBegin.IsEnabled = true;
                    break;

                case OrganClickAction.RemoveOrgan:
                    if (organ.Virtual)
                    {
                        WPFCustomMessageBox.CustomMessageBox.ShowOK("Здесь нет органа.", "", "ОК");
                    }
                    else if (organ.IsAugmented)
                    {
                        if (organ.AugmentEquivalent.IsReplacement)
                        {
                            if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("Удалить выбранный протез?", "", "Да", "Нет") == MessageBoxResult.Yes)
                            {
                                new AugmentationDetails(AugmentationType.Primary, AugmentationAction.Remove, _target: organ).Execute();
                                SwitchOperationMode(OrganClickAction.DisplayOrganInfo);
                            }
                            else
                            {
                                WPFCustomMessageBox.CustomMessageBox.ShowOK("Нельзя удалить аугментированный орган. Сначала удалите аугмент.", "", "Понятно");
                            }
                        }
                        DisplayCharacter(Database.Controller.SelectedCharacter);
                    }
                    else if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("Удалить выбранный орган?", "", "Да", "Нет") == MessageBoxResult.Yes)
                    {
                        new AugmentationDetails(AugmentationType.Organ, AugmentationAction.Remove, _target: organ).Execute();
                        DisplayCharacter();
                        SwitchOperationMode(OrganClickAction.DisplayOrganInfo);
                    }
                    break;

                case OrganClickAction.AugmentateOrgan:
                    if (organ.Virtual)     // No organ
                    {
                        WPFCustomMessageBox.CustomMessageBox.ShowOK("Здесь нет органа.", "", "ОК");
                    }
                    else if (organ.IsAugmented)     // Either augmented or replaced organ
                    {
                        if (organ.AugmentEquivalent.IsReplacement)
                        {
                            WPFCustomMessageBox.CustomMessageBox.ShowOK("Протез извлечь нельзя. Необходимо воспользоваться операцией удаления органа.", "", "Понятно");
                        }
                        else if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("Извлечь аугмент из органа?", "", "Да", "Назад") == MessageBoxResult.Yes)
                        {
                            new AugmentationDetails(AugmentationType.Primary, AugmentationAction.Remove, _target: organ).Execute();
                            DisplayCharacter();
                            SwitchOperationMode(OrganClickAction.DisplayOrganInfo);
                        }
                    }
                    else     // Just an organ
                    {
                        if (WPFCustomMessageBox.CustomMessageBox.ShowYesNo("Выберите аугмент для установки.", "", "ОК", "Отменить")
                            == MessageBoxResult.Yes)
                        {
                            AugmentRequest augWindow = await AugmentRequest.CreateInstance(1, selectedOrgan.Slot);

                            bool result = augWindow.ShowDialog().GetValueOrDefault(false);
                            if (result)
                            {
                                new AugmentationDetails(AugmentationType.Primary, AugmentationAction.Install, _implant: augWindow.Selection).Execute();
                            }
                            else
                            {
                                WPFCustomMessageBox.CustomMessageBox.ShowOK("Установка аугмента отменена.", "", "ОК");
                            }
                            DisplayCharacter();
                        }
                        SwitchOperationMode(OrganClickAction.DisplayOrganInfo);
                    }
                    break;

                case OrganClickAction.ReplaceOrgan:
                    break;
                }
            }
            catch (OperationCanceledException) { }
        }