2023-08-15 17:29:11 +08:00
|
|
|
package system
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/yohamta/donburi/filter"
|
|
|
|
"joylink.club/ecs"
|
|
|
|
"joylink.club/rtsssimulation/components"
|
|
|
|
)
|
|
|
|
|
|
|
|
// 调试时显示一些信息
|
|
|
|
type DebugSystem struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewDebugSystem() *DebugSystem {
|
|
|
|
return &DebugSystem{}
|
|
|
|
}
|
|
|
|
|
|
|
|
// world 执行
|
|
|
|
func (me *DebugSystem) Update(w ecs.World) {
|
2023-08-22 14:37:30 +08:00
|
|
|
//debugPsd(w)
|
|
|
|
debugSwitch(w)
|
|
|
|
//debugSignal(w)
|
2023-08-17 14:25:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 屏蔽门状态
|
|
|
|
func debugPsd(w ecs.World) {
|
2023-08-18 10:06:17 +08:00
|
|
|
psdQuery = ecs.NewQuery(filter.Contains(components.DeviceIdentityComponent, components.PsdStateComponent, components.EntityTagHandlerComponent))
|
2023-08-17 14:25:18 +08:00
|
|
|
psdQuery.Each(w, func(e *ecs.Entry) {
|
2023-08-18 10:06:17 +08:00
|
|
|
psdId := components.DeviceIdentityComponent.Get(e).Id
|
|
|
|
psdState := components.PsdStateComponent.Get(e)
|
|
|
|
psdTag := components.EntityTagHandlerComponent.Get(e).Tag
|
2023-08-17 14:25:18 +08:00
|
|
|
fmt.Printf("屏蔽门[%s] ,全关=%t ,全开=%t ,互锁解除=%t > ", psdId, psdState.AllClosed, psdState.AllOpened, psdState.InterlockReleased)
|
|
|
|
//
|
2023-08-18 16:15:19 +08:00
|
|
|
psdCellQuery := ecs.NewQuery(filter.Contains(psdTag, components.PercentageDeviceComponent))
|
2023-08-17 14:25:18 +08:00
|
|
|
psdCellQuery.Each(w, func(e *ecs.Entry) {
|
2023-08-18 10:06:17 +08:00
|
|
|
psdCellId := components.DeviceIdentityComponent.Get(e).Id
|
2023-08-18 16:15:19 +08:00
|
|
|
psdCellState := components.PercentageDeviceComponent.Get(e)
|
2023-08-17 14:25:18 +08:00
|
|
|
//
|
2023-08-18 16:15:19 +08:00
|
|
|
fmt.Printf("|| cell[%s] ,closeRate=%d ", psdCellId, psdCellState.Rate)
|
|
|
|
if e.HasComponent(components.PercentageDeviceOperatingComponent) {
|
|
|
|
psdCellOpt := components.PercentageDeviceOperatingComponent.Get(e)
|
|
|
|
if psdCellOpt.ToH {
|
2023-08-17 14:25:18 +08:00
|
|
|
fmt.Printf("== 关门操作中,剩余移动距离=%d", psdCellOpt.RemainingDistance)
|
|
|
|
} else {
|
|
|
|
fmt.Printf("== 开门操作中,剩余移动距离=%d", psdCellOpt.RemainingDistance)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
//
|
|
|
|
fmt.Println()
|
|
|
|
})
|
2023-08-16 15:14:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 显示信号机状态
|
|
|
|
func debugSignal(w ecs.World) {
|
2023-08-18 10:06:17 +08:00
|
|
|
siganlQuery := ecs.NewQuery(filter.Contains(components.DeviceIdentityComponent, components.SignalStateComponent))
|
2023-08-16 15:14:03 +08:00
|
|
|
siganlQuery.Each(w, func(e *ecs.Entry) {
|
2023-08-18 10:06:17 +08:00
|
|
|
id := components.DeviceIdentityComponent.Get(e).Id
|
|
|
|
state := components.SignalStateComponent.Get(e)
|
2023-08-16 15:14:03 +08:00
|
|
|
fmt.Printf("==>>信号机[%s],显示=%d\n", id, state.Display)
|
|
|
|
})
|
2023-08-15 17:29:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// 显示道岔状态
|
|
|
|
func debugSwitch(w ecs.World) {
|
2023-08-18 14:40:13 +08:00
|
|
|
switchesQuery := ecs.NewQuery(filter.Contains(components.DeviceIdentityComponent, components.SwitchRelayStateComponent, components.PercentageDeviceComponent))
|
|
|
|
switchesQuery.Each(w, func(e *ecs.Entry) {
|
|
|
|
id := components.DeviceIdentityComponent.Get(e).Id
|
|
|
|
curRate := components.PercentageDeviceComponent.Get(e).Rate
|
|
|
|
j := components.SwitchRelayStateComponent.Get(e)
|
|
|
|
fmt.Printf("道岔 [%s],当前位置百分比 [%d] ,Dcj = %t, Fcj = %t, Dbj = %t ,Fbj = %t ,", id, curRate, j.DcJ, j.FcJ, j.DbJ, j.FbJ)
|
|
|
|
if e.HasComponent(components.PercentageDeviceOperatingComponent) {
|
|
|
|
opt := components.PercentageDeviceOperatingComponent.Get(e)
|
|
|
|
fmt.Printf(" ==> 正在转动,剩余距离[%d]ms", opt.RemainingDistance)
|
|
|
|
}
|
|
|
|
fmt.Println()
|
|
|
|
})
|
2023-08-15 17:29:11 +08:00
|
|
|
}
|