//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// Copyright (C)2007 DarkWynter Studios. All rights reserved.
//
//---------------------------------------------------------------------------------------------------------------------------------------------------
// {Contact : darkwynter.com for licensing information
//---------------------------------------------------------------------------------------------------------------------------------------------------
namespace DWControllerDemo
{
#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.Controllers;
using DWControllerDemo;
using DW.Globals;
using DW.Stream;
using DW.Data.GameObjects;
#endregion
///
/// Menu Controller for getting player inputs for the menu system
///
public class MenuController : Controller
{
#region CTORs
///
/// Constructor
///
/// Player index for this controller
public MenuController(int playerNumber)
: base(playerNumber)
{
Init();
}
///
/// Constructor for Xbox only controls
///
public MenuController(PlayerIndex playerIndex)
: base(playerIndex)
{
Init();
}
///
/// Constructor for Xbox and keyboard controls
///
/// Player index in ObjectLibrary
/// Player index for this controller
public MenuController(int player, PlayerIndex playerIndex)
: base(player, playerIndex)
{
Init();
}
#endregion
// NOTES:
// We need different controller constructors for differentiating xbox vs. pc vs. xboxpc controller types
// We only want two key setups most of the time tho, so we defer to Init which switches pc and xbox configs concisely based on type.
private void Init()
{
// NOTES:
// We need different controller constructors for differentiating xbox vs. pc vs. xboxpc controller types
// We only want two key setups most of the time tho, so we defer to Init which switches pc and xbox configs concisely based on type.
if (playerControllerType == ControllerType.PC_ONLY || playerControllerType == ControllerType.PC_AND_XBOX)
{
Add(new KeyboardControl(Keys.Escape, Escape, 100));
Add(new KeyboardControl(Keys.Enter, AdvanceScreen, 100));
Add(new KeyboardControl(Keys.Back, ReverseScreen, 200));
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));
}
if (playerControllerType == ControllerType.XBOX_ONLY || playerControllerType == ControllerType.PC_AND_XBOX)
{
Add(new XboxDigitalControl(Buttons.DPadUp, MenuUp, 100));
Add(new XboxDigitalControl(Buttons.DPadDown, MenuDown, 100));
Add(new XboxDigitalControl(Buttons.DPadLeft, MenuLeft, 100));
Add(new XboxDigitalControl(Buttons.DPadRight, MenuRight, 100));
Add(new XboxDigitalControl(Buttons.Back, Escape, 200));
Add(new XboxDigitalControl(Buttons.Start, AdvanceScreen, 200));
}
}
// NOTES:
// the args list coming into each Input Delegate contain a "value" and a List