//--------------------------------------------------------------------------------------------------------------------------------------------------- // // Copyright (C)2007 DarkWynter Studios. All rights reserved. // //--------------------------------------------------------------------------------------------------------------------------------------------------- // {Contact : darkwynter.com for licensing information //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynter.Engine.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; using DarkWynter.Stream; /// /// Controls all of the menu screen and menu items /// public class MenuSystem { /// /// List of menu screens /// public 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_Engine.AttackType.NONE); // Check if the FPS counter was toggled //if (DarkWynterGame.menuController.gameInput.fpsToggleButton) //{ // Statics_Engine.SystemSettings.enableFPSDisplay = !Statics_Engine.SystemSettings.enableFPSDisplay; //} for (int i = 0; i < menuScreens.Count; i++) { // Update appropriate menu screen if (Statics_Engine.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_Stream.RenderSettings.graphics.GraphicsDevice.Clear(Color.Black); Statics_Stream.RenderSettings.graphics.GraphicsDevice.Viewport = Statics_Stream.RenderSettings.defaultViewport; // Begin Sprite Batching for Menusystem spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.None); // Begin Screen Saver Wrapper if (Statics_Engine.SystemSettings.screenSaverTimer.ElapsedMilliseconds > Statics_Engine.SystemSettings.ANTI_BURN_TIMER) { screenSaver.AntiBurnScreenSaverBegin(spriteBatch); } for (int i = 0; i < menuScreens.Count; i++) { // Update appropriate menu screen if (Statics_Engine.SystemSettings.gameState == menuScreens[i].GetEngineState()) { menuScreens[i].Draw(spriteBatch); break; } } // End Screen Saver Wrapper if (Statics_Engine.SystemSettings.screenSaverTimer.ElapsedMilliseconds > Statics_Engine.SystemSettings.ANTI_BURN_TIMER) { screenSaver.AntiBurnScreenSaverEnd(spriteBatch); } spriteBatch.End(); } } }