Plane.Sdk3/PlaneGcsSdk_Shared/CopterControllers/KeyboardController.cs
2020-09-20 11:43:27 +08:00

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;
// }
// }
//}
}
}