//--------------------------------------------------------------------------------------------------------------------------------------------------- // // Copyright (C)2007 DarkWynter Studios. All rights reserved. // //--------------------------------------------------------------------------------------------------------------------------------------------------- // {Contact : darkwynter.com for licensing information //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynterEngine.Menus { #region Using Statements using System; using System.Collections.Generic; using System.Diagnostics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; using System.Threading; using System.Xml; #endregion using Audio; using Globals; using ObjectLib; using Controllers; using Utilities; using Menus; /// /// Controls all of the menu screen and menu items /// public class MenuSystem { protected List menuScreens = new List(); /// /// Constructor /// public MenuSystem() { } /// /// Updates the controller and then the current active screen /// /// Current Object Library public virtual void Update(ObjectLibrary objectLibrary) { // Update Controller Input DarkWynterGame.menuController.Update(Enums.AttackType.NONE); // Check if the FPS counter was toggled if (DarkWynterGame.menuController.gameInput.fpsToggleButton) { Statics.SystemSettings.enableFPSDisplay = !Statics.SystemSettings.enableFPSDisplay; } for (int i = 0; i < menuScreens.Count; i++) { // Update appropriate menu screen if (Statics.SystemSettings.gameState == menuScreens[i].GetEngineState()) { menuScreens[i].Update(objectLibrary); break; } } } /// /// Draws the appropriate screen /// /// SpriteBatch used to draw /// Current ScreenSaver public virtual void Draw(SpriteBatch spriteBatch, ScreenSaver screenSaver) { Statics.SystemSettings.graphics.GraphicsDevice.Clear(Color.Black); Statics.SystemSettings.graphics.GraphicsDevice.Viewport = Statics.RenderSettings.defaultViewport; // Begin Sprite Batching for Menusystem spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Texture, SaveStateMode.None); // Begin Screen Saver Wrapper if (Statics.SystemSettings.screenSaverTimer.ElapsedMilliseconds > Statics.SystemSettings.ANTI_BURN_TIMER) { screenSaver.AntiBurnScreenSaverBegin(spriteBatch); } for (int i = 0; i < menuScreens.Count; i++) { // Update appropriate menu screen if (Statics.SystemSettings.gameState == menuScreens[i].GetEngineState()) { menuScreens[i].Draw(spriteBatch); break; } } // End Screen Saver Wrapper if (Statics.SystemSettings.screenSaverTimer.ElapsedMilliseconds > Statics.SystemSettings.ANTI_BURN_TIMER) { screenSaver.AntiBurnScreenSaverEnd(spriteBatch); } spriteBatch.End(); } } }