Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
PlayersScreen.cs
浏览该文件的文档.
1
using
System.Xml.Linq;
2
using
Engine
;
3
4
namespace
Game
{
5
public
class
PlayersScreen
:
Screen
{
6
public
StackPanelWidget
m_playersPanel
;
7
public
ButtonWidget
m_addPlayerButton
;
8
public
ButtonWidget
m_screenLayoutButton
;
9
10
public
SubsystemPlayers
m_subsystemPlayers
;
11
public
CharacterSkinsCache
m_characterSkinsCache
=
new
();
12
public
const
string
fName
=
"PlayersScreen"
;
13
14
public
PlayersScreen
() {
15
XElement node =
ContentManager
.
Get
<XElement>(
"Screens/PlayersScreen"
);
16
LoadContents
(
this
, node);
17
m_playersPanel
=
Children
.Find<
StackPanelWidget
>(
"PlayersPanel"
);
18
m_addPlayerButton
=
Children
.Find<
ButtonWidget
>(
"AddPlayerButton"
);
19
m_screenLayoutButton
=
Children
.Find<
ButtonWidget
>(
"ScreenLayoutButton"
);
20
}
21
22
public
override
void
Enter
(
object
[] parameters) {
23
m_subsystemPlayers
= (
SubsystemPlayers
)parameters[0];
24
m_subsystemPlayers.PlayerAdded +=
PlayersChanged
;
25
m_subsystemPlayers.PlayerRemoved +=
PlayersChanged
;
26
UpdatePlayersPanel
();
27
}
28
29
public
override
void
Leave
() {
30
m_subsystemPlayers.PlayerAdded -=
PlayersChanged
;
31
m_subsystemPlayers.PlayerRemoved -=
PlayersChanged
;
32
m_subsystemPlayers
=
null
;
33
m_characterSkinsCache
.Clear();
34
m_playersPanel
.Children.Clear();
35
}
36
37
public
override
void
Update
() {
38
if
(
m_addPlayerButton
.IsClicked) {
39
SubsystemGameInfo
subsystemGameInfo =
m_subsystemPlayers
.Project.FindSubsystem<
SubsystemGameInfo
>(
true
);
40
if
(subsystemGameInfo.
WorldSettings
.
GameMode
==
GameMode
.Cruel) {
41
DialogsManager
.
ShowDialog
(
42
null
,
43
new
MessageDialog
(
44
LanguageControl
.
Unavailable
,
45
LanguageControl
.
GetContentWidgets
(
fName
, 3),
46
LanguageControl
.
Ok
,
47
null
,
48
null
49
)
50
);
51
}
52
else
if
(subsystemGameInfo.
WorldSettings
.
GameMode
==
GameMode
.Adventure) {
53
DialogsManager
.
ShowDialog
(
54
null
,
55
new
MessageDialog
(
56
LanguageControl
.
Unavailable
,
57
LanguageControl
.
GetContentWidgets
(
fName
, 4),
58
LanguageControl
.
Ok
,
59
null
,
60
null
61
)
62
);
63
}
64
else
if
(
m_subsystemPlayers
.PlayersData.Count >= 4) {
65
DialogsManager
.
ShowDialog
(
66
null
,
67
new
MessageDialog
(
68
LanguageControl
.
Unavailable
,
69
string
.Format(
LanguageControl
.
GetContentWidgets
(
fName
, 5),
SubsystemPlayers
.
MaxPlayers
),
70
LanguageControl
.
Ok
,
71
null
,
72
null
73
)
74
);
75
}
76
else
{
77
ScreensManager
.
SwitchScreen
(
"Player"
,
PlayerScreen
.
Mode
.Add,
m_subsystemPlayers
.Project);
78
}
79
}
80
if
(
m_screenLayoutButton
.IsClicked) {
81
ScreenLayout
[] array =
null
;
82
if
(
m_subsystemPlayers
.PlayersData.Count == 1) {
83
array =
new
ScreenLayout
[1];
84
}
85
else
if
(
m_subsystemPlayers
.PlayersData.Count == 2) {
86
array = [
ScreenLayout
.DoubleVertical,
ScreenLayout
.DoubleHorizontal,
ScreenLayout
.DoubleOpposite];
87
}
88
else
if
(
m_subsystemPlayers
.PlayersData.Count == 3) {
89
array = [
ScreenLayout
.TripleVertical,
ScreenLayout
.TripleHorizontal,
ScreenLayout
.TripleEven,
ScreenLayout
.TripleOpposite];
90
}
91
else
if
(
m_subsystemPlayers
.PlayersData.Count == 4) {
92
array = [
ScreenLayout
.Quadruple,
ScreenLayout
.QuadrupleOpposite];
93
}
94
if
(array !=
null
) {
95
DialogsManager
.
ShowDialog
(
96
null
,
97
new
ListSelectionDialog
(
98
LanguageControl
.
GetContentWidgets
(
fName
, 6),
99
array,
100
80f,
101
delegate(
object
o) {
102
string
str = o.ToString();
103
string
name = $
"Textures/Atlas/ScreenLayout{str}"
;
104
return
new
StackPanelWidget
{
105
Direction =
LayoutDirection
.Horizontal,
106
VerticalAlignment
=
WidgetAlignment
.Center,
107
Children
= {
108
new
RectangleWidget
{
109
Size
=
new
Vector2
(98f, 56f),
110
Subtexture
=
ContentManager
.
Get
<
Subtexture
>(name),
111
FillColor =
Color
.
White
,
112
OutlineColor =
Color
.
Transparent
,
113
Margin
=
new
Vector2
(10f, 0f)
114
},
115
new
StackPanelWidget
{
116
Direction =
LayoutDirection
.Vertical,
117
VerticalAlignment
=
WidgetAlignment
.Center,
118
Margin
=
new
Vector2
(10f, 0f),
119
Children
= {
120
new
LabelWidget
{ Text =
StringsManager
.
GetString
($
"ScreenLayout.{str}.Name"
) },
121
new
LabelWidget
{
122
Text =
StringsManager
.
GetString
($
"ScreenLayout.{str}.Description"
),
Color
= Color.Gray
123
}
124
}
125
}
126
}
127
};
128
},
129
delegate(
object
o) {
130
if
(o !=
null
) {
131
if
(
m_subsystemPlayers
.PlayersData.Count == 1) {
132
SettingsManager.ScreenLayout1
= (
ScreenLayout
)o;
133
}
134
if
(
m_subsystemPlayers
.PlayersData.Count == 2) {
135
SettingsManager.ScreenLayout2
= (
ScreenLayout
)o;
136
}
137
if
(
m_subsystemPlayers
.PlayersData.Count == 3) {
138
SettingsManager.ScreenLayout3
= (
ScreenLayout
)o;
139
}
140
if
(
m_subsystemPlayers
.PlayersData.Count == 4) {
141
SettingsManager.ScreenLayout4
= (
ScreenLayout
)o;
142
}
143
}
144
}
145
)
146
);
147
}
148
}
149
if
(
Input
.Back
150
||
Input
.Cancel
151
||
Children
.Find<
ButtonWidget
>(
"TopBar.Back"
).
IsClicked
) {
152
ScreensManager
.
SwitchScreen
(
"Game"
);
153
}
154
}
155
156
public
virtual
void
UpdatePlayersPanel
() {
157
m_playersPanel
.Children.Clear();
158
foreach
(
PlayerData
playersDatum
in
m_subsystemPlayers
.PlayersData) {
159
m_playersPanel
.Children.Add(
new
PlayerWidget
(playersDatum,
m_characterSkinsCache
));
160
}
161
}
162
163
public
void
PlayersChanged
(
PlayerData
playerData) {
164
UpdatePlayersPanel
();
165
}
166
}
167
}
Game.ButtonWidget
定义
ButtonWidget.cs:5
Game.ButtonWidget.IsClicked
bool IsClicked
定义
ButtonWidget.cs:6
Game.CanvasWidget.Size
Vector2 Size
定义
CanvasWidget.cs:7
Game.CharacterSkinsCache
定义
CharacterSkinsCache.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.DialogsManager
定义
DialogsManager.cs:4
Game.DialogsManager.ShowDialog
static void ShowDialog(ContainerWidget parentWidget, Dialog dialog)
定义
DialogsManager.cs:35
Game.LabelWidget
定义
LabelWidget.cs:4
Game.LanguageControl
定义
LanguageControl.cs:8
Game.LanguageControl.Ok
static string Ok
定义
LanguageControl.cs:11
Game.LanguageControl.GetContentWidgets
static string GetContentWidgets(string name, string prop)
定义
LanguageControl.cs:348
Game.LanguageControl.Unavailable
static string Unavailable
定义
LanguageControl.cs:27
Game.ListSelectionDialog
定义
ListSelectionDialog.cs:5
Game.MessageDialog
定义
MessageDialog.cs:5
Game.PlayerData
定义
PlayerData.cs:7
Game.PlayerScreen
定义
PlayerScreen.cs:9
Game.PlayerScreen.Mode
Mode
定义
PlayerScreen.cs:10
Game.PlayerWidget
定义
PlayerWidget.cs:4
Game.PlayersScreen.m_characterSkinsCache
CharacterSkinsCache m_characterSkinsCache
定义
PlayersScreen.cs:11
Game.PlayersScreen.fName
const string fName
定义
PlayersScreen.cs:12
Game.PlayersScreen.m_subsystemPlayers
SubsystemPlayers m_subsystemPlayers
定义
PlayersScreen.cs:10
Game.PlayersScreen.m_addPlayerButton
ButtonWidget m_addPlayerButton
定义
PlayersScreen.cs:7
Game.PlayersScreen.PlayersChanged
void PlayersChanged(PlayerData playerData)
定义
PlayersScreen.cs:163
Game.PlayersScreen.m_screenLayoutButton
ButtonWidget m_screenLayoutButton
定义
PlayersScreen.cs:8
Game.PlayersScreen.PlayersScreen
PlayersScreen()
定义
PlayersScreen.cs:14
Game.PlayersScreen.UpdatePlayersPanel
virtual void UpdatePlayersPanel()
定义
PlayersScreen.cs:156
Game.PlayersScreen.Leave
override void Leave()
定义
PlayersScreen.cs:29
Game.PlayersScreen.Update
override void Update()
定义
PlayersScreen.cs:37
Game.PlayersScreen.Enter
override void Enter(object[] parameters)
定义
PlayersScreen.cs:22
Game.PlayersScreen.m_playersPanel
StackPanelWidget m_playersPanel
定义
PlayersScreen.cs:6
Game.RectangleWidget
定义
RectangleWidget.cs:5
Game.Screen
定义
Screen.cs:2
Game.ScreensManager
定义
ScreensManager.cs:5
Game.ScreensManager.SwitchScreen
static void SwitchScreen(string name, params object[] parameters)
定义
ScreensManager.cs:65
Game.SettingsManager.ScreenLayout2
static ScreenLayout ScreenLayout2
定义
SettingsManager.cs:297
Game.SettingsManager.ScreenLayout4
static ScreenLayout ScreenLayout4
定义
SettingsManager.cs:301
Game.SettingsManager.ScreenLayout3
static ScreenLayout ScreenLayout3
定义
SettingsManager.cs:299
Game.SettingsManager.ScreenLayout1
static ScreenLayout ScreenLayout1
定义
SettingsManager.cs:295
Game.StackPanelWidget
定义
StackPanelWidget.cs:4
Game.StringsManager
定义
StringsManager.cs:2
Game.StringsManager.GetString
static string GetString(string name)
定义
StringsManager.cs:3
Game.SubsystemGameInfo
定义
SubsystemGameInfo.cs:5
Game.SubsystemGameInfo.WorldSettings
WorldSettings WorldSettings
定义
SubsystemGameInfo.cs:11
Game.SubsystemPlayers
定义
SubsystemPlayers.cs:7
Game.SubsystemPlayers.MaxPlayers
static int MaxPlayers
定义
SubsystemPlayers.cs:16
Game.Subtexture
定义
Subtexture.cs:5
Game.Widget.VerticalAlignment
virtual WidgetAlignment VerticalAlignment
定义
Widget.cs:445
Game.Widget.Margin
virtual Vector2 Margin
定义
Widget.cs:408
Game.Widget.LoadContents
virtual void LoadContents(object eventsTarget, XElement node)
定义
Widget.cs:507
Game.WorldSettings.GameMode
GameMode GameMode
定义
WorldSettings.cs:12
Engine.Input
定义
CursorType.cs:1
Engine
定义
BaseSound.cs:10
Game
定义
ContentFileBridge.cs:4
Game.LayoutDirection
LayoutDirection
定义
LayoutDirection.cs:2
Game.WidgetAlignment
WidgetAlignment
定义
WidgetAlignment.cs:2
Game.GameMode
GameMode
定义
GameMode.cs:2
Game.ScreenLayout
ScreenLayout
定义
ScreenLayout.cs:2
Engine.Color
定义
Color.cs:2
Engine.Color.Transparent
static Color Transparent
定义
Color.cs:5
Engine.Color.White
static Color White
定义
Color.cs:15
Engine.Vector2
定义
Vector2.cs:2
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Screen
PlayersScreen.cs
制作者
1.16.1