Example #1
0
        void _firstTimer_Completed(object sender, object e)
        {
            if (Duration-- >= 0)
            {
                UnitGenerator.AddBufDemageOne(_oldCall, _bullet, _bullet.DemageMagic);

                for (int i = 0; i < _oldCall.IUnits.Count; i++)
                {
                    var item = _oldCall.IUnits[i];
                    if (item != null && item.GroupType != _unit.GroupType)
                    {
                        item.GatDamage(0, _bullet.DemageMagic, 0, _unit);

                        Buff buff = item.Buffs.FirstOrDefault(p => p.Name == "SniperShrapnel");
                        if (buff != null)
                        {
                            buff.Duration = 2;
                        }
                        else
                        {
                            Buff alchBuff = new Buff()
                            {
                                SpeedSlow = _bullet.SpeedSlow,
                                Duration  = 2,
                                Name      = "SniperShrapnel"
                            };
                            item.Buffs.Add(alchBuff);
                        }
                    }
                }
                _firstTimer.Begin();
            }
            else
            {
                _firstTimer.Completed -= _firstTimer_Completed;
                _firstTimer            = null;
                ///Удаление тучки
                (_bullet.GameObject.View as IGameControl).Remove(_map.MapCanvas);
                ///Удаляем из масива всех объектов
                _map.GameObjectInCall.Remove(_bullet.GameObject);
                _oldCall.Bullet.Remove(_bullet);
            }
        }
Example #2
0
        void _firstTimer_Completed(object sender, object e)
        {
            _firstTimer.Completed -= _firstTimer_Completed;
            _firstTimer            = null;
            //  if (_unit is Player)
            //   _unit = _unit;
            ///Так как это юнит мы убираем флаг юзед со старой ячейку
            var callOld = _map.Calls.Single(p => p.IndexLeft == _unit.PositionX && p.IndexTop == _unit.PositionY);

            ///Удаляем из старой ячейки ссылку на юнит
            callOld.IUnits.Remove(_unit);

            if (!callOld.IUnits.Any(p => p.GameObject.EnumCallType == EnumCallType.UnitBlock))
            {
                ///Делаем ячейку пустой
                callOld.Used = false;
            }

            _unit.PositionX = _xNew;
            _unit.PositionY = _yNew;
            ///Получаем новую ячейку
            var callNew = _map.Calls.Single(p => p.IndexLeft == _unit.PositionX && p.IndexTop == _unit.PositionY);

            if (!_unit.Dead)
            {
                //if (_unit is Player)
                //    callNew = callNew;

                ///Добавляем в нее ссылку на юнит
                callNew.IUnits.Add(_unit);
                ///Убераем то что колонка использывалась, теперь ставим что она все время используется
                callNew.Used = true;
            }
            ///Проверим или получил юнит урон в новой ячейке
            foreach (var item in callNew.Bullet)
            {
                if (!item.BuffDemage)
                {
                    if (!item.IsRoket)
                    {
                        item.Exept = UnitGenerator.AddDamage(callNew, item);
                    }
                    else
                    {
                        ///Только попадение, урон не наносится
                        item.Exept = UnitGenerator.AddNullDemage(callNew, item);
                    }

                    if (item.Exept)
                    {
                        UnitGenerator.AddStuneTwo(callNew, item, item.StunDuration, item.StunDuration);
                    }
                }
                else if (!item.IsRoket)///Значит баф урон, и не бомба
                {
                    UnitGenerator.AddBufDemageOne(callNew, item, item.DemageMagic);
                }
            }

            callNew.Using = false;

            Player player = _unit as Player;

            if (player != null && callNew.Item.Count > 0)
            {
                int       playerItemCount = player.Items.Count;
                ItemClass addedItem       = callNew.Item.FirstOrDefault();

                ///Смотрим можно ли данный итем во что то собрать
                ItemClass newItem = UnitGenerator.CreateNewItem(player, addedItem);
                if (newItem != null)
                {
                    ///Можно собрать
                    ///Разрешаем пропустить итем
                    playerItemCount = 0;
                    addedItem       = newItem;
                }

                if (addedItem.Bonus)///Если итем бонус, то пропустить его тоже
                {
                    playerItemCount = 0;
                }

                if (playerItemCount < 4)
                {
                    _map.MapCanvas.Children.Remove(callNew.Item.FirstOrDefault().View);
                    ///Подбираем итем
                    player.AddItem(addedItem);
                    callNew.Item.Remove(callNew.Item.FirstOrDefault());
                }
            }
        }
Example #3
0
        /// <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_Jinx_Zap_Roket arrow = new UC_Jinx_Zap_Roket();
                    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.DemageMagic = _bullet.DemageMagic;
                    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.AddBufDemageOne(callBoom, bullArrow, bullArrow.DemageMagic);
                    //UnitGenerator.AddStune(callBoom, bullArrow, _bullet.StunDuration);

                    _boom.Add(bullArrow);
                }
            }

            _secondTimer = new Storyboard()
            {
                Duration = TimeSpan.FromSeconds(0.35)
            };
            _secondTimer.Completed += _secondTimer_Completed;
            _secondTimer.Begin();
        }