/// <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); }