diff --git a/CLEditor/CLEngine.Editor.csproj b/CLEditor/CLEngine.Editor.csproj
index 113f1ba685150f0bbc9c110c8ebf9c235a332d4a..e8ce6530abf6a0517f50dbb57b33063b7b58eafd 100644
--- a/CLEditor/CLEngine.Editor.csproj
+++ b/CLEditor/CLEngine.Editor.csproj
@@ -447,6 +447,9 @@
CreateMapWindow.xaml
+
+ CustomPropWindow.xaml
+
DataBaseWindow.xaml
@@ -561,6 +564,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/CLEditor/viewmodel/DataBaseViewModel.cs b/CLEditor/viewmodel/DataBaseViewModel.cs
index 857297f6b6bfb2dd765afb00769e2125493b8d3e..15399e29894c9e395ca48a33262dcce3fc6d08bc 100644
--- a/CLEditor/viewmodel/DataBaseViewModel.cs
+++ b/CLEditor/viewmodel/DataBaseViewModel.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
using System.Linq;
using System.Windows.Forms;
using CLEngine.Core;
@@ -25,6 +27,10 @@ namespace CLEngine.Editor.viewmodel
/// 添加物品命令
///
public RelayCommand AddItemCommand { get; set; }
+ ///
+ /// 删除物品命令
+ ///
+ public RelayCommand RemoveItemCommand { get; set; }
///
/// 性别列表
///
@@ -63,6 +69,10 @@ namespace CLEngine.Editor.viewmodel
/// 保存数据按钮
///
public RelayCommand SaveCommand { get; set; }
+ ///
+ /// 创建脚本按钮
+ ///
+ public RelayCommand CreateScriptCommand { get; set; }
private string _iconPath;
@@ -99,7 +109,19 @@ namespace CLEngine.Editor.viewmodel
BagBrowserCommand = new RelayCommand(BagBrowserAction);
DropBrowserCommand = new RelayCommand(DropBrowserAction);
SaveCommand = new RelayCommand(SaveAction);
- }
+ RemoveItemCommand = new RelayCommand(RemoveItemAction);
+ CreateScriptCommand = new RelayCommand(CreateScriptAction);
+ }
+
+ private void RemoveItemAction()
+ {
+ var itemList = DataBaseWindow.Instance.ItemList;
+ if (itemList.SelectedValue is ItemObject item)
+ {
+ ItemManager.RemoveItem(item);
+ ItemObjects.Remove(item);
+ }
+ }
private ObservableCollection GetItemObjects()
{
@@ -122,7 +144,7 @@ namespace CLEngine.Editor.viewmodel
private void DropBrowserAction()
{
var fileSelectDialog = new OpenFileDialog();
- var itemObject = (ItemObject)DataBaseWindow.ItemListInstance.SelectedItem;
+ var itemObject = (ItemObject)DataBaseWindow.Instance.ItemList.SelectedItem;
if (itemObject != null)
{
itemObject.DropIconPath = ProcessDialog(fileSelectDialog, "Icon\\");
@@ -133,7 +155,7 @@ namespace CLEngine.Editor.viewmodel
private void BagBrowserAction()
{
var fileSelectDialog = new OpenFileDialog();
- var itemObject = (ItemObject)DataBaseWindow.ItemListInstance.SelectedItem;
+ var itemObject = (ItemObject) DataBaseWindow.Instance.ItemList.SelectedItem;
if (itemObject != null)
{
itemObject.IconPath = ProcessDialog(fileSelectDialog, "Icon\\");
@@ -141,25 +163,26 @@ namespace CLEngine.Editor.viewmodel
}
}
+ [SuppressMessage("ReSharper", "LocalizableElement")]
private string ProcessDialog(OpenFileDialog ofd, string specificFolder = "")
{
var result = ofd.ShowDialog();
if (result == DialogResult.OK || result == DialogResult.Yes)
{
string destFolder = (SceneManager.GameProject.ProjectPath + "\\Content\\" + specificFolder).Trim();
- string filename = System.IO.Path.GetFileName(ofd.FileName);
+ string filename = Path.GetFileName(ofd.FileName);
bool fileOnDirectory = ofd.FileName.StartsWith(SceneManager.GameProject.ProjectPath);
- if (!System.IO.Directory.Exists(destFolder) && !fileOnDirectory)
- System.IO.Directory.CreateDirectory(destFolder);
+ if (!Directory.Exists(destFolder) && !fileOnDirectory)
+ Directory.CreateDirectory(destFolder);
- if (!System.IO.File.Exists(destFolder + filename) || fileOnDirectory)
- return this.SetNewPath(ofd.FileName, destFolder, specificFolder, filename);
+ if (!File.Exists(destFolder + filename) || fileOnDirectory)
+ return SetNewPath(ofd.FileName, destFolder, specificFolder, filename);
var overwriteResult = MessageBox.Show("带有名称的文件 " + filename + " 已经存在。 你想覆盖它吗?", "警告", MessageBoxButtons.YesNoCancel);
if (overwriteResult == DialogResult.Yes)
- return this.SetNewPath(ofd.FileName, destFolder, specificFolder, filename, true);
+ return SetNewPath(ofd.FileName, destFolder, specificFolder, filename, true);
}
return null;
@@ -172,7 +195,7 @@ namespace CLEngine.Editor.viewmodel
bool fileOnDirectory = srcPath.StartsWith(SceneManager.GameProject.ProjectPath);
if (!fileOnDirectory)
- System.IO.File.Copy(srcPath, destFolder + filename, overwrite);
+ File.Copy(srcPath, destFolder + filename, overwrite);
string relativePath = (@"\Content\" + specificFolder + filename).Trim();
if (fileOnDirectory)
@@ -210,5 +233,18 @@ namespace CLEngine.Editor.viewmodel
var item = ItemManager.CreateItem("物品" + ItemManager.WorldId);
ItemObjects.Add(item);
}
- }
+
+ ///
+ /// 创建脚本
+ ///
+ private void CreateScriptAction()
+ {
+ var FileName = DataBaseWindow.Instance.FileNameInput.Text;
+ var path = Path.Combine(SceneManager.GameProject.ProjectPath, "Scripts");
+ var ScriptName = Path.Combine(path, FileName);
+ if (!File.Exists(ScriptName))
+ {
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/CLEditor/windows/CustomPropWindow.xaml b/CLEditor/windows/CustomPropWindow.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..e2eaf755acd725c5281c9e76a891adb72e3f84e1
--- /dev/null
+++ b/CLEditor/windows/CustomPropWindow.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/CLEditor/windows/CustomPropWindow.xaml.cs b/CLEditor/windows/CustomPropWindow.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a461e784f6a3ab20da3d56759a2dfd2d9f4e2e7d
--- /dev/null
+++ b/CLEditor/windows/CustomPropWindow.xaml.cs
@@ -0,0 +1,27 @@
+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.Shapes;
+
+namespace CLEngine.Editor.windows
+{
+ ///
+ /// CustomPropWindow.xaml 的交互逻辑
+ ///
+ public partial class CustomPropWindow : Window
+ {
+ public CustomPropWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/CLEditor/windows/DataBaseWindow.xaml b/CLEditor/windows/DataBaseWindow.xaml
index 1025e9df7736c25486bd192860c3681dec498965..a88d79e0c649d981f9516cb82d8e06db6e3ef678 100644
--- a/CLEditor/windows/DataBaseWindow.xaml
+++ b/CLEditor/windows/DataBaseWindow.xaml
@@ -19,90 +19,97 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CLEditor/windows/DataBaseWindow.xaml.cs b/CLEditor/windows/DataBaseWindow.xaml.cs
index e87d50917ad3dca635c67183c221b08d45c800c8..ba40b4d3248c20e425b88b3e03005920671af03a 100644
--- a/CLEditor/windows/DataBaseWindow.xaml.cs
+++ b/CLEditor/windows/DataBaseWindow.xaml.cs
@@ -1,7 +1,5 @@
-using System.IO;
-using System.Windows;
+using System.Windows;
using System.Windows.Controls;
-using CLEngine.Core;
using CLEngine.Core.framework;
using CLEngine.Editor.viewmodel;
@@ -12,12 +10,12 @@ namespace CLEngine.Editor.windows
///
public partial class DataBaseWindow : Window
{
- public static ListBox ItemListInstance;
+ public static DataBaseWindow Instance;
public DataBaseWindow()
{
InitializeComponent();
- ItemListInstance = ItemList;
+ Instance = this;
ClassificationComboBox.SelectionChanged += ClassificationComboBoxOnSelectionChanged;
ItemList.SelectionChanged += ItemListOnSelectionChanged;
}
@@ -45,18 +43,5 @@ namespace CLEngine.Editor.windows
{
(DataContext as DataBaseViewModel)?.ClearItemChildTypes(ClassificationComboBox.SelectedValue);
}
- ///
- /// 创建脚本
- ///
- private void CreateScript(){
- string FileName = FileNameInput.Text;
- string path = System.IO.Path.Combine(SceneManager.GameProject.ProjectPath,"\\\\Scripts\\\\");
- string ScriptName = System.IO.Path.Combine(path, FileName);
- if(!File.Exists(ScriptName)){
- using(var sw=new StreamWriter(ScriptName)){
-
- }
- }
- }
}
}