using CommonAI.Zone; using CommonAI.Zone.EventTrigger; using CommonFroms.G2D; using CommonFroms.G2D.DataGrid; using CommonFroms.Utils; using CommonLang; using CommonLang.Xml; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml; namespace CommonAIEditor.Unit { public class UnitEventEditor : CommonAIEditor.EventEditor.EventEditor { //---------------------------------------------------------------------------------------- private FileInfo tree_setting_file; private UnitEventTemplate mData; public UnitEventEditor(DataManagerPanel owner, UnitEventTemplate data) { this.mData = data; this.OnDataLoaded += UnitEventEditor_OnDataLoaded; this.OnDataSaved += UnitEventEditor_OnDataSaved; this.tree_setting_file = new FileInfo(owner.TreeRoot.SettingDir + "\\" + data.ID + ".tree"); } private void UnitEventEditor_OnDataSaved(EventEditor.EventEditor obj) { try { var tree_xml = new XmlDocument(); var eroot = tree_xml.CreateElement("root"); tree_xml.AppendChild(eroot); this.SaveTreeInfo(eroot); var xmltext = XmlUtil.ToString(tree_xml); File.WriteAllText(tree_setting_file.FullName, xmltext, CUtils.UTF8); } catch (Exception) { } } private void UnitEventEditor_OnDataLoaded(EventEditor.EventEditor obj) { try { var xmltext = File.ReadAllText(tree_setting_file.FullName, CUtils.UTF8); var tree_xml = XmlUtil.FromString(xmltext); var eroot = tree_xml.DocumentElement; this.LoadTreeInfo(eroot); } catch (Exception) { } } public override List LoadEventDataNodes() { this.Text = mData.ToString() + " - 事件编辑器"; List ret = new List(); ret.AddRange(mData.Events); return ret; } public override void OnSave(List events) { mData.Events.Clear(); foreach (UnitEvent evt in events) { mData.Events.Add(evt); } } public override IEventDataNode CreateEventDataNode() { return new UnitEvent(); } public override IG2DPropertyAdapter[] CreatePropertyAdapters() { return new IG2DPropertyAdapter[] { new UnitEventAdapters(this), }; } public UnitEvent ShowSelectEvent(string srcName) { UnitEvent src = mData.GetEvent(srcName); G2DListSelectEditor dialog = new G2DListSelectEditor(new List(mData.Events), src); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { return dialog.SelectedObject; } return null; } } }