package system import ( "joylink.club/ecs" "joylink.club/ecs/filter" ) // 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 }