Example #1
0
        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));
            }
        }