Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
MessageWidget.cs
浏览该文件的文档.
1
using
System.Xml.Linq;
2
using
Engine
;
3
using
Engine.Graphics
;
4
using
Engine.Media
;
5
6
namespace
Game
{
7
public
class
MessageWidget
:
StackPanelWidget
{
8
public
class
Message
{
9
public
LabelWidget
LabelWidget
;
10
11
public
double
StartTime
;
12
13
public
float
Duration
;
14
15
public
Color
Color
;
16
17
public
bool
Blinking
;
18
19
public
Message
(
string
text,
Color
color,
bool
blinking,
float
fontScale = 1f) {
20
LabelWidget
=
new
LabelWidget
{
21
Text = text,
22
Font =
ContentManager
.
Get
<
BitmapFont
>(
"Fonts/Pericles"
),
23
FontScale = fontScale,
24
HorizontalAlignment
=
WidgetAlignment
.Center,
25
TextAnchor
=
TextAnchor
.Center,
26
DropShadow =
true
,
27
WordWrap =
true
28
};
29
StartTime
=
Time
.
FrameStartTime
;
30
Duration
= blinking ? 6f : 4f +
MathUtils
.
Min
(1f * text.Count(c => c ==
'\n'
), 4f);
31
Color
= color;
32
Blinking
= blinking;
33
}
34
35
public
virtual
void
Update
() {
36
float
num;
37
if
(
Blinking
) {
38
num =
MathUtils
.
Saturate
(1f * (
float
)(
StartTime
+
Duration
-
Time
.
FrameStartTime
));
39
if
(
Time
.
FrameStartTime
-
StartTime
< 0.417) {
40
num *=
MathUtils
.
Lerp
(0.25f, 1f, 0.5f * (1f - MathF.Cos((
float
)Math.PI * 12f * (
float
)(
Time
.
FrameStartTime
-
StartTime
))));
41
}
42
}
43
else
{
44
num =
MathUtils
.
Saturate
(
45
MathUtils
.
Min
(3f * (
float
)(
Time
.
FrameStartTime
-
StartTime
), 1f * (
float
)(
StartTime
+
Duration
-
Time
.
FrameStartTime
))
46
);
47
}
48
LabelWidget.Color
=
Color
* num;
49
}
50
}
51
52
public
const
int
MaxMessages
= 3;
53
54
public
DynamicArray<Message>
m_messages
=
new
();
55
56
public
MessageWidget
() {
57
XElement node =
ContentManager
.
Get
<XElement>(
"Widgets/MessageWidget"
);
58
LoadContents
(
this
, node);
59
}
60
61
public
void
DisplayMessage
(
string
text,
Color
color,
bool
blinking,
float
fontScale = 1f) {
62
if
(!
string
.IsNullOrEmpty(text)) {
63
DisplayMessage
(
new
Message
(text, color, blinking, fontScale));
64
}
65
}
66
67
public
void
DisplayMessage
(
Message
message) {
68
AddMessage
(message);
69
RemoveOldMessages
();
70
}
71
72
public
override
void
Update
() {
73
for
(
int
num =
m_messages
.Count - 1; num >= 0; num--) {
74
m_messages
[num].Update();
75
}
76
RemoveOldMessages
();
77
}
78
79
public
void
AddMessage
(
Message
message) {
80
m_messages
.Add(message);
81
Children
.Add(message.
LabelWidget
);
82
}
83
84
public
void
RemoveMessage
(
Message
message) {
85
m_messages
.Remove(message);
86
Children
.Remove(message.
LabelWidget
);
87
}
88
89
public
void
RemoveOldMessages
() {
90
for
(
int
num =
m_messages
.Count - 1; num >= 0; num--) {
91
Message
message =
m_messages
[num];
92
int
num2 = m_messages.Count - num - 1;
93
if
(
Time
.
FrameStartTime
>= message.
StartTime
+ message.
Duration
94
|| num2 >= 3
95
|| (num2 > 0 && !message.
Blinking
)) {
96
RemoveMessage
(message);
97
}
98
}
99
}
100
}
101
}
Engine.MathUtils
定义
MathUtils.cs:2
Engine.MathUtils.Min
static int Min(int x1, int x2)
定义
MathUtils.cs:7
Engine.MathUtils.Saturate
static float Saturate(float x)
定义
MathUtils.cs:163
Engine.MathUtils.Lerp
static float Lerp(float x1, float x2, float f)
定义
MathUtils.cs:213
Engine.Media.BitmapFont
定义
BitmapFont.cs:6
Engine.Time
定义
Time.cs:4
Engine.Time.FrameStartTime
static double FrameStartTime
定义
Time.cs:42
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.FontTextWidget.Color
Color Color
定义
FontTextWidget.cs:116
Game.MessageWidget.Message
定义
MessageWidget.cs:8
Game.MessageWidget.Message.Message
Message(string text, Color color, bool blinking, float fontScale=1f)
定义
MessageWidget.cs:19
Game.MessageWidget.Message.Update
virtual void Update()
定义
MessageWidget.cs:35
Game.MessageWidget.Message.StartTime
double StartTime
定义
MessageWidget.cs:11
Game.MessageWidget.Message.LabelWidget
LabelWidget LabelWidget
定义
MessageWidget.cs:9
Game.MessageWidget.Message.Color
Color Color
定义
MessageWidget.cs:15
Game.MessageWidget.Message.Blinking
bool Blinking
定义
MessageWidget.cs:17
Game.MessageWidget.Message.Duration
float Duration
定义
MessageWidget.cs:13
Game.MessageWidget.Update
override void Update()
定义
MessageWidget.cs:72
Game.MessageWidget.m_messages
DynamicArray< Message > m_messages
定义
MessageWidget.cs:54
Game.MessageWidget.MaxMessages
const int MaxMessages
定义
MessageWidget.cs:52
Game.MessageWidget.DisplayMessage
void DisplayMessage(string text, Color color, bool blinking, float fontScale=1f)
定义
MessageWidget.cs:61
Game.MessageWidget.RemoveMessage
void RemoveMessage(Message message)
定义
MessageWidget.cs:84
Game.MessageWidget.DisplayMessage
void DisplayMessage(Message message)
定义
MessageWidget.cs:67
Game.MessageWidget.RemoveOldMessages
void RemoveOldMessages()
定义
MessageWidget.cs:89
Game.MessageWidget.MessageWidget
MessageWidget()
定义
MessageWidget.cs:56
Game.MessageWidget.AddMessage
void AddMessage(Message message)
定义
MessageWidget.cs:79
Game.StackPanelWidget
定义
StackPanelWidget.cs:4
Game.Widget.HorizontalAlignment
virtual WidgetAlignment HorizontalAlignment
定义
Widget.cs:443
Game.Widget.LoadContents
virtual void LoadContents(object eventsTarget, XElement node)
定义
Widget.cs:507
Engine.Graphics
定义
BaseBatch.cs:1
Engine.Graphics.TextAnchor
TextAnchor
定义
TextAnchor.cs:3
Engine.Media
定义
BitmapFont.cs:5
Engine
定义
BaseSound.cs:10
Game
定义
ContentFileBridge.cs:4
Game.WidgetAlignment
WidgetAlignment
定义
WidgetAlignment.cs:2
Engine.Color
定义
Color.cs:2
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Widget
MessageWidget.cs
制作者
1.16.1