From a2e9b4771da730a20a348487ddcd1553a2af8f43 Mon Sep 17 00:00:00 2001 From: xzb <223@qq.com> Date: Wed, 27 Sep 2023 15:27:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E6=8E=A7=E7=AE=B1=E7=94=B5=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/dcb_system.go | 246 +++++++++++++++++++++++++++++++++++ system/event/button_event.go | 3 + 2 files changed, 249 insertions(+) create mode 100644 system/dcb_system.go create mode 100644 system/event/button_event.go diff --git a/system/dcb_system.go b/system/dcb_system.go new file mode 100644 index 0000000..9974f64 --- /dev/null +++ b/system/dcb_system.go @@ -0,0 +1,246 @@ +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 +} diff --git a/system/event/button_event.go b/system/event/button_event.go new file mode 100644 index 0000000..2ccf600 --- /dev/null +++ b/system/event/button_event.go @@ -0,0 +1,3 @@ +package sysEvent + +//广义按钮相关事件