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 @@ + + + + + +