void _firstTimer_Completed(object sender, object e) { _power++; _firstTimer.Completed -= _firstTimer_Completed; _firstTimer = null; if (_power == 2 || _power == 4 || _power == 6 || _power == 8) { _bullet.DemageMagic += _bullet.BonusDemage; _bullet.Speed -= 0.06; } Map_Cell oldCall = _map.Calls.Single(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY); oldCall.Bullet.Remove(_bullet); /////Сначала проверяем старую ячейку на попадение //Exept(); _bullet.PositionX = _xNew; _bullet.PositionY = _yNew; Exept(); Map_Cell newCall = _map.Calls.FirstOrDefault(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY); if (_bullet.Exept == true) { if (newCall != null && !newCall.Block) { UnitGenerator.AddStune(newCall, _bullet, _bullet.StunDuration); } (_bullet.GameObject.View as IGameControl).Remove(_map.MapCanvas); ///Было попадение, анимация исчезновения стрелы //_bullet.GameObject.View.Visibility = Visibility.Collapsed; ///Было попадение стрела исчезает ///Удаляем из масива всех объектов _map.GameObjectInCall.Remove(_bullet.GameObject); BoomMethod(_bullet.PositionX, _bullet.PositionY); //_map.MapCanvas.Children.Remove(_bullet.GameObject.View); } else { newCall.Bullet.Add(_bullet); } }
void _firstTimer_Completed(object sender, object e) { _firstTimer.Completed -= _firstTimer_Completed; _firstTimer = null; Map_Cell oldCall = _map.Calls.Single(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY); oldCall.Bullet.Remove(_bullet); /////Сначала проверяем старую ячейку на попадение //Exept(); _bullet.PositionX = _xNew; _bullet.PositionY = _yNew; Exept(); Map_Cell newCall = _map.Calls.FirstOrDefault(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY); if (_bullet.Exept == true) { if (_bullet.SproutHealth > 0 && newCall != null && newCall.IUnits.Count(p => p.UnitType != EUnitType.Grass) > 0)// Значет нужно создать куст { CreateSprout(newCall); } if (newCall != null && !newCall.Block) { UnitGenerator.AddStune(newCall, _bullet, _bullet.StunDuration); } (_bullet.GameObject.View as IGameControl).Remove(_map.MapCanvas); ///Было попадение, анимация исчезновения стрелы //_bullet.GameObject.View.Visibility = Visibility.Collapsed; ///Было попадение стрела исчезает ///Удаляем из масива всех объектов _map.GameObjectInCall.Remove(_bullet.GameObject); //_map.MapCanvas.Children.Remove(_bullet.GameObject.View); } else { newCall.Bullet.Add(_bullet); } }
/// <summary> /// Этот метод наносит урон /// </summary> private void BoomMethod(int x, int y) { _isBoom = true; ///Если ракета попала или должна исчезнуть ///Берем все ячейки вокруг колбы List <Point> roundPoint = UnitGenerator.BigRoundNumber(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_Super_Mega_Death_Rocket arrow = new UC_Super_Mega_Death_Rocket(); if (i == 0 || i == 1) { arrow.ChengAngel(EAngel.Left); } else if (i == 2 || i == 3) { arrow.ChengAngel(EAngel.Right); } else if (i == 4 || i == 5) { arrow.ChengAngel(EAngel.Top); } else if (i == 6 || i == 7) { arrow.ChengAngel(EAngel.Bottom); } else if (i == 8) { ///Центральная ячейка 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; if (i != 8) { bullArrow.DemageMagic = _bullet.DemageMagic; } else { bullArrow.DemageMagic = (int)(_bullet.DemageMagic * 0.8); } 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(); }