示例#1
0
        public override void LoadContent()
        {
            // Adjust for testing.
            LevelType levelType = MyGame.Manager.ConfigManager.GlobalConfigData.LevelType;

            if (LevelType.Test == levelType)
            {
                // Load level configuration data.
                Byte levelNo = Constants.TEST_LEVEL_NUM - 1;
                MyGame.Manager.LevelManager.LoadLevelConfigData(levelType, levelNo);
                LevelConfigData levelConfigData = MyGame.Manager.LevelManager.LevelConfigData;

                levelType = (LevelType)Enum.Parse(typeof(LevelType), levelConfigData.LevelType, true);
                levelNo   = Convert.ToByte(levelConfigData.LevelNo);
                MyGame.Manager.LevelManager.SetLevelType(levelType);
                MyGame.Manager.LevelManager.SetLevelNo(levelNo);
                LevelType  = MyGame.Manager.LevelManager.LevelType;
                LevelIndex = MyGame.Manager.LevelManager.LevelIndex;
            }
            else
            {
                LevelType  = MyGame.Manager.LevelManager.LevelType;
                LevelIndex = MyGame.Manager.LevelManager.LevelIndex;
                MyGame.Manager.LevelManager.LoadLevelConfigData(LevelType, LevelIndex);
            }

            LevelConfigData = MyGame.Manager.LevelManager.LevelConfigData;

            // Resets all relevant score level info,
            MyGame.Manager.ScoreManager.ResetLevel();

            // Bullets.
            MyGame.Manager.BulletManager.Reset(LevelConfigData.BulletMaxim, LevelConfigData.BulletFrame, LevelConfigData.BulletShoot);

            // Enemies.
            MyGame.Manager.EnemyManager.Reset(LevelType, LevelConfigData);

            // Explosions.
            MyGame.Manager.ExplosionManager.Reset(LevelConfigData.EnemySpawn, LevelConfigData.ExplodeDelay);

            // Sprites.
            MyGame.Manager.SpriteManager.Reset(LevelType, MyGame.Manager.LevelManager.LevelNo);

            levelName = MyGame.Manager.LevelManager.LevelName;
            levelValu = MyGame.Manager.LevelManager.LevelValu;
            base.LoadContent();

            // Must set this after base load content.
            enemyTotalText = EnemyTotal.ToString().PadLeft(3, '0');

            MyGame.Manager.RenderManager.SetGridDelay(LevelConfigData.GridDelay);
            MyGame.Manager.StateManager.SetKillSpace(Vector2.Zero);
            MyGame.Manager.EnemyManager.SpawnAllEnemies();

            MyGame.Manager.SpriteManager.LargeTarget.SetHomeSpot();
            MyGame.Manager.SoundManager.StopMusic();
            SongType songType = MyGame.Manager.SoundManager.GetGameMusic(LevelIndex);

            MyGame.Manager.SoundManager.PlayGameMusic(songType);
        }
示例#2
0
        public void Reset(LevelType theLevelType, LevelConfigData theLevelConfigData)
        {
            levelType       = theLevelType;
            levelConfigData = theLevelConfigData;

            maxEnemySpawn = levelConfigData.EnemySpawn;
            if (maxEnemySpawn <= 0)
            {
                maxEnemySpawn = 1;
            }
            if (maxEnemySpawn > Constants.MAX_ENEMYS_SPAWN)
            {
                maxEnemySpawn = Constants.MAX_ENEMYS_SPAWN;
            }

            EnemyTotal = levelConfigData.EnemyTotal;
            if (EnemyTotal <= 0)
            {
                EnemyTotal = 1;
            }

            // Ensure max total takes precedence over spawn.
            if (maxEnemySpawn > EnemyTotal)
            {
                maxEnemySpawn = EnemyTotal;
            }

            // Reset all enemies but not the list as will clear.
            for (Byte index = 0; index < maxEnemySpawn; index++)
            {
                EnemyList[index].Reset();
            }

            // Important: collections MUST be cleared on Reset() to ensure stability!
            Clear();
            enemyDelays.Clear();
            enemyRotates.Clear();
            enemyMoves.Clear();

            EnemyStart      = 0;
            EnemySpawn      = 0;
            EnemyStartText  = EnemyStart.ToString().PadLeft(3, '0');
            EnemyTotalText  = EnemyTotal.ToString().PadLeft(3, '0');
            EnemyPercentage = 0.0f;
        }