Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemWhistleBlockBehavior.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
7
9
11
12 public Random m_random = new();
13
14 public override int[] HandledBlocks => [160];
15
16 public override bool OnUse(Ray3 ray, ComponentMiner componentMiner) {
17 m_subsystemAudio.PlayRandomSound("Audio/Whistle", 1f, m_random.Float(-0.2f, 0f), ray.Position, 4f, true);
18 m_subsystemNoise.MakeNoise(componentMiner.ComponentCreature.ComponentBody, 0.5f, 30f);
19 DynamicArray<ComponentBody> dynamicArray = new();
20 m_subsystemBodies.FindBodiesAroundPoint(
22 64f,
23 dynamicArray
24 );
25 float num = float.PositiveInfinity;
26 List<ComponentBody> list = new();
27 foreach (ComponentBody item in dynamicArray) {
29 if (componentSummonBehavior != null
30 && componentSummonBehavior.IsEnabled) {
31 float num2 = Vector3.Distance(item.Position, componentMiner.ComponentCreature.ComponentBody.Position);
32 if (num2 > 4f
33 && componentSummonBehavior.SummonTarget == null) {
34 list.Add(item);
35 num = MathUtils.Min(num, num2);
36 }
37 else {
38 componentSummonBehavior.SummonTarget = componentMiner.ComponentCreature.ComponentBody;
39 }
40 }
41 }
42 foreach (ComponentBody item2 in list) {
43 ComponentSummonBehavior componentSummonBehavior2 = item2.Entity.FindComponent<ComponentSummonBehavior>();
44 if (componentSummonBehavior2 != null
45 && Vector3.Distance(item2.Position, componentMiner.ComponentCreature.ComponentBody.Position) < num + 4f) {
46 componentSummonBehavior2.SummonTarget = componentMiner.ComponentCreature.ComponentBody;
47 }
48 }
49 componentMiner.DamageActiveTool(1);
50 return true;
51 }
52
53 public override void Load(ValuesDictionary valuesDictionary) {
54 base.Load(valuesDictionary);
55 m_subsystemBodies = Project.FindSubsystem<SubsystemBodies>(true);
56 m_subsystemAudio = Project.FindSubsystem<SubsystemAudio>(true);
57 m_subsystemNoise = Project.FindSubsystem<SubsystemNoise>(true);
58 }
59 }
60}
static int Min(int x1, int x2)
ComponentCreature ComponentCreature
override void Load(ValuesDictionary valuesDictionary)
override bool OnUse(Ray3 ray, ComponentMiner componentMiner)
Component FindComponent(Type type, string name, bool throwOnError)
ValuesDictionary ValuesDictionary
Vector3 Position
定义 Ray3.cs:3
static float Distance(Vector3 v1, Vector3 v2)