//--------------------------------------------------------------------------------------------------------------------------------------------------- // // 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; using DarkWynter.Engine.Menus.GameScreens; /// /// Controls all of the menu screen and menu items /// public class MenuSystem { private Color _backColor = Color.TransparentBlack; public Color backColor { get { return _backColor; } set { _backColor = value; } } /// /// Screen Saver Shader /// private ScreenSaver screenSaver; /// /// List of menu screens /// public List gameScreens = new List(); /// /// Constructor /// public MenuSystem() { // ScreenSaver for menuSystem screenSaver = new ScreenSaver(); gameScreens.Add(new SorryScreen(Enums_Engine.EngineState.NOT_SUPPORTED)); gameScreens.Add(new OpeningCreditScreen(Enums_Engine.EngineState.CREDIT_SCREEN)); gameScreens.Add(new TitleScreen(Enums_Engine.EngineState.TITLE_SCREEN)); //menuScreens.Add(new GameSetup(Enums_Engine.EngineState.GAME_SETUP)); gameScreens.Add(new Cera1(Enums_Engine.EngineState.INSTRUCT_1)); gameScreens.Add(new Cera2(Enums_Engine.EngineState.INSTRUCT_2)); gameScreens.Add(new Cera3(Enums_Engine.EngineState.INSTRUCT_3)); gameScreens.Add(new Cera4(Enums_Engine.EngineState.INSTRUCT_4)); gameScreens.Add(new Cera5(Enums_Engine.EngineState.INSTRUCT_5)); gameScreens.Add(new InstructionScreen(Enums_Engine.EngineState.INSTRUCTION_SCREEN)); //menuScreens.Add(new GameSetup(Enums_Engine.EngineState.GAME_SETUP)); gameScreens.Add(new LoadingScreen(Enums_Engine.EngineState.LOAD_LEVEL)); gameScreens.Add(new PauseScreen(Enums_Engine.EngineState.GAME_PAUSE)); gameScreens.Add(new GameOverScreen(Enums_Engine.EngineState.FINALIZE_G2LSTUFF)); } /// /// Updates the controller and then the current active screen /// public virtual void Update(ObjectLibrary objectLibrary) { for (int i = 0; i < gameScreens.Count; i++) { // Update appropriate menu screen if (Statics_Engine.SystemSettings.gameState == gameScreens[i].GetEngineState()) { gameScreens[i].Update(objectLibrary); break; } } } /// /// Draws the appropriate screen /// /// SpriteBatch used to draw /// Current ScreenSaver public virtual void Draw(SpriteBatch spriteBatch) { Statics_Stream.RenderSettings.graphics.GraphicsDevice.Clear(this.backColor); 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 < gameScreens.Count; i++) { // Update appropriate menu screen if (Statics_Engine.SystemSettings.gameState == gameScreens[i].GetEngineState()) { gameScreens[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(); } } }