private void moveLevel()
        {
            m_CurrentLevel++;

            SpaceInvadersServices.ClearComponents <Enemy>(this);
            SpaceInvadersServices.ClearComponents <Barrier>(this);
            SpaceInvadersServices.ClearComponents <Bullet>(this);
            EnemiesMatrix enemyMatrix  = SpaceInvadersServices.GetEnemeiesMatrixComponent(this);
            BarrierGroup  barrierGroup = SpaceInvadersServices.GetBarrierGroupComponent(this);

            enemyMatrix.Initialize();
            barrierGroup.Initialize();
            SpaceInvadersServices.ChangeBarriersGroupVerticalPosition(this, barrierGroup);

            int state = m_CurrentLevel % 5;

            if (state >= 2 && state <= 5)
            {
                enemyMatrix.AddEnemiesColumn();
                enemyMatrix.IncraseEnemiesRandomShotting();
                enemyMatrix.AddPointsForEnemyKilling(30);
                barrierGroup.StartJumpingBarriers();
                barrierGroup.Speedup(0.05f);
                if (state == 2)
                {
                    barrierGroup.ChangeToDefaultJumpingSpeed();
                }
            }
            else
            {
                barrierGroup.StopJumpingBarriers();
            }

            this.ScreensManager.SetCurrentScreen(new MoveStageScreen(this.Game, m_CurrentLevel));
        }
        public static BarrierGroup GetBarrierGroupComponent(GameScreen i_GameScreen)
        {
            BarrierGroup barrierGroup = null;

            foreach (GameComponent component in i_GameScreen)
            {
                barrierGroup = component as BarrierGroup;
                if (barrierGroup != null)
                {
                    break;
                }
            }

            return(barrierGroup);
        }
        public override void Initialize()
        {
            initilizeOnFirstRun();
            SpritesFactory.CreateSprite(this, SpritesFactory.eSpriteType.MotherShip);
            SpritesFactory.CreateSprite(this, SpritesFactory.eSpriteType.SpaceBackground);
            EnemiesMatrix enemiesMatrix = new EnemiesMatrix(this);
            BarrierGroup  barrierGroup  = new BarrierGroup(this);

            m_MultiPlayerConfiguration = SpaceInvadersServices.GetMultiPlayerConfiguration(this.Game);
            m_MultiPlayerConfiguration.CreatePlayers(this);
            m_WonLevelSound = SoundFactory.CreateSound(this, SoundFactory.eSoundType.LevelWin);
            m_GameOverSound = SoundFactory.CreateSound(this, SoundFactory.eSoundType.GameOver);
            this.Add(enemiesMatrix);
            this.Add(barrierGroup);
            base.Initialize();
            SpaceInvadersServices.ChangeBarriersGroupVerticalPosition(this, barrierGroup);
        }
        public static void ChangeBarriersGroupVerticalPosition(GameScreen i_GameScreen, BarrierGroup i_BarrierGroup)
        {
            SpaceShip spaceShip = null;
            List <PlayerSpaceInvaders> allPlayers = getAllPlayers(i_GameScreen.Game);
            float y;

            if (allPlayers.Count > 0)
            {
                spaceShip = allPlayers[0].SpaceShip;
                y         = spaceShip.Position.Y - (spaceShip.Width * 2);
                i_BarrierGroup.ChangeGroupPositionY(y);
            }
        }