using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CommonAI.ZoneEditor; using CommonAI.Zone.ZoneEditor.EventTrigger; namespace CommonAIEditor.Scene { public partial class SceneVarEditor : Form { readonly private SceneEditor sceneEditor; public SceneVarEditor(SceneEditor scene) { InitializeComponent(); this.sceneEditor = scene; this.Text = scene.Text + " - 变量编辑器"; LoadData(); } private void LoadData() { foreach (ZoneVar var in sceneEditor.Data.EnvironmentVars) { this.listView1.Items.Add(ToItem(var)); } } internal void Save() { sceneEditor.Data.EnvironmentVars.Clear(); foreach (ListViewItem item in listView1.Items) { sceneEditor.Data.EnvironmentVars.Add(item.Tag as ZoneVar); } } internal bool ContainsVarKey(string key) { foreach (ListViewItem item in listView1.Items) { if (key.Equals((item.Tag as ZoneVar).Key)) { return true; } } return false; } internal string GenVarKey() { int i = 0; while (true) { string name = "VarName" + i; if (!ContainsVarKey(name)) { return name; } i++; } } private void btn_Add_Click(object sender, EventArgs e) { SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ZoneVar var = dialog.Value; this.listView1.Items.Add(ToItem(var)); } } private void btn_Remove_Click(object sender, EventArgs e) { foreach (ListViewItem item in SelectedItems()) { listView1.Items.Remove(item); } } private void btn_Edit_Click(object sender, EventArgs e) { foreach (ListViewItem item in SelectedItems()) { SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this, item.Tag as ZoneVar); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { SetItem(dialog.Value, item); } return; } } private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { ListViewItem item = listView1.GetItemAt(e.X, e.Y); if (item != null) { SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this, item.Tag as ZoneVar); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { SetItem(dialog.Value, item); } } } private ListViewItem[] SelectedItems() { ListViewItem[] ret = new ListViewItem[listView1.SelectedItems.Count]; listView1.SelectedItems.CopyTo(ret, 0); return ret; } private ListViewItem ToItem(ZoneVar var) { ListViewItem item = new ListViewItem(new string[] { var.Key, AbstractValueTypeMap.GetBaseValueType(var.Value.GetType()).Desc.Desc, var.Value.ToString(), var.SyncToClient?"是":"否" }); item.Tag = var; item.ImageIndex = var.SyncToClient ? 1 : 0; return item; } private void SetItem(ZoneVar var, ListViewItem item) { item.SubItems[0].Text = var.Key; item.SubItems[1].Text = AbstractValueTypeMap.GetBaseValueType(var.Value.GetType()).Desc.Desc; item.SubItems[2].Text = var.Value.ToString(); item.SubItems[3].Text = var.SyncToClient ? "是" : "否"; item.Tag = var; item.ImageIndex = var.SyncToClient ? 1 : 0; } } }