//--------------------------------------------------------------------------------------------------------------------------------------------------- // // Copyright (C)2007 DarkWynter Studios. All rights reserved. // //--------------------------------------------------------------------------------------------------------------------------------------------------- // {Contact : darkwynter.com for licensing information //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynter.Engine.Controllers { #region Using Statements 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; #endregion /// /// Game Controller for getting player inputs in-game /// public class GameController : Controller { /// /// Constructor for PC and mouse controls /// /// Player index for this controller public GameController(int playerNumber): base(playerNumber) { Add(new KeyboardControl(Keys.W, MoveForward, 10)); Add(new KeyboardControl(Keys.A, MoveLeft, 10)); Add(new KeyboardControl(Keys.D, MoveRight, 10)); Add(new KeyboardControl(Keys.S, MoveBackward, 10)); Add(new KeyboardControl(Keys.Space, Jump, 100)); //Add(new KeyboardControl(Keys.D1, IncrementTemperature, 100)); //Add(new KeyboardControl(Keys.D2, DecrementTemperature, 100)); //Add(new KeyboardControl(Keys.D3, IncrementDelta, 100)); //Add(new KeyboardControl(Keys.D4, DecrementDelta, 100)); Add(new KeyboardControl(Keys.Z, ZoomIn, 100)); Add(new KeyboardControl(Keys.X, ZoomOut, 100)); Add(new KeyboardControl(Keys.LeftShift, MovementToggle, 200)); Add(new KeyboardControl(Keys.F12, FPSToggle, 100)); Add(new KeyboardControl(Keys.OemTilde, CompilerConsoleToggle, 100)); Add(new KeyboardControl(Keys.Escape, Escape, 100)); Add(new KeyboardControl(Keys.F1, ChangeWeaponDown, 100)); Add(new KeyboardControl(Keys.F2, ChangeWeaponUp, 100)); Add(new KeyboardControl(Keys.RightShift, FPVToggle, 200)); Add(new MouseControl(Enums_Engine.ControlType.Motion, Rotate, 0)); Add(new MouseControl(Enums_Engine.ControlType.LeftButton, Attack, 0)); Add(new MouseControl(Enums_Engine.ControlType.RightButton, Defend, 0)); Add(new MouseControl(Enums_Engine.ControlType.ScrollWheel, ChangeWeapon, 0)); } /// /// Constructor for Xbox only controls /// /// public GameController(PlayerIndex playerIndex) : base(playerIndex) { // Add xbox controls } /// /// Constructor for Xbox and keyboard controls /// /// Player index in ObjectLibrary /// Player index for this controller public GameController(int player, PlayerIndex playerIndex) : base(player, playerIndex) { Add(new KeyboardControl(Keys.W, MoveForward, 0)); Add(new KeyboardControl(Keys.A, MoveLeft, 0)); Add(new KeyboardControl(Keys.D, MoveRight, 0)); Add(new KeyboardControl(Keys.S, MoveBackward, 0)); Add(new KeyboardControl(Keys.Space, Jump, 10)); Add(new KeyboardControl(Keys.D1, IncrementTemperature, 100)); Add(new KeyboardControl(Keys.D2, DecrementTemperature, 100)); Add(new KeyboardControl(Keys.D3, IncrementDelta, 100)); Add(new KeyboardControl(Keys.D4, DecrementDelta, 100)); Add(new KeyboardControl(Keys.Z, ZoomIn, 100)); Add(new KeyboardControl(Keys.X, ZoomOut, 100)); Add(new KeyboardControl(Keys.LeftShift, MovementToggle, 200)); Add(new KeyboardControl(Keys.F12, FPSToggle, 100)); Add(new KeyboardControl(Keys.OemTilde, CompilerConsoleToggle, 100)); Add(new KeyboardControl(Keys.Escape, Escape, 3000)); // Add xbox controls } #region G2L form events public static void NonControllerBasedTerrainMod(TerrainModRequest request) { //TerrainModRequest modRequest = new TerrainModRequest(amount, startPosition, endPosition, radius, Enums_Engine.TerrainModType.EQUALTO); MajikWand.TerrainMod(request); } #endregion 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 IncrementTemperature(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackTemperature(true); } private void DecrementTemperature(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackTemperature(false); } private void IncrementDelta(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackMagnitude(true); } private void DecrementDelta(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackMagnitude(false); } private void FPSToggle(ControllerBoolEventArgs args) { Statics_Engine.SystemSettings.enableFPSDisplay = !Statics_Engine.SystemSettings.enableFPSDisplay; } private void MovementToggle(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].ToggleMovementType(); } private void MoveForward(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Translate(new Vector2(0, 10)); } private void MoveBackward(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Translate(new Vector2(0, -10)); } private void MoveLeft(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Translate(new Vector2(-10, 0)); } private void MoveRight(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Translate(new Vector2(10,0)); } private void Rotate(ControllerVec2EventArgs args) { args.objectLibrary.humans[playerNumber].Rotate(args.value / new Vector2(4.0f)); } private void Jump(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Jump(args.objectLibrary); } private void ZoomIn(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Zoom(true); } private void ZoomOut(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].Zoom(false); } private void Attack(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].ChangeAttackAmount(0.5f); } private void Defend(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].ChangeAttackAmount(-0.5f); } private void ChangeWeapon(ControllerIntEventArgs args) { args.objectLibrary.humans[playerNumber].AttackModeSwitching(args.value); } private void ChangeWeaponUp(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackModeSwitching(true); } private void ChangeWeaponDown(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].AttackModeSwitching(false); } private void FPVToggle(ControllerBoolEventArgs args) { args.objectLibrary.humans[playerNumber].FPVToggle(); } } }