180 lines
5.2 KiB
C#
180 lines
5.2 KiB
C#
using Plane.Copters;
|
|
using Plane.Logging;
|
|
using GalaSoft.MvvmLight;
|
|
using Microsoft.Practices.ServiceLocation;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Plane.FormationCreator.Formation
|
|
{
|
|
public partial class FlightTask : ObservableObject
|
|
{
|
|
public FlightTask(FlightTaskType type)
|
|
{
|
|
TaskType = type;
|
|
}
|
|
|
|
private FlightTaskManager _flightTaskManager = ServiceLocator.Current.GetInstance<FlightTaskManager>();
|
|
|
|
private ILogger _logger = ServiceLocator.Current.GetInstance<ILogger>();
|
|
|
|
private FlightTaskStatus _Status = FlightTaskStatus.Stop;
|
|
public FlightTaskStatus Status
|
|
{
|
|
get { return _Status; }
|
|
set { Set(nameof(Status), ref _Status, value); }
|
|
}
|
|
|
|
private FlightTaskType _TaskType;
|
|
public FlightTaskType TaskType
|
|
{
|
|
get { return _TaskType; }
|
|
set
|
|
{
|
|
Set(nameof(TaskType), ref _TaskType, value);
|
|
RaisePropertyChanged(nameof(TaskTypeIndex));
|
|
RaisePropertyChanged(nameof(TaskCnName));
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
public int TaskTypeIndex
|
|
{
|
|
get { return (int)TaskType; }
|
|
set
|
|
{
|
|
TaskType = (FlightTaskType)value;
|
|
VerticalLift = false;
|
|
if ( (value == (int)FlightTaskType.Loiter) || (value == (int)FlightTaskType.Circle) )
|
|
{
|
|
VerticalLift = true;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
private string _TaskName = "";
|
|
public string TaskCnName
|
|
{
|
|
get
|
|
{
|
|
string name = "";
|
|
switch (TaskType)
|
|
{
|
|
case FlightTaskType.TakeOff: name = "起飞"; break;
|
|
case FlightTaskType.FlyTo: name = _TaskName == "" ? "航点" : _TaskName; break;
|
|
case FlightTaskType.Land: name = "降落"; break;
|
|
}
|
|
//name = (TaskIndex + 1).ToString() + "." + name;
|
|
return name;
|
|
}
|
|
set {
|
|
|
|
Set(nameof(TaskCnName), ref _TaskName, value);
|
|
RaisePropertyChanged(nameof(TaskCnName));
|
|
|
|
|
|
}
|
|
}
|
|
|
|
public int TaskTypeIndex
|
|
{
|
|
get {
|
|
int index = 1;
|
|
switch (TaskType)
|
|
{
|
|
case FlightTaskType.TakeOff:index = 0; break;
|
|
case FlightTaskType.FlyTo: index = 1; break;
|
|
case FlightTaskType.Land: index = 2; break;
|
|
}
|
|
return index;
|
|
}
|
|
set
|
|
{
|
|
switch (value)
|
|
{
|
|
case 0: TaskType = FlightTaskType.TakeOff; break;
|
|
case 1: TaskType = FlightTaskType.FlyTo; break;
|
|
case 2: TaskType = FlightTaskType.Land; break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//task在所以任务中的index
|
|
public int TaskIndex
|
|
{
|
|
get
|
|
{
|
|
return _flightTaskManager.Tasks.IndexOf(this);
|
|
}
|
|
}
|
|
|
|
public int TaskNum
|
|
{
|
|
get
|
|
{
|
|
return TaskIndex + 1;
|
|
}
|
|
}
|
|
|
|
private bool _IsSelected;
|
|
public bool IsSelected
|
|
{
|
|
get { return _IsSelected; }
|
|
set { Set(nameof(IsSelected), ref _IsSelected, value); }
|
|
}
|
|
|
|
// 右键单击任务,用于隐藏任务图标, added by ZJF
|
|
private bool _IsRightSelected;
|
|
public bool IsRightSelected
|
|
{
|
|
get { return _IsRightSelected; }
|
|
set { Set(nameof(IsRightSelected), ref _IsRightSelected, value); }
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<FlightTaskSingleCopterInfo> SingleCopterInfos { get; set; } = new List<FlightTaskSingleCopterInfo>();
|
|
|
|
private FlightTaskSingleCopterInfo _ModifyingSingleCopterInfo;
|
|
public FlightTaskSingleCopterInfo ModifyingSingleCopterInfo
|
|
{
|
|
get { return _ModifyingSingleCopterInfo; }
|
|
set { Set(nameof(ModifyingSingleCopterInfo), ref _ModifyingSingleCopterInfo, value); }
|
|
}
|
|
|
|
public async Task RunAsync()
|
|
{
|
|
switch (TaskType)
|
|
{
|
|
case FlightTaskType.FlyTo:
|
|
await RunFlyToTaskAsync().ConfigureAwait(false);
|
|
break;
|
|
case FlightTaskType.TakeOff:
|
|
//多架同时起飞
|
|
//await MutilRunTakeOffTaskAsync().ConfigureAwait(false);
|
|
await NewMutilRunTakeOffTaskAsync().ConfigureAwait(false);
|
|
break;
|
|
case FlightTaskType.Land:
|
|
await MutilLandTaskAsync().ConfigureAwait(false);
|
|
break;
|
|
default:
|
|
throw new InvalidOperationException();
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum FlightTaskType
|
|
{
|
|
FlyTo = 0,
|
|
Land = 6,
|
|
TakeOff = 100
|
|
}
|
|
}
|