rts-sim-module/system/dcb_system.go
2023-09-27 15:27:50 +08:00

247 lines
7.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package system
import (
"github.com/yohamta/donburi/filter"
"joylink.club/ecs"
)
// DcbCircuitState 门控箱电路 A---按钮 J---继电器
type DcbCircuitState struct {
//下行站台门关闭继电器true-继电器吸起
XPCBJ bool
//ture-按钮开关接通常开点
MKX5_PCB5A bool
//ture-按钮开关接通常开点
MKX5_PCB5_MKXPL5A bool
//ture-按钮开关接通常开点
MKX3_PCB3A bool
//ture-按钮开关接通常开点
MKX3_PCB3_MKXPL3A bool
//ture-按钮开关接通常开点
MKX1_PCB1A bool
//ture-按钮开关接通常开点
MKX1_PCB1_MKXPL1A bool
//下行站台门打开继电器true-继电器吸起
XPOBJ bool
//ture-按钮开关接通常开点
MKX5_POB5A bool
//ture-按钮开关接通常开点
MKX5_POB5_MKXPL5A bool
//ture-按钮开关接通常开点
MKX3_POB3A bool
//ture-按钮开关接通常开点
MKX3_POB3_MKXPL3A bool
//ture-按钮开关接通常开点
MKX1_POB1A bool
//ture-按钮开关接通常开点
MKX1_POB1_MKXPL1A bool
//下行站台确认继电器true-继电器吸起
XPABJ bool
//ture-按钮开关接通常开点
MKX5_PAB5A bool
//ture-按钮开关接通常开点
MKX5_PAB5_MKXPL5A bool
//ture-按钮开关接通常开点
MKX3_PAB3A bool
//ture-按钮开关接通常开点
MKX3_PAB3_MKXPL3A bool
//ture-按钮开关接通常开点
MKX1_PAB1A bool
//ture-按钮开关接通常开点
MKX1_PAB1_MKXPL1A bool
//上行站台门关闭继电器true-继电器吸起
SPCBJ bool
//ture-按钮开关接通常开点
MKX6_PCB6A bool
//ture-按钮开关接通常开点
MKX6_PCB6_MKXPL6A bool
//ture-按钮开关接通常开点
MKX4_PCB4A bool
//ture-按钮开关接通常开点
MKX4_PCB4_MKXPL4A bool
//ture-按钮开关接通常开点
MKX2_PCB2A bool
//ture-按钮开关接通常开点
MKX2_PCB2_MKXPL2A bool
//上行站台门开门继电器true-继电器吸起
SPOBJ bool
//ture-按钮开关接通常开点
MKX6_POB6A bool
//ture-按钮开关接通常开点
MKX6_POB6_MKXPL6A bool
//ture-按钮开关接通常开点
MKX4_POB4A bool
//ture-按钮开关接通常开点
MKX4_POB4_MKXPL4A bool
//ture-按钮开关接通常开点
MKX2_POB2A bool
//ture-按钮开关接通常开点
MKX2_POB2_MKXPL2A bool
//上行站台门开门继电器true-继电器吸起
SPABJ bool
//ture-按钮开关接通常开点
MKX6_PAB6A bool
//ture-按钮开关接通常开点
MKX6_PAB6_MKXPL6A bool
//ture-按钮开关接通常开点
MKX4_PAB4A bool
//ture-按钮开关接通常开点
MKX4_PAB4_MKXPL4A bool
//ture-按钮开关接通常开点
MKX2_PAB2A bool
//ture-按钮开关接通常开点
MKX2_PAB2_MKXPL2A bool
}
var DcbCircuitStateComponent = ecs.NewComponentType[DcbCircuitState]()
type DcbCircuitSystem struct {
query *ecs.Query
}
func NewDcbCircuitState() *DcbCircuitState {
return &DcbCircuitState{
//下行站台门关闭继电器true-继电器吸起
XPCBJ: false,
//ture-按钮开关接通常开点
MKX5_PCB5A: false,
//ture-按钮开关接通常开点
MKX5_PCB5_MKXPL5A: true,
//ture-按钮开关接通常开点
MKX3_PCB3A: false,
//ture-按钮开关接通常开点
MKX3_PCB3_MKXPL3A: true,
//ture-按钮开关接通常开点
MKX1_PCB1A: false,
//ture-按钮开关接通常开点
MKX1_PCB1_MKXPL1A: true,
//下行站台门打开继电器true-继电器吸起
XPOBJ: false,
//ture-按钮开关接通常开点
MKX5_POB5A: false,
//ture-按钮开关接通常开点
MKX5_POB5_MKXPL5A: true,
//ture-按钮开关接通常开点
MKX3_POB3A: false,
//ture-按钮开关接通常开点
MKX3_POB3_MKXPL3A: true,
//ture-按钮开关接通常开点
MKX1_POB1A: false,
//ture-按钮开关接通常开点
MKX1_POB1_MKXPL1A: true,
//下行站台确认继电器true-继电器吸起
XPABJ: false,
//ture-按钮开关接通常开点
MKX5_PAB5A: false,
//ture-按钮开关接通常开点
MKX5_PAB5_MKXPL5A: true,
//ture-按钮开关接通常开点
MKX3_PAB3A: false,
//ture-按钮开关接通常开点
MKX3_PAB3_MKXPL3A: true,
//ture-按钮开关接通常开点
MKX1_PAB1A: false,
//ture-按钮开关接通常开点
MKX1_PAB1_MKXPL1A: true,
//上行站台门关闭继电器true-继电器吸起
SPCBJ: false,
//ture-按钮开关接通常开点
MKX6_PCB6A: false,
//ture-按钮开关接通常开点
MKX6_PCB6_MKXPL6A: true,
//ture-按钮开关接通常开点
MKX4_PCB4A: false,
//ture-按钮开关接通常开点
MKX4_PCB4_MKXPL4A: true,
//ture-按钮开关接通常开点
MKX2_PCB2A: false,
//ture-按钮开关接通常开点
MKX2_PCB2_MKXPL2A: true,
//上行站台门开门继电器true-继电器吸起
SPOBJ: false,
//ture-按钮开关接通常开点
MKX6_POB6A: false,
//ture-按钮开关接通常开点
MKX6_POB6_MKXPL6A: true,
//ture-按钮开关接通常开点
MKX4_POB4A: false,
//ture-按钮开关接通常开点
MKX4_POB4_MKXPL4A: true,
//ture-按钮开关接通常开点
MKX2_POB2A: false,
//ture-按钮开关接通常开点
MKX2_POB2_MKXPL2A: true,
//上行站台门开门继电器true-继电器吸起
SPABJ: false,
//ture-按钮开关接通常开点
MKX6_PAB6A: false,
//ture-按钮开关接通常开点
MKX6_PAB6_MKXPL6A: true,
//ture-按钮开关接通常开点
MKX4_PAB4A: false,
//ture-按钮开关接通常开点
MKX4_PAB4_MKXPL4A: true,
//ture-按钮开关接通常开点
MKX2_PAB2A: false,
//ture-按钮开关接通常开点
MKX2_PAB2_MKXPL2A: true,
}
}
func NewDcbCircuitSystem() *DcbCircuitSystem {
return &DcbCircuitSystem{query: ecs.NewQuery(filter.Contains(DcbCircuitStateComponent))}
}
// Update world 执行
func (me *DcbCircuitSystem) Update(w ecs.World) {
me.query.Each(w, func(e *ecs.Entry) {
state := DcbCircuitStateComponent.Get(e)
//
me.calculateXPCBJ(state)
me.calculateXPOBJ(state)
me.calculateXPABJ(state)
me.calculateSPCBJ(state)
me.calculateSPOBJ(state)
me.calculateSPABJ(state)
})
}
func (me *DcbCircuitSystem) calculateXPCBJ(state *DcbCircuitState) {
state.XPCBJ = state.MKX5_PCB5A && state.MKX5_PCB5_MKXPL5A ||
state.MKX3_PCB3A && state.MKX3_PCB3_MKXPL3A ||
state.MKX1_PCB1A && state.MKX1_PCB1_MKXPL1A
}
func (me *DcbCircuitSystem) calculateXPOBJ(state *DcbCircuitState) {
state.XPOBJ = state.MKX5_POB5A && state.MKX5_POB5_MKXPL5A ||
state.MKX3_POB3A && state.MKX3_POB3_MKXPL3A ||
state.MKX1_POB1A && state.MKX1_POB1_MKXPL1A
}
func (me *DcbCircuitSystem) calculateXPABJ(state *DcbCircuitState) {
state.XPABJ = state.MKX5_PAB5A && state.MKX5_PAB5_MKXPL5A ||
state.MKX3_PAB3A && state.MKX3_PAB3_MKXPL3A ||
state.MKX1_PAB1A && state.MKX1_PAB1_MKXPL1A
}
func (me *DcbCircuitSystem) calculateSPCBJ(state *DcbCircuitState) {
state.SPCBJ = state.MKX6_PCB6A && state.MKX6_PCB6_MKXPL6A ||
state.MKX4_PCB4A && state.MKX4_PCB4_MKXPL4A ||
state.MKX2_PCB2A && state.MKX2_PCB2_MKXPL2A
}
func (me *DcbCircuitSystem) calculateSPOBJ(state *DcbCircuitState) {
state.SPOBJ = state.MKX6_POB6A && state.MKX6_POB6_MKXPL6A ||
state.MKX4_POB4A && state.MKX4_POB4_MKXPL4A ||
state.MKX2_POB2A && state.MKX2_POB2_MKXPL2A
}
func (me *DcbCircuitSystem) calculateSPABJ(state *DcbCircuitState) {
state.SPABJ = state.MKX6_PAB6A && state.MKX6_PAB6_MKXPL6A ||
state.MKX4_PAB4A && state.MKX4_PAB4_MKXPL4A ||
state.MKX2_PAB2A && state.MKX2_PAB2_MKXPL2A
}