/// <summary>
        /// Купить награду
        /// </summary>
        /// <param name="_pers">Персонаж</param>
        /// <param name="costProperty">Цена награды</param>
        public void BuyReward(Pers _pers, int costProperty)
        {
            StaticMetods.PlaySound(Properties.Resources.coin);
            var editableReward = this;
            ObservableCollection <Revard> shopItems = _pers.ShopItems;

            List <Revard> uni = (_pers.InventoryItems.Union(_pers.ShopItems)).ToList();

            var vc = new ViewChangesClass(uni);

            vc.GetValBefore();

            _pers.GoldProperty -= costProperty;
            _pers.InventoryItems.Add(editableReward);

            vc.GetValAfter();

            var   header            = $"{editableReward.GetTypeOfRevard()} \"{editableReward.NameOfProperty}\" добавлен в инвентарь!!!";
            Brush col               = Brushes.Green;
            var   itemImageProperty = StaticMetods.pathToImage(Path.Combine(Directory.GetCurrentDirectory(), "Images", "good.png"));

            vc.ShowChanges(header, col, itemImageProperty);

            if (editableReward.IsArtefact)
            {
                shopItems.Remove(editableReward);
            }

            StaticMetods.AbillitisRefresh(_pers);
            StaticMetods.refreshShopItems(_pers);
        }
 public override void ImportItems()
 {
     foreach (AbilitiModel ab in ImportList.Where(n => n.IsChecked))
     {
         var fod = PersProperty.Abilitis.FirstOrDefault(n => n.NameOfProperty == ab.NameOfProperty);
         if (fod == null || Cha == null)
         {
             AbilitiModel cc = new AbilitiModel(ab, PersProperty);
             foreach (var needTaskse in ab.NeedTasks)
             {
                 AddOrEditAbilityViewModel.CloneTask(needTaskse, 0, cc, false);
             }
             foreach (var source in cc.NeedTasks.ToList())
             {
                 source.TaskProperty.BeginDateProperty = MainViewModel.selectedTime;
             }
             if (Cha != null)
             {
                 Cha.NeedAbilitisProperty.First(n => n.AbilProperty == cc).KoeficientProperty = 3;
             }
         }
         else
         {
             if (Cha != null)
             {
                 Cha.NeedAbilitisProperty.First(n => n.AbilProperty == fod).KoeficientProperty = 3;
             }
         }
     }
     StaticMetods.AbillitisRefresh(PersProperty);
     StaticMetods.Locator.MainVM.RefreshTasksInMainView();
     PersProperty.SellectedAbilityProperty = PersProperty.Abilitis.LastOrDefault();
 }
        public void ShowChanges(string _header, Brush _color, byte[] _itemImage, string date = "", bool showEndTurn = false, bool isShowEditAb = true, bool isOnlyShowArts = false)
        {
            double beforeExp;
            double afterExp;

            GetChanges(out beforeExp, out afterExp);
            bool isShowInfo = false;
            var  notRev     = ViewChanges.Where(n => n.ТипХарактеристики != "награда").ToList();

            // Показываем сообщения по поводу наград
            var rev = ViewChanges.Where(n => n.ТипХарактеристики == "награда").ToList();

            foreach (viewChangesModel vcm in rev)
            {
                var lv     = new LevelsChangesView();
                var cs     = vcm.ChangeProperty >= 0 ? "+++" : "---";
                var header = $"{cs} {vcm.названиеХарактеристики} {cs}";
                lv.Image.Source      = StaticMetods.getImagePropertyFromImage(vcm.ImageProperty);
                lv.down.Visibility   = Visibility.Collapsed;
                lv.Header.Text       = header;
                lv.Header.Foreground = vcm.ChangeProperty > 0 ? Brushes.Green : Brushes.Red;
                lv.btnOk.Click      += (sender, args) =>
                {
                    lv.Close();
                };
                lv.down.Visibility = Visibility.Collapsed;
                lv.up.Visibility   = Visibility.Collapsed;
                lv.ShowDialog();
            }

            // Показываем изменения.....................................................................................
            // Показываем изменения (навыки)

            if (!StaticMetods.PersProperty.PersSettings.IsNotShowNotifications)
            {
                StaticMetods.ShowItemToPersChanges(_header, _itemImage, notRev.Where(n => n.ТипХарактеристики != "Ранг").ToList(), _color, date, null, showEndTurn, true);
            }
            // StaticMetods.ShowItemToPersChanges(_header, _itemImage, notRev.Where(n => n.ТипХарактеристики != "ХарактеристикаУр" && n.ТипХарактеристики != "НавыкУр" && n.ТипХарактеристики != "Ранг").ToList(), _color, date, null, showEndTurn, true);
            // StaticMetods.ShowItemToPersChanges("Навыки", _itemImage, notRev.Where(n => n.ТипХарактеристики == "НавыкУр").ToList(), _color, date, null, showEndTurn);
            //StaticMetods.ShowItemToPersChanges("Характеристики", _itemImage, notRev.Where(n => n.ТипХарактеристики == "ХарактеристикаУр").ToList(), _color, date, null, showEndTurn);

            //----------------------------------------------------------------------------------
            // Выполненные квесты
            Pers.ShowDoneQwests(ValBefore, ValAfter, true);

            // Изменения уровней навыков
            //Pers.ShowChengeAbLevels(ValBefore, ValAfter, isShowEditAb, false);

            // Изменения уровней характеристик
            //Pers.ShowChangeChaLevels(ValBefore, ValAfter);

            // Показываем изменения (опыт)
            //StaticMetods.ShowItemToPersChanges("Опыт", _itemImage, notRev.Where(n => n.ТипХарактеристики == "Опыт").ToList(), _color, date, null, showEndTurn);

            // Изменение уровней персонажа
            Pers.ShowChangePersLevel(afterExp, beforeExp, notRev, out isShowInfo);
            //-----------------------------------------------------------------------------------

            // Открываем лист персонажа, если новый уровень
            if (isShowInfo)
            {
                StaticMetods.Locator.MainVM.OpenPersWindow(new Tuple <string, string>("Окно персонажа", "Информация"));
            }

            // Редактируем квесты
            //foreach (var aim in qwToEdit)
            //{
            //    StaticMetods.editAim(aim);
            //}
            //// Навыки
            //foreach (var abilitiModel in absToEdit)
            //{
            //    abilitiModel.EditAbility(null, -1, true);
            //}

            StaticMetods.AbillitisRefresh(Pers);
            StaticMetods.RefreshAllQwests(Pers, true, true, true);
        }