133 lines
4.0 KiB
C#
133 lines
4.0 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 利用键盘控制飞行器。
|
|
/// </summary>
|
|
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<KeyDownMessage>(this, OnKeyDown);
|
|
//_messenger.Register<KeyUpMessage>(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;
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
}
|