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