247 lines
7.1 KiB
Go
247 lines
7.1 KiB
Go
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
|
||
}
|