Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
EditTruthTableDialog.cs
浏览该文件的文档.
1using System.Xml.Linq;
2
3namespace Game {
4 public class EditTruthTableDialog : Dialog {
5 public Action<bool> m_handler;
6
8
10
16
21 public const string fName = "EditTruthTableDialog";
22
23 public EditTruthTableDialog(TruthTableData truthTableData, Action<bool> handler) {
24 XElement node = ContentManager.Get<XElement>("Dialogs/EditTruthTableDialog");
25 LoadContents(this, node);
26 m_linearPanel = Children.Find<Widget>("EditTruthTableDialog.LinearPanel");
27 m_gridPanel = Children.Find<Widget>("EditTruthTableDialog.GridPanel");
28 m_okButton = Children.Find<ButtonWidget>("EditTruthTableDialog.OK");
29 m_cancelButton = Children.Find<ButtonWidget>("EditTruthTableDialog.Cancel");
30 m_switchViewButton = Children.Find<ButtonWidget>("EditTruthTableDialog.SwitchViewButton");
31 m_linearTextBox = Children.Find<TextBoxWidget>("EditTruthTableDialog.LinearText");
32 for (int i = 0; i < 16; i++) {
33 m_lineCheckboxes[i] = Children.Find<CheckboxWidget>($"EditTruthTableDialog.Line{i}");
34 }
35 m_handler = handler;
36 m_truthTableData = truthTableData;
39 m_linearPanel.IsVisible = false;
40 m_linearTextBox.TextChanged += delegate {
43 m_tmpTruthTableData.LoadBinaryString(m_linearTextBox.Text);
44 }
45 };
46 }
47
48 public override void Update() {
50 try {
51 if (!m_tmpTruthTableData.Data.SequenceEqual(m_lastTmpTruthTableDataData)) {
53 m_linearTextBox.Text = m_tmpTruthTableData.SaveBinaryString();
54 }
55 }
56 finally {
57 m_ignoreTextChanges = false;
58 }
59 for (int i = 0; i < 16; i++) {
60 if (m_lineCheckboxes[i].IsClicked) {
61 m_tmpTruthTableData.Data[i] = (byte)(m_tmpTruthTableData.Data[i] == 0 ? 15 : 0);
62 }
63 m_lineCheckboxes[i].IsChecked = m_tmpTruthTableData.Data[i] > 0;
64 }
65 if (m_linearPanel.IsVisible) {
66 m_switchViewButton.Text = LanguageControl.Get(fName, 1);
67 if (m_switchViewButton.IsClicked) {
68 m_linearPanel.IsVisible = false;
69 m_gridPanel.IsVisible = true;
70 }
71 }
72 else {
73 m_switchViewButton.Text = LanguageControl.Get(fName, 2);
74 if (m_switchViewButton.IsClicked) {
75 m_linearPanel.IsVisible = true;
76 m_gridPanel.IsVisible = false;
77 }
78 }
79 if (m_okButton.IsClicked) {
80 m_truthTableData.Data = m_tmpTruthTableData.Data;
81 Dismiss(true);
82 }
83 if (Input.Cancel
84 || m_cancelButton.IsClicked) {
85 Dismiss(false);
86 }
87 }
88
89 public void Dismiss(bool result) {
91 m_handler?.Invoke(result);
92 }
93 }
94}
readonly WidgetsList Children
static object Get(Type type, string name)
static void HideDialog(Dialog dialog)
EditTruthTableDialog(TruthTableData truthTableData, Action< bool > handler)
static string Get(string className, int key)
获取在当前语言类名键对应的字符串
virtual void LoadContents(object eventsTarget, XElement node)