Plane.FormationCreator/Plane.FormationCreator/Views/TaskBarView.xaml.cs
xu f787069624 修改任务选中颜色,更明显
可导入ai和obj模型文件
增加删除任务和在任务中插入任务功能(添加改为选中任务后一个添加)
航线改为默认显示,优化右键隐藏航点功能
更改飞机和航点默认颜色
界面加入“飞行前准备”等分组页面,更方便操作
修改bug:清除飞机重新添加后飞行航线发虚,右键隐藏状态没有重置,
2020-04-20 00:12:11 +08:00

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