Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ComponentHowlBehavior.cs
浏览该文件的文档.
1
using
Engine
;
2
using
GameEntitySystem
;
3
using
TemplatesDatabase
;
4
5
namespace
Game
{
6
public
class
ComponentHowlBehavior
:
ComponentBehavior
,
IUpdateable
{
7
public
SubsystemSky
m_subsystemSky
;
8
9
public
SubsystemAudio
m_subsystemAudio
;
10
11
public
SubsystemTime
m_subsystemTime
;
12
13
public
ComponentCreature
m_componentCreature
;
14
15
public
ComponentPathfinding
m_componentPathfinding
;
16
17
public
StateMachine
m_stateMachine
=
new
();
18
19
public
float
m_importanceLevel
;
20
21
public
string
m_howlSoundName
;
22
23
public
float
m_howlTime
;
24
25
public
float
m_howlDuration
;
26
27
public
Random
m_random
=
new
();
28
29
public
UpdateOrder
UpdateOrder
=>
UpdateOrder
.Default;
30
31
public
override
float
ImportanceLevel
=>
m_importanceLevel
;
32
33
public
virtual
void
Update
(
float
dt) {
34
m_stateMachine
.Update();
35
}
36
37
public
override
void
Load
(
ValuesDictionary
valuesDictionary,
IdToEntityMap
idToEntityMap) {
38
m_subsystemSky
=
Project
.FindSubsystem<
SubsystemSky
>(
true
);
39
m_subsystemTime
=
Project
.FindSubsystem<
SubsystemTime
>(
true
);
40
m_subsystemAudio
=
Project
.FindSubsystem<
SubsystemAudio
>(
true
);
41
m_componentCreature
=
Entity
.FindComponent<
ComponentCreature
>(
true
);
42
m_componentPathfinding
=
Entity
.FindComponent<
ComponentPathfinding
>(
true
);
43
m_howlSoundName
= valuesDictionary.GetValue<
string
>(
"HowlSoundName"
);
44
m_stateMachine
.AddState(
45
"Inactive"
,
46
delegate {
m_importanceLevel
= 0f; },
47
delegate {
48
if
(
IsActive
) {
49
m_stateMachine
.TransitionTo(
"Howl"
);
50
}
51
if
(
m_subsystemSky
.SkyLightIntensity < 0.1f) {
52
if
(
m_random
.Float(0f, 1f) < 0.015f *
m_subsystemTime
.GameTimeDelta) {
53
m_importanceLevel
=
m_random
.Float(1f, 3f);
54
}
55
}
56
else
{
57
m_importanceLevel
= 0f;
58
}
59
},
60
null
61
);
62
m_stateMachine
.AddState(
63
"Howl"
,
64
delegate {
65
m_howlTime
= 0f;
66
m_howlDuration
=
m_random
.Float(5f, 6f);
67
m_componentPathfinding
.Stop();
68
m_importanceLevel
= 10f;
69
},
70
delegate {
71
if
(!
IsActive
) {
72
m_stateMachine
.TransitionTo(
"Inactive"
);
73
}
74
m_componentCreature.ComponentLocomotion.LookOrder =
new
Vector2
(
m_componentCreature
.ComponentLocomotion.LookOrder.X, 2f);
75
float
num =
m_howlTime
+
m_subsystemTime
.GameTimeDelta;
76
if
(
m_howlTime
<= 0.5f
77
&& num > 0.5f) {
78
m_subsystemAudio
.PlayRandomSound(
79
m_howlSoundName
,
80
1f,
81
m_random
.Float(-0.1f, 0.1f),
82
m_componentCreature
.ComponentBody.Position,
83
10f,
84
true
85
);
86
}
87
m_howlTime
= num;
88
if
(
m_howlTime
>=
m_howlDuration
) {
89
m_importanceLevel
= 0f;
90
}
91
},
92
null
93
);
94
m_stateMachine
.TransitionTo(
"Inactive"
);
95
}
96
}
97
}
Game.ComponentBehavior
定义
ComponentBehavior.cs:4
Game.ComponentBehavior.IsActive
virtual bool IsActive
定义
ComponentBehavior.cs:7
Game.ComponentCreature
定义
ComponentCreature.cs:7
Game.ComponentHowlBehavior
定义
ComponentHowlBehavior.cs:6
Game.ComponentHowlBehavior.Update
virtual void Update(float dt)
定义
ComponentHowlBehavior.cs:33
Game.ComponentHowlBehavior.m_importanceLevel
float m_importanceLevel
定义
ComponentHowlBehavior.cs:19
Game.ComponentHowlBehavior.ImportanceLevel
override float ImportanceLevel
定义
ComponentHowlBehavior.cs:31
Game.ComponentHowlBehavior.UpdateOrder
UpdateOrder UpdateOrder
定义
ComponentHowlBehavior.cs:29
Game.ComponentHowlBehavior.m_subsystemAudio
SubsystemAudio m_subsystemAudio
定义
ComponentHowlBehavior.cs:9
Game.ComponentHowlBehavior.m_componentCreature
ComponentCreature m_componentCreature
定义
ComponentHowlBehavior.cs:13
Game.ComponentHowlBehavior.m_howlTime
float m_howlTime
定义
ComponentHowlBehavior.cs:23
Game.ComponentHowlBehavior.m_howlDuration
float m_howlDuration
定义
ComponentHowlBehavior.cs:25
Game.ComponentHowlBehavior.m_stateMachine
StateMachine m_stateMachine
定义
ComponentHowlBehavior.cs:17
Game.ComponentHowlBehavior.m_howlSoundName
string m_howlSoundName
定义
ComponentHowlBehavior.cs:21
Game.ComponentHowlBehavior.Load
override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap)
定义
ComponentHowlBehavior.cs:37
Game.ComponentHowlBehavior.m_random
Random m_random
定义
ComponentHowlBehavior.cs:27
Game.ComponentHowlBehavior.m_subsystemTime
SubsystemTime m_subsystemTime
定义
ComponentHowlBehavior.cs:11
Game.ComponentHowlBehavior.m_subsystemSky
SubsystemSky m_subsystemSky
定义
ComponentHowlBehavior.cs:7
Game.ComponentHowlBehavior.m_componentPathfinding
ComponentPathfinding m_componentPathfinding
定义
ComponentHowlBehavior.cs:15
Game.ComponentPathfinding
定义
ComponentPathfinding.cs:6
Game.Random
定义
Random.cs:5
Game.StateMachine
定义
StateMachine.cs:2
Game.SubsystemAudio
定义
SubsystemAudio.cs:8
Game.SubsystemSky
定义
SubsystemSky.cs:8
Game.SubsystemTime
定义
SubsystemTime.cs:6
GameEntitySystem.Component.ValuesDictionary
ValuesDictionary ValuesDictionary
定义
Component.cs:12
GameEntitySystem.Component.Project
Project Project
定义
Component.cs:16
GameEntitySystem.Component.Entity
Entity Entity
定义
Component.cs:14
GameEntitySystem.IdToEntityMap
定义
IdToEntityMap.cs:5
Game.IUpdateable
定义
IUpdateable.cs:2
Engine
定义
BaseSound.cs:10
GameEntitySystem
定义
Component.cs:6
Game
定义
ContentFileBridge.cs:4
TemplatesDatabase
定义
Database.cs:6
Engine.Vector2
定义
Vector2.cs:2
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Component
ComponentHowlBehavior.cs
制作者
1.16.1