예제 #1
0
 private void OnShotMissed(ShotMissed e)
 {
     _shots.Add(new MissedShotVisual(
                    new RectangleTexture(UiColors.Gunshot).Create(),
                    CalculateTransform(e.Attacker, e.Target, (_random.Next(0, 1) == 0 ? -1 : 1) * _random.Next(2, 5) * 0.1),
                    e.Attacker.CurrentTile.Position));
 }
예제 #2
0
 public Task Handle(ShotMissed message)
 {
     _gameDisplay.DisplayMissed();
     _store.AddMiss(message.Target.X, message.Target.Y);
     _gameDisplay.DisplayBoard(_store.ShotsTaken, _store.BoardSize);
     return(Task.CompletedTask);
 }
예제 #3
0
 private void OnShotMissed(ShotMissed e)
 {
     if (e.Target.Equals(_owner))
     {
         Add("Miss");
     }
 }
예제 #4
0
        /// <summary>
        /// Выстрелить по этому игроку.
        /// </summary>
        /// <param name="cell"></param>
        protected virtual void Hit(Cell cell)
        {
            bool missedShot = true;

            foreach (var ship in ships)
            {
                int damagedBlock = ship.GetBlockIndex(cell);
                if (damagedBlock > -1)
                {
                    ship.Hit(damagedBlock);
                    missedShot = false;
                    if (ship.IsAlive())
                    {
                        ShipBlockDamaged?.Invoke(this, cell);
                    }
                    else
                    {
                        ships.Remove(ship);
                        ShipDied?.Invoke(this, ship);
                        if (GetCountAliveShips() == 0)
                        {
                            AllShipsDied?.Invoke(this);
                        }
                    }

                    break;
                }
            }
            if (missedShot)
            {
                ShotMissed?.Invoke(this, cell);
                BindStep();
            }
            else
            {
                EnemyPlayer.BindStep();
            }
        }
예제 #5
0
 private void OnShotMissed(ShotMissed obj)
 {
     Sound.SoundEffect($"SFX/shot-miss-1.wav", 0.8f).Play();
 }
예제 #6
0
 private void Apply(ShotMissed e)
 {
     this._shotsTaken.Add(e.Target);
 }