//--------------------------------------------------------------------------------------------------------------------------------------------------- // <copyright file="GameController.cs" company="DarkWynter Studios"> // Copyright (C)2007 DarkWynter Studios. All rights reserved. // </copyright> //--------------------------------------------------------------------------------------------------------------------------------------------------- // {Contact : darkwynter.com for licensing information //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynter.Game { #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 /// <summary> /// Game Controller for getting player inputs in-game /// </summary> public class GameController : Controller { /// <summary> /// Controller Type /// </summary> public static Enums_Engine.ControllerType playerControllerType = Enums_Engine.ControllerType.PC_ONLY; /// <summary> /// Constructor /// </summary> /// <param name="playerNumber">Player index for this controller</param> public GameController(int playerNumber): base(playerNumber) { 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, 100)); Add(new KeyboardControl(Keys.F12, FPSToggle, 100)); Add(new KeyboardControl(Keys.OemTilde, CompilerConsoleToggle, 100)); Add(new KeyboardControl(Keys.Escape, Escape, 100)); 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)); } private void Escape(ControllerBoolEventArgs args) { Statics_Engine.SystemSettings.gameState = Enums_Engine.EngineState.EXIT; } 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); } 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); } } }