//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// Copyright (C)2007 DarkWynter Studios. All rights reserved.
//
//---------------------------------------------------------------------------------------------------------------------------------------------------
// {Contact : darkwynter.com for licensing information
//---------------------------------------------------------------------------------------------------------------------------------------------------
namespace DarkWynter.Engine.Controllers
{
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using DarkWynter.Engine;
using DarkWynter.Engine.Globals;
using DarkWynter.Engine.Utilities;
using DarkWynter.Engine.Controllers;
///
/// Menu Controller for getting player inputs for the menu system
///
public class MenuController : Controller
{
///
/// Constructor
///
/// Player index for this controller
public MenuController(int playerNumber)
: base(playerNumber)
{
Add(new KeyboardControl(Keys.Up, MenuUp, 200));
Add(new KeyboardControl(Keys.Down, MenuDown, 200));
Add(new KeyboardControl(Keys.Left, MenuLeft, 200));
Add(new KeyboardControl(Keys.Right, MenuRight, 200));
Add(new KeyboardControl(Keys.Enter, MenuStart, 200));
Add(new KeyboardControl(Keys.Escape, MenuBack, 200));
Add(new KeyboardControl(Keys.F12, FPSToggle, 100));
Add(new KeyboardControl(Keys.OemTilde, CompilerConsoleToggle, 100));
Add(new KeyboardControl(Keys.Escape, Escape, 100));
}
///
/// Constructor for Xbox only controls
///
/// Controller index
public MenuController(PlayerIndex playerIndex)
: base(playerIndex)
{
// Add Xbox controls
}
///
/// Constructor for Xbox and keyboard controls
///
/// Player index in ObjectLibrary
/// Player index for this controller
public MenuController(int player, PlayerIndex playerIndex)
: base(player, playerIndex)
{
Add(new KeyboardControl(Keys.Up, MenuUp, 200));
Add(new KeyboardControl(Keys.Down, MenuDown, 200));
Add(new KeyboardControl(Keys.Left, MenuLeft, 200));
Add(new KeyboardControl(Keys.Right, MenuRight, 200));
Add(new KeyboardControl(Keys.Enter, MenuStart, 100));
//Add(new KeyboardControl(Keys.Escape, MenuBack, 200));
Add(new KeyboardControl(Keys.F12, FPSToggle, 100));
Add(new KeyboardControl(Keys.OemTilde, CompilerConsoleToggle, 100));
//Add(new KeyboardControl(Keys.Escape, Escape, 100));
// Add xbox controls
}
private void Escape(ControllerBoolEventArgs args)
{
DarkWynter.Engine.DarkWynterEngine.DoExit(
new object(),
new System.Windows.Forms.FormClosingEventArgs(new System.Windows.Forms.CloseReason(), false)
);
}
private void CompilerConsoleToggle(ControllerBoolEventArgs args)
{
Statics_Engine.SystemSettings.enableCompilerConsole = !Statics_Engine.SystemSettings.enableCompilerConsole;
}
private void FPSToggle(ControllerBoolEventArgs args)
{
Statics_Engine.SystemSettings.enableFPSDisplay = !Statics_Engine.SystemSettings.enableFPSDisplay;
}
private void MenuUp(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuUp();
break;
}
}
}
private void MenuDown(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuDown();
break;
}
}
}
private void MenuLeft(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuLeft();
break;
}
}
}
private void MenuRight(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuRight();
break;
}
}
}
private void MenuStart(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuStart(args.objectLibrary);
break;
}
}
}
private void MenuBack(ControllerBoolEventArgs args)
{
for (int i = 0; i < args.menuSystem.gameScreens.Count; i++)
{
// Update appropriate menu screen
if (Statics_Engine.SystemSettings.gameState == args.menuSystem.gameScreens[i].GetEngineState())
{
args.menuSystem.gameScreens[i].MenuBack();
break;
}
}
}
}
}