Esempio n. 1
0
        /// <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();
        }