diff --git a/sys/circuit_sys/psd.go b/sys/circuit_sys/psd.go index df54209..4236d8f 100644 --- a/sys/circuit_sys/psd.go +++ b/sys/circuit_sys/psd.go @@ -94,31 +94,56 @@ func (p *PsdSys) Update(world ecs.World) { // 门控箱按钮驱动继电器 func mkxBtnDriveRelay(mkx *component.Mkx, pmc *component.PlatformMkxCircuit, psdCircuit *component.PsdCircuit) { //PCB - pcbpl := component.BitStateType.Get(mkx.PCBPL).Val - pcb := component.BitStateType.Get(mkx.PCB).Val - component.RelayDriveType.Get(pmc.PCBJ).Td = !pcbpl && pcb + if mkx.PCB != nil { + pcb := component.BitStateType.Get(mkx.PCB).Val + pcbpl := false + if mkx.PCBPL != nil { + pcbpl = component.BitStateType.Get(mkx.PCBPL).Val + } + component.RelayDriveType.Get(pmc.PCBJ).Td = !pcbpl && pcb + } //POB - pobpl := component.BitStateType.Get(mkx.POBPL).Val - pob := component.BitStateType.Get(mkx.POB).Val - component.RelayDriveType.Get(pmc.POBJ).Td = !pobpl && pob + if mkx.POB != nil { + pob := component.BitStateType.Get(mkx.POB).Val + pobpl := false + if mkx.POBPL != nil { + pobpl = component.BitStateType.Get(mkx.POBPL).Val + } + component.RelayDriveType.Get(pmc.POBJ).Td = !pobpl && pob + } //PAB - pabpl := component.BitStateType.Get(mkx.PABPL).Val - pab := component.BitStateType.Get(mkx.PAB).Val - component.RelayDriveType.Get(pmc.PABJ).Td = !pabpl && pab + if mkx.PAB != nil { + pab := component.BitStateType.Get(mkx.PAB).Val + pabpl := false + if mkx.PABPL != nil { + pabpl = component.BitStateType.Get(mkx.PABPL).Val + } + component.RelayDriveType.Get(pmc.PABJ).Td = !pabpl && pab + } //WRZF - wrzfpl := component.BitStateType.Get(mkx.WRZFPL).Val - wrzf := component.BitStateType.Get(mkx.WRZF).Val - component.RelayDriveType.Get(pmc.WRZFJ).Td = !wrzfpl && wrzf + if mkx.WRZF != nil { + wrzf := component.BitStateType.Get(mkx.WRZF).Val + wrzfpl := false + if mkx.WRZFPL != nil { + wrzfpl = component.BitStateType.Get(mkx.WRZFPL).Val + } + component.RelayDriveType.Get(pmc.WRZFJ).Td = !wrzfpl && wrzf + } //QKQR - qkqrpl := component.BitStateType.Get(mkx.QKQRPL).Val - qkqr := component.BitStateType.Get(mkx.QKQR).Val - component.RelayDriveType.Get(pmc.QKQRJ).Td = !qkqrpl && qkqr + if mkx.QKQR != nil { + qkqr := component.BitStateType.Get(mkx.QKQR).Val + qkqrpl := false + if mkx.QKQRPL != nil { + qkqrpl = component.BitStateType.Get(mkx.QKQRPL).Val + } + component.RelayDriveType.Get(pmc.QKQRJ).Td = !qkqrpl && qkqr + } //MPL - if psdCircuit != nil { + if psdCircuit != nil && mkx.MPL != nil { component.RelayDriveType.Get(psdCircuit.MPLJ).Td = component.BitStateType.Get(mkx.MPL).Val } //JXTCPL - if psdCircuit != nil { + if psdCircuit != nil && mkx.JXTCPL != nil { component.RelayDriveType.Get(psdCircuit.JXTCPLJ).Td = component.BitStateType.Get(mkx.JXTCPL).Val } }