private void OnRespawnTimerTick(object sender, EventArgs e) { if (TanksOnField.Count < MaxTanksOnField()) { var currentRespawnTank = Tanks[_currentRespawnTank]; currentRespawnTank.SetNewStageParameters(); currentRespawnTank.Subscribe(); currentRespawnTank.CheckPosition += Field.GetCheckPositionListener(); currentRespawnTank.Shot += OnShot; currentRespawnTank.Destroyed += OnTankDestroyed; var compTank = currentRespawnTank as CompTank; if (compTank.IsBonus) { compTank.BonusShoot += OnBonusShoot; } foreach (var compTankOnField in TanksOnField) { compTankOnField.CheckPosition += currentRespawnTank.GetCheckPositionListener(); currentRespawnTank.CheckPosition += compTankOnField.GetCheckPositionListener(); } foreach (var playerTank in Field.PlayersManager.Tanks) { playerTank.CheckPosition += compTank.GetCheckPositionListener(); compTank.CheckPosition += playerTank.GetCheckPositionListener(); } TanksOnField.Add(compTank); _currentRespawnTank++; if (_currentRespawnTank == MAX_STAGE_TANKS) { _respawnTimer.Stop(); } GUIForm.Invalidate(new Rectangle(928, 64, 64, 320)); } }