Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
AnalogToDigitalConverterElectricElement.cs
浏览该文件的文档.
1namespace Game {
3 public int m_bits;
4
5 public AnalogToDigitalConverterElectricElement(SubsystemElectricity subsystemElectricity, CellFace cellFace) : base(
6 subsystemElectricity,
7 cellFace
8 ) { }
9
10 public override float GetOutputVoltage(int face) {
12 if (connectorDirection.HasValue) {
13 if (connectorDirection.Value == ElectricConnectorDirection.Top) {
14 return (m_bits & 1) != 0 ? 1 : 0;
15 }
16 if (connectorDirection.Value == ElectricConnectorDirection.Right) {
17 return (m_bits & 2) != 0 ? 1 : 0;
18 }
19 if (connectorDirection.Value == ElectricConnectorDirection.Bottom) {
20 return (m_bits & 4) != 0 ? 1 : 0;
21 }
22 if (connectorDirection.Value == ElectricConnectorDirection.Left) {
23 return (m_bits & 8) != 0 ? 1 : 0;
24 }
25 }
26 return 0f;
27 }
28
29 public override bool Simulate() {
30 int bits = m_bits;
31 int rotation = Rotation;
32 foreach (ElectricConnection connection in Connections) {
33 if (connection.ConnectorType != ElectricConnectorType.Output
34 && connection.NeighborConnectorType != 0) {
36 CellFaces[0].Face,
37 rotation,
38 connection.ConnectorFace
39 );
40 if (connectorDirection.HasValue
41 && connectorDirection.Value == ElectricConnectorDirection.In) {
42 float outputVoltage = connection.NeighborElectricElement.GetOutputVoltage(connection.NeighborConnectorFace);
43 m_bits = (int)MathF.Round(outputVoltage * 15f);
44 }
45 }
46 }
47 return m_bits != bits;
48 }
49 }
50}
AnalogToDigitalConverterElectricElement(SubsystemElectricity subsystemElectricity, CellFace cellFace)
ElectricConnectorType ConnectorType
ElectricConnectorType NeighborConnectorType
virtual float GetOutputVoltage(int face)
List< ElectricConnection > Connections
ReadOnlyList< CellFace > CellFaces
RotateableElectricElement(SubsystemElectricity subsystemElectricity, CellFace cellFace)
static ? ElectricConnectorDirection GetConnectorDirection(int mountingFace, int rotation, int connectorFace)