Exemple #1
0
        public GameManager(IAudio audio, int startLevel)
        {
            status = GameManagerStatus.None;
            random = new Random();
            title = null;
            game = null;
            gameOver = null;
            ranking = null;
            level = 0;
            currentScore = 0;
            playerLeft = 0;
            bossEndCount = 0;
            top10Players = new TopPlayerInfo[10];

            this.startLevel = startLevel;

            for (int i = 0; i < 10; i++)
            {
                top10Players[i] = new TopPlayerInfo((10 - i) * 1000, 10 - i, "_NONAME_");
            }
            exiting = false;

            this.audio = audio;
        }
Exemple #2
0
 public void Update(IInput input)
 {
     switch (status)
     {
         case GameManagerStatus.None:
             title = new Title(random);
             status = GameManagerStatus.Title;
             audio.PlayMusic(Music.Title);
             break;
         case GameManagerStatus.Title:
             title.Update(input.UserCommand);
             if (title.ExitGame)
             {
                 exiting = true;
             }
             else if (title.StartGame)
             {
                 title = null;
                 level = startLevel;
                 currentScore = 0;
                 playerLeft = INIT_PLAYER_LEFT;
                 game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                 status = GameManagerStatus.Game;
                 if (!game.IsBossStage)
                 {
                     audio.PlayMusic(Music.Game);
                 }
                 else
                 {
                     audio.PlayMusic(Music.Boss);
                 }
             }
             else if (title.Ranking)
             {
                 title = null;
                 ranking = new Ranking(top10Players, random);
                 status = GameManagerStatus.Ranking;
             }
             break;
         case GameManagerStatus.Game:
             game.Update(input.GameCommand);
             foreach (Sound sound in game.CurrentSounds)
             {
                 audio.PlaySound(sound);
             }
             if (game.ReturnToTitle)
             {
                 game = null;
                 title = new Title(random);
                 status = GameManagerStatus.Title;
                 audio.PlayMusic(Music.Title);
             }
             else if (game.GameOver)
             {
                 if (playerLeft > 0)
                 {
                     currentScore = game.Score;
                     playerLeft--;
                     game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                 }
                 else
                 {
                     currentScore = game.Score;
                     gameOver = new GameOver(currentScore > top10Players[9].Score, false);
                     status = GameManagerStatus.GameOver;
                     if (currentScore > top10Players[9].Score)
                     {
                         audio.PlayMusic(Music.NameEntry);
                     }
                     else
                     {
                         audio.StopMusic();
                     }
                 }
             }
             else if (game.GoingToNextStage)
             {
                 if (!game.IsBossStage)
                 {
                     currentScore = game.Score;
                     level++;
                     game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                     if (game.IsBossStage)
                     {
                         audio.PlayMusic(Music.Boss);
                     }
                 }
                 else
                 {
                     bossEndCount = 0;
                     status = GameManagerStatus.BossEnd;
                     audio.StopMusic();
                 }
             }
             else if (game.EndingGameOver)
             {
                 currentScore = game.Score;
                 gameOver = new GameOver(currentScore > top10Players[9].Score, true);
                 status = GameManagerStatus.GameOver;
                 if (currentScore > top10Players[9].Score)
                 {
                     audio.PlayMusic(Music.NameEntry);
                 }
                 else
                 {
                     audio.StopMusic();
                 }
             }
             break;
         case GameManagerStatus.BossEnd:
             if (bossEndCount < 30)
             {
                 bossEndCount++;
             }
             if (bossEndCount == 30)
             {
                 currentScore = game.Score;
                 level++;
                 game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                 status = GameManagerStatus.Game;
                 audio.PlayMusic(Music.Game);
             }
             break;
         case GameManagerStatus.GameOver:
             game.Update(GameCommand.Empty);
             gameOver.Update(input.UserCommand);
             foreach (Sound sound in gameOver.CurrentSounds)
             {
                 audio.PlaySound(sound);
             }
             if (gameOver.ReturnToTitle)
             {
                 if (currentScore > top10Players[9].Score)
                 {
                     AddNewTopPlayer(new TopPlayerInfo(currentScore, level, gameOver.Name));
                 }
                 game = null;
                 gameOver = null;
                 ranking = new Ranking(top10Players, random);
                 status = GameManagerStatus.Ranking;
                 audio.StopMusic();
             }
             break;
         case GameManagerStatus.Ranking:
             ranking.Update(input.UserCommand);
             if (ranking.ReturnToTitle)
             {
                 ranking = null;
                 title = new Title(random);
                 status = GameManagerStatus.Title;
                 audio.PlayMusic(Music.Title);
             }
             break;
     }
 }
Exemple #3
0
        public void Update(IInput input)
        {
            switch (status)
            {
            case GameManagerStatus.None:
                title  = new Title(random);
                status = GameManagerStatus.Title;
                audio.PlayMusic(Music.Title);
                break;

            case GameManagerStatus.Title:
                title.Update(input.UserCommand);
                if (title.ExitGame)
                {
                    exiting = true;
                }
                else if (title.StartGame)
                {
                    title        = null;
                    level        = startLevel;
                    currentScore = 0;
                    playerLeft   = INIT_PLAYER_LEFT;
                    game         = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                    status       = GameManagerStatus.Game;
                    if (!game.IsBossStage)
                    {
                        audio.PlayMusic(Music.Game);
                    }
                    else
                    {
                        audio.PlayMusic(Music.Boss);
                    }
                }
                else if (title.Ranking)
                {
                    title   = null;
                    ranking = new Ranking(top10Players, random);
                    status  = GameManagerStatus.Ranking;
                }
                break;

            case GameManagerStatus.Game:
                game.Update(input.GameCommand);
                foreach (Sound sound in game.CurrentSounds)
                {
                    audio.PlaySound(sound);
                }
                if (game.ReturnToTitle)
                {
                    game   = null;
                    title  = new Title(random);
                    status = GameManagerStatus.Title;
                    audio.PlayMusic(Music.Title);
                }
                else if (game.GameOver)
                {
                    if (playerLeft > 0)
                    {
                        currentScore = game.Score;
                        playerLeft--;
                        game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                    }
                    else
                    {
                        currentScore = game.Score;
                        gameOver     = new GameOver(currentScore > top10Players[9].Score, false);
                        status       = GameManagerStatus.GameOver;
                        if (currentScore > top10Players[9].Score)
                        {
                            audio.PlayMusic(Music.NameEntry);
                        }
                        else
                        {
                            audio.StopMusic();
                        }
                    }
                }
                else if (game.GoingToNextStage)
                {
                    if (!game.IsBossStage)
                    {
                        currentScore = game.Score;
                        level++;
                        game = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                        if (game.IsBossStage)
                        {
                            audio.PlayMusic(Music.Boss);
                        }
                    }
                    else
                    {
                        bossEndCount = 0;
                        status       = GameManagerStatus.BossEnd;
                        audio.StopMusic();
                    }
                }
                else if (game.EndingGameOver)
                {
                    currentScore = game.Score;
                    gameOver     = new GameOver(currentScore > top10Players[9].Score, true);
                    status       = GameManagerStatus.GameOver;
                    if (currentScore > top10Players[9].Score)
                    {
                        audio.PlayMusic(Music.NameEntry);
                    }
                    else
                    {
                        audio.StopMusic();
                    }
                }
                break;

            case GameManagerStatus.BossEnd:
                if (bossEndCount < 30)
                {
                    bossEndCount++;
                }
                if (bossEndCount == 30)
                {
                    currentScore = game.Score;
                    level++;
                    game   = Game.CreateGame(random, level, top10Players[0].Score, currentScore, playerLeft);
                    status = GameManagerStatus.Game;
                    audio.PlayMusic(Music.Game);
                }
                break;

            case GameManagerStatus.GameOver:
                game.Update(GameCommand.Empty);
                gameOver.Update(input.UserCommand);
                foreach (Sound sound in gameOver.CurrentSounds)
                {
                    audio.PlaySound(sound);
                }
                if (gameOver.ReturnToTitle)
                {
                    if (currentScore > top10Players[9].Score)
                    {
                        AddNewTopPlayer(new TopPlayerInfo(currentScore, level, gameOver.Name));
                    }
                    game     = null;
                    gameOver = null;
                    ranking  = new Ranking(top10Players, random);
                    status   = GameManagerStatus.Ranking;
                    audio.StopMusic();
                }
                break;

            case GameManagerStatus.Ranking:
                ranking.Update(input.UserCommand);
                if (ranking.ReturnToTitle)
                {
                    ranking = null;
                    title   = new Title(random);
                    status  = GameManagerStatus.Title;
                    audio.PlayMusic(Music.Title);
                }
                break;
            }
        }