Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemFenceGateBlockBehavior.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
7
8 public static Random m_random = new();
9
10 public override int[] HandledBlocks => [];
11
12 public bool OpenCloseGate(int x, int y, int z, bool open) {
13 int cellValue = SubsystemTerrain.Terrain.GetCellValue(x, y, z);
14 int num = Terrain.ExtractContents(cellValue);
16 int data = FenceGateBlock.SetOpen(Terrain.ExtractData(cellValue), open);
17 int value = Terrain.ReplaceData(cellValue, data);
18 SubsystemTerrain.ChangeCell(x, y, z, value);
19 string name = open ? "Audio/Doors/DoorOpen" : "Audio/Doors/DoorClose";
20 SubsystemTerrain.Project.FindSubsystem<SubsystemAudio>(true)
21 .PlaySound(name, 0.7f, m_random.Float(-0.1f, 0.1f), new Vector3(x, y, z), 4f, true);
22 return true;
23 }
24 return false;
25 }
26
27 public bool IsGateElectricallyConnected(int x, int y, int z) {
28 int cellValue = SubsystemTerrain.Terrain.GetCellValue(x, y, z);
29 int num = Terrain.ExtractContents(cellValue);
30 int data = Terrain.ExtractData(cellValue);
32 ElectricElement electricElement = m_subsystemElectricity.GetElectricElement(x, y, z, FenceGateBlock.GetHingeFace(data));
33 if (electricElement != null
34 && electricElement.Connections.Count > 0) {
35 return true;
36 }
37 }
38 return false;
39 }
40
41 public override bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner) {
42 CellFace cellFace = raycastResult.CellFace;
43 int cellValue = SubsystemTerrain.Terrain.GetCellValue(cellFace.X, cellFace.Y, cellFace.Z);
44 int num = Terrain.ExtractContents(cellValue);
45 int data = Terrain.ExtractData(cellValue);
46 if (num == 166
47 || !IsGateElectricallyConnected(cellFace.X, cellFace.Y, cellFace.Z)) {
48 bool open = FenceGateBlock.GetOpen(data);
49 return OpenCloseGate(cellFace.X, cellFace.Y, cellFace.Z, !open);
50 }
51 return true;
52 }
53
54 public override void Load(ValuesDictionary valuesDictionary) {
55 base.Load(valuesDictionary);
57 }
58 }
59}
List< ElectricConnection > Connections
static int GetHingeFace(int data)
static bool GetOpen(int data)
static int SetOpen(int data, bool open)
override void Load(ValuesDictionary valuesDictionary)
override bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner)
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
static int ExtractData(int value)
ValuesDictionary ValuesDictionary