SceneVarEditor.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CommonAI.ZoneEditor;
  10. using CommonAI.Zone.ZoneEditor.EventTrigger;
  11. namespace CommonAIEditor.Scene
  12. {
  13. public partial class SceneVarEditor : Form
  14. {
  15. readonly private SceneEditor sceneEditor;
  16. public SceneVarEditor(SceneEditor scene)
  17. {
  18. InitializeComponent();
  19. this.sceneEditor = scene;
  20. this.Text = scene.Text + " - 变量编辑器";
  21. LoadData();
  22. }
  23. private void LoadData()
  24. {
  25. foreach (ZoneVar var in sceneEditor.Data.EnvironmentVars)
  26. {
  27. this.listView1.Items.Add(ToItem(var));
  28. }
  29. }
  30. internal void Save()
  31. {
  32. sceneEditor.Data.EnvironmentVars.Clear();
  33. foreach (ListViewItem item in listView1.Items)
  34. {
  35. sceneEditor.Data.EnvironmentVars.Add(item.Tag as ZoneVar);
  36. }
  37. }
  38. internal bool ContainsVarKey(string key)
  39. {
  40. foreach (ListViewItem item in listView1.Items)
  41. {
  42. if (key.Equals((item.Tag as ZoneVar).Key))
  43. {
  44. return true;
  45. }
  46. }
  47. return false;
  48. }
  49. internal string GenVarKey()
  50. {
  51. int i = 0;
  52. while (true)
  53. {
  54. string name = "VarName" + i;
  55. if (!ContainsVarKey(name))
  56. {
  57. return name;
  58. }
  59. i++;
  60. }
  61. }
  62. private void btn_Add_Click(object sender, EventArgs e)
  63. {
  64. SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this);
  65. if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  66. {
  67. ZoneVar var = dialog.Value;
  68. this.listView1.Items.Add(ToItem(var));
  69. }
  70. }
  71. private void btn_Remove_Click(object sender, EventArgs e)
  72. {
  73. foreach (ListViewItem item in SelectedItems())
  74. {
  75. listView1.Items.Remove(item);
  76. }
  77. }
  78. private void btn_Edit_Click(object sender, EventArgs e)
  79. {
  80. foreach (ListViewItem item in SelectedItems())
  81. {
  82. SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this, item.Tag as ZoneVar);
  83. if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  84. {
  85. SetItem(dialog.Value, item);
  86. }
  87. return;
  88. }
  89. }
  90. private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
  91. {
  92. ListViewItem item = listView1.GetItemAt(e.X, e.Y);
  93. if (item != null)
  94. {
  95. SceneVarDialog dialog = new SceneVarDialog(sceneEditor, this, item.Tag as ZoneVar);
  96. if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  97. {
  98. SetItem(dialog.Value, item);
  99. }
  100. }
  101. }
  102. private ListViewItem[] SelectedItems()
  103. {
  104. ListViewItem[] ret = new ListViewItem[listView1.SelectedItems.Count];
  105. listView1.SelectedItems.CopyTo(ret, 0);
  106. return ret;
  107. }
  108. private ListViewItem ToItem(ZoneVar var)
  109. {
  110. ListViewItem item = new ListViewItem(new string[] {
  111. var.Key,
  112. AbstractValueTypeMap.GetBaseValueType(var.Value.GetType()).Desc.Desc,
  113. var.Value.ToString(),
  114. var.SyncToClient?"是":"否"
  115. });
  116. item.Tag = var;
  117. item.ImageIndex = var.SyncToClient ? 1 : 0;
  118. return item;
  119. }
  120. private void SetItem(ZoneVar var, ListViewItem item)
  121. {
  122. item.SubItems[0].Text = var.Key;
  123. item.SubItems[1].Text = AbstractValueTypeMap.GetBaseValueType(var.Value.GetType()).Desc.Desc;
  124. item.SubItems[2].Text = var.Value.ToString();
  125. item.SubItems[3].Text = var.SyncToClient ? "是" : "否";
  126. item.Tag = var;
  127. item.ImageIndex = var.SyncToClient ? 1 : 0;
  128. }
  129. }
  130. }