Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ListSelectionDialog.cs
浏览该文件的文档.
1
using
System.Xml.Linq;
2
using
Engine
;
3
4
namespace
Game
{
5
public
class
ListSelectionDialog
:
Dialog
{
6
public
Action<object>
m_selectionHandler
;
7
8
public
LabelWidget
m_titleLabelWidget
;
9
10
public
ListPanelWidget
m_listWidget
;
11
12
public
CanvasWidget
m_contentWidget
;
13
14
public
double
?
m_dismissTime
;
15
16
public
bool
m_isDismissed
;
17
18
public
Vector2
ContentSize
{
19
get
=>
m_contentWidget
.Size;
20
set
=> m_contentWidget.Size = value;
21
}
22
23
public
ListSelectionDialog
(
string
title,
24
IEnumerable items,
25
float
itemSize,
26
Func<object, Widget> itemWidgetFactory,
27
Action<object> selectionHandler) {
28
m_selectionHandler
= selectionHandler;
29
XElement node =
ContentManager
.
Get
<XElement>(
"Dialogs/ListSelectionDialog"
);
30
LoadContents
(
this
, node);
31
m_titleLabelWidget
=
Children
.Find<
LabelWidget
>(
"ListSelectionDialog.Title"
);
32
m_listWidget
=
Children
.Find<
ListPanelWidget
>(
"ListSelectionDialog.List"
);
33
m_contentWidget
=
Children
.Find<
CanvasWidget
>(
"ListSelectionDialog.Content"
);
34
m_titleLabelWidget.Text = title;
35
m_titleLabelWidget.IsVisible = !
string
.IsNullOrEmpty(title);
36
m_listWidget.ItemSize = itemSize;
37
if
(itemWidgetFactory !=
null
) {
38
m_listWidget.ItemWidgetFactory = itemWidgetFactory;
39
}
40
foreach
(
object
item
in
items) {
41
m_listWidget
.AddItem(item);
42
}
43
int
num =
m_listWidget
.Items.Count;
44
float
num2;
45
while
(
true
) {
46
if
(num >= 0) {
47
num2 =
MathUtils
.
Min
(num + 0.5f,
m_listWidget
.Items.Count);
48
if
(num2 * itemSize <=
m_contentWidget
.Size.Y) {
49
break
;
50
}
51
num--;
52
continue
;
53
}
54
return
;
55
}
56
m_contentWidget.Size =
new
Vector2
(
m_contentWidget
.Size.X, num2 * itemSize);
57
}
58
59
public
ListSelectionDialog
(
string
title,
60
IEnumerable items,
61
float
itemSize,
62
Func<object, string> itemToStringConverter,
63
Action<object> selectionHandler) : this(
64
title,
65
items,
66
itemSize,
67
item => new
LabelWidget
{
68
Text = itemToStringConverter(item),
HorizontalAlignment
=
WidgetAlignment
.
Center
,
VerticalAlignment
=
WidgetAlignment
.
Center
69
},
70
selectionHandler
71
) { }
72
73
public
override
void
Update
() {
74
if
(
Input
.Back
75
||
Input
.Cancel) {
76
m_dismissTime
= 0.0;
77
}
78
else
if
(
Input
.Tap.HasValue
79
&& !
m_listWidget
.HitTest(
Input
.Tap.Value)) {
80
m_dismissTime
= 0.0;
81
}
82
else
if
(!
m_dismissTime
.HasValue
83
&&
m_listWidget
.SelectedItem !=
null
) {
84
m_dismissTime
=
Time.FrameStartTime
+ 0.05000000074505806;
85
}
86
if
(
m_dismissTime
.HasValue
87
&&
Time
.
FrameStartTime
>=
m_dismissTime
.Value) {
88
Dismiss
(
m_listWidget
.SelectedItem);
89
}
90
}
91
92
public
void
Dismiss
(
object
result) {
93
if
(!
m_isDismissed
) {
94
m_isDismissed
=
true
;
95
DialogsManager
.
HideDialog
(
this
);
96
if
(
m_selectionHandler
!=
null
97
&& result !=
null
) {
98
m_selectionHandler
(result);
99
}
100
}
101
}
102
}
103
}
Engine.MathUtils
定义
MathUtils.cs:2
Engine.MathUtils.Min
static int Min(int x1, int x2)
定义
MathUtils.cs:7
Engine.Time
定义
Time.cs:4
Engine.Time.FrameStartTime
static double FrameStartTime
定义
Time.cs:42
Game.CanvasWidget
定义
CanvasWidget.cs:4
Game.ContainerWidget.Children
readonly WidgetsList Children
定义
ContainerWidget.cs:5
Game.ContentManager
定义
ContentManager.cs:50
Game.ContentManager.Get
static object Get(Type type, string name)
定义
ContentManager.cs:70
Game.Dialog.Dialog
Dialog()
定义
Dialog.cs:5
Game.DialogsManager
定义
DialogsManager.cs:4
Game.DialogsManager.HideDialog
static void HideDialog(Dialog dialog)
定义
DialogsManager.cs:58
Game.LabelWidget
定义
LabelWidget.cs:4
Game.ListPanelWidget
定义
ListPanelWidget.cs:5
Game.ListSelectionDialog.Dismiss
void Dismiss(object result)
定义
ListSelectionDialog.cs:92
Game.ListSelectionDialog.m_selectionHandler
Action< object > m_selectionHandler
定义
ListSelectionDialog.cs:6
Game.ListSelectionDialog.ListSelectionDialog
ListSelectionDialog(string title, IEnumerable items, float itemSize, Func< object, string > itemToStringConverter, Action< object > selectionHandler)
定义
ListSelectionDialog.cs:59
Game.ListSelectionDialog.m_dismissTime
double? m_dismissTime
定义
ListSelectionDialog.cs:14
Game.ListSelectionDialog.ListSelectionDialog
ListSelectionDialog(string title, IEnumerable items, float itemSize, Func< object, Widget > itemWidgetFactory, Action< object > selectionHandler)
定义
ListSelectionDialog.cs:23
Game.ListSelectionDialog.m_titleLabelWidget
LabelWidget m_titleLabelWidget
定义
ListSelectionDialog.cs:8
Game.ListSelectionDialog.Update
override void Update()
定义
ListSelectionDialog.cs:73
Game.ListSelectionDialog.ContentSize
Vector2 ContentSize
定义
ListSelectionDialog.cs:18
Game.ListSelectionDialog.m_listWidget
ListPanelWidget m_listWidget
定义
ListSelectionDialog.cs:10
Game.ListSelectionDialog.m_contentWidget
CanvasWidget m_contentWidget
定义
ListSelectionDialog.cs:12
Game.ListSelectionDialog.m_isDismissed
bool m_isDismissed
定义
ListSelectionDialog.cs:16
Game.Widget.VerticalAlignment
virtual WidgetAlignment VerticalAlignment
定义
Widget.cs:445
Game.Widget.HorizontalAlignment
virtual WidgetAlignment HorizontalAlignment
定义
Widget.cs:443
Game.Widget.LoadContents
virtual void LoadContents(object eventsTarget, XElement node)
定义
Widget.cs:507
Engine.Input
定义
CursorType.cs:1
Engine
定义
BaseSound.cs:10
Game
定义
ContentFileBridge.cs:4
Game.WidgetAlignment
WidgetAlignment
定义
WidgetAlignment.cs:2
Game.WidgetAlignment.Center
@ Center
定义
WidgetAlignment.cs:4
Engine.Vector2
定义
Vector2.cs:2
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Dialog
ListSelectionDialog.cs
制作者
1.16.1