Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
EditMemoryBankDialog.cs
浏览该文件的文档.
1using System.Xml.Linq;
2
3namespace Game {
4 public class EditMemoryBankDialog : Dialog {
5 public Action m_handler;
6
8
10
12
14
16
18
20
22
24
26
27 public EditMemoryBankDialog(MemoryBankData memoryBankData, Action handler) {
28 XElement node = ContentManager.Get<XElement>("Dialogs/EditMemoryBankDialog");
29 LoadContents(this, node);
30 m_linearPanel = Children.Find<Widget>("EditMemoryBankDialog.LinearPanel");
31 m_gridPanel = Children.Find<Widget>("EditMemoryBankDialog.GridPanel");
32 m_okButton = Children.Find<ButtonWidget>("EditMemoryBankDialog.OK");
33 m_cancelButton = Children.Find<ButtonWidget>("EditMemoryBankDialog.Cancel");
34 m_switchViewButton = Children.Find<ButtonWidget>("EditMemoryBankDialog.SwitchViewButton");
35 m_linearTextBox = Children.Find<TextBoxWidget>("EditMemoryBankDialog.LinearText");
36 for (int i = 0; i < 16; i++) {
37 m_lineTextBoxes[i] = Children.Find<TextBoxWidget>($"EditMemoryBankDialog.Line{i}");
38 }
39 m_handler = handler;
40 m_memoryBankData = memoryBankData;
42 m_linearPanel.IsVisible = false;
43 for (int j = 0; j < 16; j++) {
44 m_lineTextBoxes[j].TextChanged += TextBox_TextChanged;
45 }
46 m_linearTextBox.TextChanged += TextBox_TextChanged;
47 }
48
49 public void TextBox_TextChanged(TextBoxWidget textBox) {
51 return;
52 }
53 if (textBox == m_linearTextBox) {
55 m_tmpMemoryBankData.LoadString(m_linearTextBox.Text);
56 return;
57 }
58 string text = string.Empty;
59 for (int i = 0; i < 16; i++) {
60 text += m_lineTextBoxes[i].Text;
61 }
63 m_tmpMemoryBankData.LoadString(text);
64 }
65
66 public override void Update() {
68 try {
69 string text = m_tmpMemoryBankData.SaveString(false);
70 if (text.Length < 256) {
71 text += new string('0', 256 - text.Length);
72 }
73 for (int i = 0; i < 16; i++) {
74 m_lineTextBoxes[i].Text = text.Substring(i * 16, 16);
75 }
76 m_linearTextBox.Text = m_tmpMemoryBankData.SaveString(false);
77 }
78 finally {
79 m_ignoreTextChanges = false;
80 }
81 if (m_linearPanel.IsVisible) {
82 m_switchViewButton.Text = "Grid";
83 if (m_switchViewButton.IsClicked) {
84 m_linearPanel.IsVisible = false;
85 m_gridPanel.IsVisible = true;
86 }
87 }
88 else {
89 m_switchViewButton.Text = "Linear";
90 if (m_switchViewButton.IsClicked) {
91 m_linearPanel.IsVisible = true;
92 m_gridPanel.IsVisible = false;
93 }
94 }
95 if (m_okButton.IsClicked) {
96 m_memoryBankData.Data = m_tmpMemoryBankData.Data;
97 Dismiss(true);
98 }
99 if (Input.Cancel
100 || m_cancelButton.IsClicked) {
101 Dismiss(false);
102 }
103 }
104
105 public void Dismiss(bool result) {
107 if (m_handler != null && result) {
108 m_handler();
109 }
110 }
111 }
112}
readonly WidgetsList Children
static object Get(Type type, string name)
static void HideDialog(Dialog dialog)
EditMemoryBankDialog(MemoryBankData memoryBankData, Action handler)
void TextBox_TextChanged(TextBoxWidget textBox)
virtual void LoadContents(object eventsTarget, XElement node)