/// <summary>
        /// Этот метод наносит урон
        /// </summary>
        private void BoomMethod(int x, int y)
        {
            ///Если колба попала или должна исчезнуть
            ///Берем все ячейки вокруг колбы
            List <Point> roundPoint = UnitGenerator.RoundNumber(x, y);

            roundPoint.Add(new Point(x, y));
            ///Теперь рисуем взрыв
            for (int i = 0; i < roundPoint.Count; i++)
            {
                Map_Cell callBoom = _map.Calls.FirstOrDefault(p => p.IndexLeft == roundPoint[i].X && p.IndexTop == roundPoint[i].Y);
                if (callBoom != null && !callBoom.Block)
                {
                    UC_Alchemist_UnstableConcoction arrow = new UC_Alchemist_UnstableConcoction();
                    if (i == 0)
                    {
                        arrow.ChengAngel(EAngel.Left);
                    }
                    else if (i == 1)
                    {
                        arrow.ChengAngel(EAngel.Right);
                    }
                    else if (i == 2)
                    {
                        arrow.ChengAngel(EAngel.Top);
                    }
                    else if (i == 3)
                    {
                        arrow.ChengAngel(EAngel.Bottom);
                    }
                    else if (i == 4)
                    {
                        ///Центральная ячейка
                        arrow.ChengAngelCenter();
                    }

                    Bullet bullArrow = new Bullet();
                    bullArrow.GameObject = new Game_Object_In_Call()
                    {
                        EnumCallType = EnumCallType.Bullet,
                        View         = arrow
                    };
                    bullArrow.UnitUsed   = _bullet.UnitUsed;
                    bullArrow.PositionX  = (int)roundPoint[i].X;
                    bullArrow.PositionY  = (int)roundPoint[i].Y;
                    bullArrow.Speed      = 0;
                    bullArrow.DemagePhys = _bullet.DemagePhys;
                    bullArrow.CurrentMap = _map;
                    bullArrow.Angel      = _bullet.UnitUsed.Angel;
                    bullArrow.Range      = 0;

                    ///И его же добавим в масив всех объектов
                    _map.GameObjectInCall.Add(bullArrow.GameObject);
                    Canvas.SetLeft(bullArrow.GameObject.View, bullArrow.PositionX * 50);
                    Canvas.SetTop(bullArrow.GameObject.View, bullArrow.PositionY * 50);
                    ///Отображение
                    _map.MapCanvas.Children.Add(bullArrow.GameObject.View);

                    UnitGenerator.AddDamage(callBoom, bullArrow);
                    UnitGenerator.AddStune(callBoom, bullArrow, _bullet.StunDuration);

                    _boom.Add(bullArrow);
                }
            }

            _secondTimer = new Storyboard()
            {
                Duration = TimeSpan.FromSeconds(0.5)
            };
            _secondTimer.Completed += _secondTimer_Completed;
            _secondTimer.Begin();
        }
示例#2
0
        /// <summary>
        /// Запуск банки
        /// </summary>
        void ShutUnstableConcoction()
        {
            _imageTile.ChengImage("SP_Alchemist_UnstableConcoction");
            _startShut = true;
            ///Создаем визуальный объект колбы
            UC_Alchemist_UnstableConcoction arrow = new UC_Alchemist_UnstableConcoction();


            Bullet bullArrow = new Bullet();

            bullArrow.GameObject = new Game_Object_In_Call()
            {
                EnumCallType = EnumCallType.Bullet,
                View         = arrow
            };
            bullArrow.UnitUsed  = _unit;
            bullArrow.PositionX = _unit.PositionX;
            bullArrow.PositionY = _unit.PositionY;
            bullArrow.Speed     = 0.25;

            ///Магический урон зависит от прокача стрел
            //bullArrow.DemageMagic = 5 * (int)property;

            if (LevelCast == 1)
            {
                bullArrow.DemagePhys = _unit.Demage + 3 * _power;
            }
            else if (LevelCast == 2)
            {
                bullArrow.DemagePhys = _unit.Demage + 6 * _power;
            }
            else if (LevelCast == 3)
            {
                bullArrow.DemagePhys = _unit.Demage + 9 * _power;
            }

            if (_power > 3)
            {
                bullArrow.StunDuration = 3;
            }
            else
            {
                bullArrow.StunDuration = _power * 1;
            }

            bullArrow.CurrentMap = _map;
            bullArrow.Angel      = _unit.Angel;
            bullArrow.Range      = _power * 2 - 1;

            bullArrow.Spells.Add(new SPB_Alchemist_UnstableConcoction()
            {
                Name = "Fly"
            });

            ///И его же добавим в масив всех объектов
            _map.GameObjectInCall.Add(bullArrow.GameObject);

            Canvas.SetLeft(bullArrow.GameObject.View, bullArrow.PositionX * 50);
            Canvas.SetTop(bullArrow.GameObject.View, bullArrow.PositionY * 50);
            ///Отображение
            _map.MapCanvas.Children.Add(bullArrow.GameObject.View);

            bullArrow.UseSpall("Fly");
        }