可导入ai和obj模型文件 增加删除任务和在任务中插入任务功能(添加改为选中任务后一个添加) 航线改为默认显示,优化右键隐藏航点功能 更改飞机和航点默认颜色 界面加入“飞行前准备”等分组页面,更方便操作 修改bug:清除飞机重新添加后飞行航线发虚,右键隐藏状态没有重置,
204 lines
7.3 KiB
C#
204 lines
7.3 KiB
C#
using Plane.FormationCreator.Formation;
|
|
using Plane.FormationCreator.ViewModels;
|
|
using Microsoft.Practices.ServiceLocation;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace Plane.FormationCreator.Views
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for TaskBarView.xaml
|
|
/// </summary>
|
|
public partial class TaskBarView : UserControl
|
|
{
|
|
public TaskBarView()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.DataContext = ServiceLocator.Current.GetInstance<TaskBarViewModel>();
|
|
|
|
|
|
|
|
hintaddtask.Visibility = Visibility.Visible;
|
|
tasktabcont.Visibility = Visibility.Collapsed;
|
|
_flightTaskManager.TaskTypeChanged += (sender, e) =>
|
|
{
|
|
if (e.ChangedFlightTask.TaskType == FlightTaskType.Land)
|
|
addtaskbtn.IsEnabled = false;
|
|
else addtaskbtn.IsEnabled = true;
|
|
};
|
|
|
|
|
|
_flightTaskManager.TaskcnNameChanged += (sender, e) =>
|
|
{
|
|
if (e.ChangedFlightTask.TaskType == FlightTaskType.Land)
|
|
flytoLabel.Content = (_flightTaskManager.SelectedTaskIndex + 1) + " 航点";
|
|
else
|
|
flytoLabel.Content = (_flightTaskManager.SelectedTaskIndex + 1) + " " + _flightTaskManager.Tasks[_flightTaskManager.SelectedTaskIndex].TaskCnName;
|
|
};
|
|
|
|
|
|
_flightTaskManager.PropertyChanged += (sender, e) =>
|
|
{
|
|
if (_flightTaskManager.SelectedTaskIndex == -1) return;
|
|
switch (e.PropertyName)
|
|
{
|
|
//选中任务时触发--控制任务类型选项卡的显示和是否允许加入新任务
|
|
case nameof(FlightTaskManager.SelectedTaskIndex):
|
|
if (_flightTaskManager.Tasks.Count == 0)
|
|
{
|
|
tasktabcont.Visibility = Visibility.Collapsed;
|
|
hintaddtask.Visibility = Visibility.Visible;
|
|
addtaskbtn.IsEnabled = true;
|
|
|
|
}
|
|
else
|
|
{
|
|
hintaddtask.Visibility = Visibility.Collapsed;
|
|
tasktabcont.Visibility = Visibility.Visible;
|
|
//刷新任务编号--可能删除了任务
|
|
TasksControl.Items.Refresh();
|
|
|
|
//起飞任务
|
|
if (_flightTaskManager.Tasks[_flightTaskManager.SelectedTaskIndex].TaskType == FlightTaskType.TakeOff)
|
|
{
|
|
takeoffpage.Visibility = Visibility.Visible;
|
|
landpage.Visibility = Visibility.Collapsed;
|
|
flytopage.Visibility = Visibility.Collapsed;
|
|
}else
|
|
//选中中间的任务
|
|
if (_flightTaskManager.SelectedTaskIndex < (_flightTaskManager.Tasks.Count - 1))
|
|
{
|
|
takeoffpage.Visibility = Visibility.Collapsed;
|
|
landpage.Visibility = Visibility.Collapsed;
|
|
flytopage.Visibility = Visibility.Visible;
|
|
|
|
flytoLabel.Content = (_flightTaskManager.SelectedTaskIndex+1)+" "+ _flightTaskManager.Tasks[_flightTaskManager.SelectedTaskIndex].TaskCnName;
|
|
//允许添加中途任务
|
|
addtaskbtn.IsEnabled = true;
|
|
|
|
}
|
|
else
|
|
//最后一个任务--只有最后一个任务能设置成降落-防止中途降落
|
|
{
|
|
|
|
takeoffpage.Visibility = Visibility.Collapsed;
|
|
landpage.Visibility = Visibility.Visible;
|
|
flytopage.Visibility = Visibility.Visible;
|
|
//如果不是降落任务
|
|
if (_flightTaskManager.Tasks[_flightTaskManager.SelectedTaskIndex].TaskType != FlightTaskType.Land)
|
|
{
|
|
addtaskbtn.IsEnabled = true;
|
|
flytoLabel.Content = (_flightTaskManager.SelectedTaskIndex + 1) + " " + _flightTaskManager.Tasks[_flightTaskManager.SelectedTaskIndex].TaskCnName;
|
|
}
|
|
else
|
|
{
|
|
flytoLabel.Content = (_flightTaskManager.SelectedTaskIndex + 1) + " 航点";
|
|
addtaskbtn.IsEnabled = false;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
break;
|
|
|
|
// case nameof(FlightTaskManager.SelectedTask .TaskTypeIndex):
|
|
|
|
|
|
default:
|
|
break;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
private FlightTaskManager _flightTaskManager = ServiceLocator.Current.GetInstance<FlightTaskManager>();
|
|
|
|
//用于直接飞到航点
|
|
public void TaskLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (e.ClickCount > 1)
|
|
{
|
|
|
|
_flightTaskManager.FlyToTasks();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//用于更名
|
|
public void TaskLabelLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (e.ClickCount > 1)
|
|
{
|
|
FlightTask task = _flightTaskManager.SelectedTask;
|
|
if ((task == null) || (task.TaskType != FlightTaskType.FlyTo)) return;
|
|
|
|
string newName = task.TaskCnName;
|
|
if (PlaneMessageBox.OnShow("请输入新的名称", "重命名", ref newName))
|
|
{
|
|
task.TaskCnName = newName;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//选择任务
|
|
private void SelectTask(object sender, MouseButtonEventArgs e)
|
|
{
|
|
var elem = sender as FrameworkElement;
|
|
var task = elem.DataContext as FlightTask;
|
|
_flightTaskManager.Select(task);
|
|
|
|
}
|
|
|
|
//以前的右键隐藏航点,已不用
|
|
public void setRightSelect(FlightTask task, bool vRightSelect)
|
|
{
|
|
|
|
|
|
}
|
|
|
|
//右键功能 ---隐藏航点
|
|
private void HideTask(object sender, MouseButtonEventArgs e)
|
|
{
|
|
var elem = sender as FrameworkElement;
|
|
var task = elem.DataContext as FlightTask;
|
|
_flightTaskManager.RightSelect(task);
|
|
setRightSelect(task, true);
|
|
|
|
|
|
}
|
|
|
|
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
// TextBox textbox = sender as TextBox;
|
|
// int value = 0;
|
|
// if (int.TryParse(textbox.Text, out value))
|
|
// {
|
|
// if (value > 4095)
|
|
// textbox.Text = "4095";
|
|
// }
|
|
}
|
|
}
|
|
}
|