Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
TextBoxDialog.cs
浏览该文件的文档.
1using System.Xml.Linq;
2
3namespace Game {
4 public class TextBoxDialog : Dialog {
5 public Action<string> m_handler;
6
7 public Action<TextBoxWidget> m_handler2;
8
10
12
14
16
17 public bool AutoHide { get; set; }
18
19 public TextBoxDialog(string title, string text, int maximumLength, Action<string> handler) {
20 m_handler = handler;
21 XElement node = ContentManager.Get<XElement>("Dialogs/TextBoxDialog");
22 LoadContents(this, node);
23 m_titleWidget = Children.Find<LabelWidget>("TextBoxDialog.Title");
24 m_textBoxWidget = Children.Find<TextBoxWidget>("TextBoxDialog.TextBox");
25 m_okButtonWidget = Children.Find<ButtonWidget>("TextBoxDialog.OkButton");
26 m_cancelButtonWidget = Children.Find<ButtonWidget>("TextBoxDialog.CancelButton");
27 m_titleWidget.IsVisible = !string.IsNullOrEmpty(title);
28 m_titleWidget.Text = title ?? string.Empty;
29 m_textBoxWidget.MaximumLength = maximumLength;
30 m_textBoxWidget.Text = text ?? string.Empty;
31 m_textBoxWidget.HasFocus = true;
32 m_textBoxWidget.Enter += delegate { Dismiss(m_textBoxWidget.Text); };
33 AutoHide = true;
34 }
35
36 public TextBoxDialog(string title, string text, int maximumLength, Action<string> handler, Action<TextBoxWidget> handler2) {
37 m_handler = handler;
38 m_handler2 = handler2;
39 XElement node = ContentManager.Get<XElement>("Dialogs/TextBoxDialog");
40 LoadContents(this, node);
41 m_titleWidget = Children.Find<LabelWidget>("TextBoxDialog.Title");
42 m_textBoxWidget = Children.Find<TextBoxWidget>("TextBoxDialog.TextBox");
43 m_okButtonWidget = Children.Find<ButtonWidget>("TextBoxDialog.OkButton");
44 m_cancelButtonWidget = Children.Find<ButtonWidget>("TextBoxDialog.CancelButton");
45 m_titleWidget.IsVisible = !string.IsNullOrEmpty(title);
46 m_titleWidget.Text = title ?? string.Empty;
47 m_textBoxWidget.MaximumLength = maximumLength;
48 m_textBoxWidget.Text = text ?? string.Empty;
49 m_textBoxWidget.HasFocus = true;
50 m_textBoxWidget.Enter += delegate { Dismiss(m_textBoxWidget.Text); };
51 if (m_handler2 != null) {
52 m_textBoxWidget.TextChanged += delegate(TextBoxWidget textBox) { m_handler2.Invoke(textBox); };
53 }
54 AutoHide = true;
55 }
56
57 public override void Update() {
58 if (Input.Cancel) {
59 Dismiss(null);
60 }
61 else if (Input.Ok) {
63 }
64 else if (m_okButtonWidget.IsClicked) {
66 }
67 else if (m_cancelButtonWidget.IsClicked) {
68 Dismiss(null);
69 }
70 }
71
72 public void Dismiss(string result) {
73 if (AutoHide) {
75 }
76 m_handler?.Invoke(result);
77 }
78 }
79}
readonly WidgetsList Children
static object Get(Type type, string name)
static void HideDialog(Dialog dialog)
Action< string > m_handler
TextBoxWidget m_textBoxWidget
TextBoxDialog(string title, string text, int maximumLength, Action< string > handler, Action< TextBoxWidget > handler2)
ButtonWidget m_okButtonWidget
ButtonWidget m_cancelButtonWidget
Action< TextBoxWidget > m_handler2
void Dismiss(string result)
TextBoxDialog(string title, string text, int maximumLength, Action< string > handler)
virtual void LoadContents(object eventsTarget, XElement node)