using Plane.CopterManagement; using Plane.Geography; using Plane.Messaging; #if NETFX_CORE using Key = Windows.System.VirtualKey; #else using System.Windows.Input; #endif namespace Plane.CopterControllers { /// /// 利用键盘控制飞行器。 /// public class KeyboardController : CopterControllerBase { private const ushort ADDED_VALUE = 400; private const ushort MED_VALUE = 1500; public KeyboardController(IPLMessenger messenger, ICopterManager copterManager) : base(messenger, copterManager) { } public override bool IsEnabled { get { return base.IsEnabled; } set { if (base.IsEnabled != value) { base.IsEnabled = value; if (value) { // TODO: 林俊清, 20160303, 修复 KeyboardController。 //_messenger.Register(this, OnKeyDown); //_messenger.Register(this, OnKeyUp); } else { _messenger.Unregister(this); } } } } public override CopterControllerTypes Type { get { return CopterControllerTypes.KeyboardController; } } //public async void OnKeyDown(KeyDownMessage m) //{ // if (IsEnabled) // { // switch (m.Key) // { // case Key.A: // await _copterManager.SetMobileControlAsync(ch1: MED_VALUE - ADDED_VALUE); // break; // case Key.D: // await _copterManager.SetMobileControlAsync(ch1: MED_VALUE + ADDED_VALUE); // break; // case Key.W: // await _copterManager.SetMobileControlAsync(ch2: MED_VALUE - ADDED_VALUE); // break; // case Key.S: // await _copterManager.SetMobileControlAsync(ch2: MED_VALUE + ADDED_VALUE); // break; // case Key.K: // await _copterManager.SetMobileControlAsync(ch3: MED_VALUE - ADDED_VALUE); // break; // case Key.I: // await _copterManager.SetMobileControlAsync(ch3: MED_VALUE + ADDED_VALUE); // break; // case Key.J: // await _copterManager.SetMobileControlAsync(yaw: (_copterManager.Copter.Yaw - 10).NormalizeDirection()); // break; // case Key.L: // await _copterManager.SetMobileControlAsync(yaw: (_copterManager.Copter.Yaw + 10).NormalizeDirection()); // break; // } // } //} //public async void OnKeyUp(KeyUpMessage m) //{ // if (IsEnabled) // { // switch (m.Key) // { // case Key.A: // case Key.D: // await _copterManager.SetMobileControlAsync(ch1: MED_VALUE); // break; // case Key.W: // case Key.S: // await _copterManager.SetMobileControlAsync(ch2: MED_VALUE); // break; // case Key.K: // case Key.I: // await _copterManager.SetMobileControlAsync(ch3: MED_VALUE); // break; // case Key.J: // case Key.L: // await _copterManager.SetMobileControlAsync(yaw: (_copterManager.Copter.Yaw).NormalizeDirection()); // break; // } // } //} } }