예제 #1
0
        /// <summary>
        /// Draw the whole game
        /// </summary>
        /// <param name="g">Graphics to draw in</param>
        public void Draw(Graphics g)
        {
            if (currentState == GameState.Intro)
            {
                intro.Draw(g);
            }
            else if (currentState == GameState.Menu)
            {
                mainMenu.Draw(g);
                playerScore = new Score();
            }
            else if (currentState == GameState.Play)
            {
                if (playerShip != null)
                {
                    playerShip.Draw(g);

                    playerScore.Draw(g);

                    g.DrawString("Lives : " + playerShip.Lives, ethnocentric15, blackBrush, 2, 2);

                    if (playerBonus != null)
                    {
                        playerBonus.Draw(g, gameSize.Height - 20, gameSize.Width - 20);
                    }
                }
                if (playerMissile != null)
                {
                    playerMissile.Draw(g);
                }

                if (bunkers != null)
                {
                    foreach (Bunker b in bunkers)
                    {
                        b.Draw(g);
                    }
                }

                if (enemyBlock != null)
                {
                    enemyBlock.Draw(g);

                    foreach (Missile m in missiles)
                    {
                        m.Draw(g);
                    }
                }

                if (bonus.Count != 0)
                {
                    foreach (Bonus b in bonus)
                    {
                        b.Draw(g);
                    }
                }
            }
            else if (currentState == GameState.Pause)
            {
                g.DrawImage(space_invaders.Properties.Resources.pause,
                            gameSize.Width / 2 - space_invaders.Properties.Resources.pause.Width / 2,
                            gameSize.Height / 2 - space_invaders.Properties.Resources.pause.Height / 2);
            }
            else if (currentState == GameState.Lost)
            {
                if (lostScreen == null)
                {
                    lostScreen = new Lost();
                    lostScreen.Draw(g);
                }
                else
                {
                    lostScreen.Draw(g);

                    if ((lostScreen.Position.y + lostScreen.imageHeight / 2) > gameSize.Height / 2)
                    {
                        playerScore.DisplayScore(lostScreen, g);
                        lostScreen.Blink();
                        lostScreen.DisplayWinMenu(g);
                    }
                }
            }
            else if (currentState == GameState.Win)
            {
                if (winScreen == null)
                {
                    winScreen = new Win();
                    winScreen.Draw(g);
                }
                else
                {
                    winScreen.Draw(g);

                    if ((winScreen.Position.y + winScreen.imageHeight / 2) > Game.game.gameSize.Height / 2)
                    {
                        playerScore.DisplayScore(winScreen, g);
                        winScreen.Blink();
                        winScreen.DisplayWinMenu(g);
                    }
                }
            }
        }