Exemple #1
0
 private void Button_Accept_Click(object sender, RoutedEventArgs e)
 {
     if (Hero_DoHaveMagic.IsChecked == true)
     {
         Новый_персонаж_с_магией = new Персонаж_с_магией(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун);
     }
     else
     {
         Новый_персонаж = new Персонаж(RecievedID, Имя, Пол, Возраст, аса, МножительСилыРун);
     }
     DialogResult = true;
     Close();
 }
        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            //Сохранение информации о персонажах
            try
            {
                DataSet   ds = new DataSet();
                DataTable dt = new DataTable
                {
                    TableName = "Персонажи"
                };
                dt.Columns.Add("ID");
                dt.Columns.Add("Имя");
                dt.Columns.Add("Раса");
                dt.Columns.Add("Возраст");
                dt.Columns.Add("Пол");
                dt.Columns.Add("Обладает_магией");
                dt.Columns.Add("Ослаблен");
                dt.Columns.Add("Болен");
                dt.Columns.Add("Отравлен");
                dt.Columns.Add("Парализован");
                dt.Columns.Add("Мёртв");
                dt.Columns.Add("Может_говорить");
                dt.Columns.Add("Может_двигаться");
                dt.Columns.Add("Максимальное_здоровье");
                dt.Columns.Add("Очки_здоровья");
                dt.Columns.Add("Очки_опыта");
                dt.Columns.Add("Максимальная_мана");
                dt.Columns.Add("Очки_маны");
                ds.Tables.Add(dt);

                for (int i = 0; i < Персонажи.Count; i++)
                {
                    if (Обладает_магией[i] == false)
                    {
                        Персонаж персонаж = Персонажи[i] as Персонаж;
                        DataRow  строка   = ds.Tables["Персонажи"].NewRow();
                        строка["ID"]                    = персонаж.ID;
                        строка["Имя"]                   = персонаж.Имя;
                        строка["Раса"]                  = персонаж.аса;
                        строка["Возраст"]               = персонаж.Возраст;
                        строка["Пол"]                   = персонаж.Пол;
                        строка["Обладает_магией"]       = "False";
                        строка["Ослаблен"]              = персонаж.Состояние[0];
                        строка["Болен"]                 = персонаж.Состояние[1];
                        строка["Отравлен"]              = персонаж.Состояние[2];
                        строка["Парализован"]           = персонаж.Состояние[3];
                        строка["Мёртв"]                 = персонаж.Состояние[4];
                        строка["Может_говорить"]        = персонаж.Может_говорить;
                        строка["Может_двигаться"]       = персонаж.Может_двигаться;
                        строка["Максимальное_здоровье"] = персонаж.Максимальное_здоровье;
                        строка["Очки_здоровья"]         = персонаж.Очки_Здоровья;
                        строка["Очки_опыта"]            = персонаж.Очки_Опыта;
                        ds.Tables["Персонажи"].Rows.Add(строка);
                    }
                    else
                    {
                        Персонаж_с_магией персонаж = Персонажи[i] as Персонаж_с_магией;
                        DataRow           строка   = ds.Tables["Персонажи"].NewRow();
                        строка["ID"]                    = персонаж.ID;
                        строка["Имя"]                   = персонаж.Имя;
                        строка["Раса"]                  = персонаж.аса;
                        строка["Возраст"]               = персонаж.Возраст;
                        строка["Пол"]                   = персонаж.Пол;
                        строка["Обладает_магией"]       = "True";
                        строка["Ослаблен"]              = персонаж.Состояние[0];
                        строка["Болен"]                 = персонаж.Состояние[1];
                        строка["Отравлен"]              = персонаж.Состояние[2];
                        строка["Парализован"]           = персонаж.Состояние[3];
                        строка["Мёртв"]                 = персонаж.Состояние[4];
                        строка["Может_говорить"]        = персонаж.Может_говорить;
                        строка["Может_двигаться"]       = персонаж.Может_двигаться;
                        строка["Максимальное_здоровье"] = персонаж.Максимальное_здоровье;
                        строка["Очки_здоровья"]         = персонаж.Очки_Здоровья;
                        строка["Очки_опыта"]            = персонаж.Очки_Опыта;
                        строка["Максимальная_мана"]     = персонаж.Максимальная_мана;
                        строка["Очки_маны"]             = персонаж.Очки_Маны;
                        ds.Tables["Персонажи"].Rows.Add(строка);
                    }
                }
                //сохранение информации о тексте в консоли
                dt = new DataTable
                {
                    TableName = "Консоль"
                };
                dt.Columns.Add("Консоль_Текст");
                ds.Tables.Add(dt);
                DataRow СтрокаКонсоли = ds.Tables["Консоль"].NewRow();
                СтрокаКонсоли["Консоль_Текст"] = Console.Text;
                ds.Tables["Консоль"].Rows.Add(СтрокаКонсоли);

                //сохранение информации о предметах в инвентаре
                dt = new DataTable
                {
                    TableName = "Инвентарь"
                };
                dt.Columns.Add("Название");
                dt.Columns.Add("Числовое_значение"); //кол-во предметов либо значение восстановления (HP/MP)
                ds.Tables.Add(dt);
                foreach (Предметы.Зелье Предмет in ПереченьПредметов)
                {
                    DataRow Строка = ds.Tables["Инвентарь"].NewRow();
                    Строка["Название"] = Предмет.Название;

                    if (Предмет is Предметы.Зелье_Лечения)
                    {
                        if (Предмет is Предметы.Малое_Зелье_Лечения)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Малое_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                        else if (Предмет is Предметы.Среднее_Зелье_Лечения)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Среднее_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                        else
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Большое_Зелье_Лечения).Количество_Восполняемого_Здоровья;
                        }
                    }
                    else
                    {
                        if (Предмет is Предметы.Бутылек_Маны)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Бутылек_Маны).Количество_Восполняемой_Маны;
                        }
                        else if (Предмет is Предметы.Фласка_маны)
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Фласка_маны).Количество_Восполняемой_Маны;
                        }
                        else
                        {
                            Строка["Числовое_значение"] = (Предмет as Предметы.Банка_маны).Количество_Восполняемой_Маны;
                        }
                    }

                    ds.Tables["Инвентарь"].Rows.Add(Строка);
                }

                ds.WriteXml("SaveFile.svfl");
                MessageBox.Show($"Игра сохранена", "Уведомление", MessageBoxButton.OK, MessageBoxImage.Asterisk);
            }
            catch (Exception ex)
            {
                StreamWriter streamWriter = new StreamWriter("ErrorLog.log");
                streamWriter.Write(ex);
                MessageBox.Show($"Произошла ошибка при сохранении. В директории с игрой был создан лог файл для отладки", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                streamWriter.Close();
            }
        }
 public Огненный_Шар(Персонаж_с_магией Источник, Враги Цель, double Множитель_Стоимости)
 {
     Источник.ИзменениеСостоянияМаны("расходование", (uint)(Стоимость * Множитель_Стоимости));
     Цель.ОтнятьЗдоровье(50);
 }
 public Заморозка(Персонаж_с_магией Источник, Враги Цель, double Множитель_Стоимости)
 {
     Источник.ИзменениеСостоянияМаны("расходовние", (uint)(Стоимость * Множитель_Стоимости));
     Цель.IsFrozen = true;
 }
 public Воскрешение(Персонаж_с_магией Источник, Персонаж Цель, double Множитель_Стоимости)
 {
     Источник.ИзменениеСостоянияМаны("расходование", (uint)(Стоимость * Множитель_Стоимости));
     Цель.ИзменениеСостоянияЗдоровья("лечение", 50);
 }