Example #1
0
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            //drawing code here
#if LEVEL_EDITOR
            GraphicsDevice.SetRenderTarget(nativeRenderTarget);
            GraphicsDevice.Clear(Color.Black);
            spriteBatch.Begin();
            levelEditor.Draw(spriteBatch, tilesPerRow, infoBoxHeightPx, editorWidth, editorHeight);
            PlatformsManager.platformsRoomManagers[levelEditor.currentRoomNumber].Draw(spriteBatch);
            MouseState mouseState = Mouse.GetState();
            spriteBatch.DrawString(spriteFont, (mouseState.X / 4 + (int)Camera.position.X) + "," + (mouseState.Y / 4 + (int)Camera.position.Y), new Vector2(10, 10), Color.Blue);
            spriteBatch.End();
            GraphicsDevice.SetRenderTarget(null);
            spriteBatch.Begin(samplerState: SamplerState.PointClamp);
            spriteBatch.Draw(nativeRenderTarget, viewportRectangle, Color.White);
            levelEditor.DrawText(spriteBatch, infoBoxHeightPx);

            spriteBatch.End();
#else
            //draw only relevant classes depending on the state of the game
            spriteBatch.Begin();
            switch (currentGameState)
            {
            case GameStates.titleScreen:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.titleScreen].Draw(spriteBatch);
                break;

            case GameStates.controls:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.controls].Draw(spriteBatch);
                break;

            case GameStates.achievements:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.achievements].Draw(spriteBatch);
                Achievements.Draw(spriteBatch);
                break;

            case GameStates.credits:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.credits].Draw(spriteBatch);
                break;

            case GameStates.intro:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.intro].Draw(spriteBatch);
                break;

            case GameStates.playing:
                GraphicsDevice.SetRenderTarget(nativeRenderTarget);
                GraphicsDevice.Clear(Color.Black);
                Camera.Draw(spriteBatch);
                RoomsManager.Draw(spriteBatch);
                CollectablesManager.Draw(spriteBatch);
                Player.DrawGUI(spriteBatch);
                break;

            case GameStates.pause:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.pause].Draw(spriteBatch);
                break;

            case GameStates.dead:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                Camera.Draw(spriteBatch);
                RoomsManager.Draw(spriteBatch);
                PlayerDeathManager.Draw(spriteBatch);
                break;

            case GameStates.ending:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.ending].Draw(spriteBatch);
                break;

            case GameStates.confirmQuit:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                MenusManager.menus[(int)MenusManager.MenuType.confirmQuit].Draw(spriteBatch);
                break;

            case GameStates.doubleJump:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                Camera.Draw(spriteBatch);
                RoomsManager.Draw(spriteBatch);
                MenusManager.menus[(int)MenusManager.MenuType.doubleJump].Draw(spriteBatch);
                break;

            case GameStates.wallJump:
                GraphicsDevice.SetRenderTarget(renderTarget_zoom1);
                GraphicsDevice.Clear(Color.Black);
                Camera.Draw(spriteBatch);
                RoomsManager.Draw(spriteBatch);
                MenusManager.menus[(int)MenusManager.MenuType.wallJump].Draw(spriteBatch);
                break;
            }

            spriteBatch.End();

            GraphicsDevice.SetRenderTarget(null);
            spriteBatch.Begin(samplerState: SamplerState.PointClamp);
            if (currentGameState == GameStates.playing)
            {
                spriteBatch.Draw(nativeRenderTarget, viewportRectangle, Color.White);
            }
            else
            {
                spriteBatch.Draw(renderTarget_zoom1, viewportRectangle, Color.White);
            }

            spriteBatch.End();
#endif
            base.Draw(gameTime);
        }