private void Exept() { //!_exept if (_map.Calls.Any(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY)) { ///Получим ячейку куда попала пуля var call = _map.Calls.Single(p => p.IndexLeft == _bullet.PositionX && p.IndexTop == _bullet.PositionY); if (!call.Block) { if (!_bullet.Exept) { _bullet.Exept = UnitGenerator.AddNullDemage(call, _bullet); } else { UnitGenerator.AddNullDemage(call, _bullet); } } //else // _bullet.Exept = true; } else { _bullet.Exept = true; } }
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()); } } }