/// <summary> /// Primary Draw method. Calls all draw methods required for game /// </summary> /// <param name="sp">The <c>SpriteBatch</c> given from the Game class.</param> public static void Draw(SpriteBatch sp) { int xMove = 0; int yMove = 0; switch (CurrentGameState) { case GAMESTATE.ACTIVE: ScreenOffset.X = (Game.PlayerCharacter.SpriteRectangle.X) - XOffset; ScreenOffset.Y = (Game.PlayerCharacter.SpriteRectangle.Y) - YOffset; FindOffset(out xMove, out yMove); sp.Begin(SpriteSortMode.Deferred, transformMatrix: Matrix.CreateTranslation(xMove, yMove, 0)); selectedMap.DrawMap(sp, (spr) => { foreach (MapObject i in extras) { i.Draw(spr); } foreach (AnimatedSprite item in allCharacterSprites) { item.Draw(spr); } foreach (Projectile item in allProjectiles) { item.Draw(spr); } if (Game.PlayerManager.EquippedWeapon != null) { Game.PlayerManager.EquippedWeapon.Sprite.Draw(spr); } }); PlayerInfoUI.Draw(sp); break; case GAMESTATE.MAINMENU: sp.Begin(SpriteSortMode.Deferred); if (MenuHandler.ActiveFullScreenMenu != null) { MenuHandler.DrawFullScreenMenu(sp); } break; case GAMESTATE.PAUSED: ScreenOffset.X = (Game.PlayerCharacter.SpriteRectangle.X) - XOffset; ScreenOffset.Y = (Game.PlayerCharacter.SpriteRectangle.Y) - YOffset; FindOffset(out xMove, out yMove); sp.Begin(SpriteSortMode.Deferred, transformMatrix: Matrix.CreateTranslation(xMove, yMove, 0)); selectedMap.DrawMap(sp, (spr) => { foreach (MapObject i in extras) { i.Draw(spr); } foreach (AnimatedSprite item in allCharacterSprites) { item.Draw(spr); } foreach (Projectile item in allProjectiles) { item.Draw(spr); } if (Game.PlayerManager.EquippedWeapon != null) { Game.PlayerManager.EquippedWeapon.Sprite.Draw(spr); } }); if (DialogueHandler.ActiveDialogue != null) { DialogueHandler.Draw(sp); } if (MenuHandler.ActivePopUp != null) { MenuHandler.DrawPopUpMenu(sp); } PlayerInfoUI.Draw(sp); break; default: throw new NotSupportedException("Game has entered an invalid gamestate: " + CurrentGameState); } sp.End(); }