//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// 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();
}
}
}