rts-sim-module/sys/device_sys/light.go

33 lines
829 B
Go
Raw Normal View History

2023-10-11 13:38:33 +08:00
package device_sys
import (
"joylink.club/ecs"
"joylink.club/ecs/filter"
"joylink.club/rtsssimulation/component"
)
// LightSys 灯控制系统
type LightSys struct {
query *ecs.Query
}
func NewLightSys() *LightSys {
return &LightSys{query: ecs.NewQuery(filter.Contains(component.LightDriveType, component.BitStateType))}
}
func (ls *LightSys) Update(w ecs.World) {
ls.query.Each(w, func(entry *ecs.Entry) {
//灯驱动
drive := component.LightDriveType.Get(entry)
//灯当前状态,true-灯丝有电流false-灯丝没有电流
state := component.BitStateType.Get(entry)
//驱动灯亮或灭
2023-10-19 16:46:52 +08:00
state.Val = drive.Td && !ls.calculateFault(entry)
2023-10-11 13:38:33 +08:00
})
}
2023-10-19 13:43:31 +08:00
func (ls *LightSys) calculateFault(entry *ecs.Entry) bool {
//断丝故障
haveFault := entry.HasComponent(component.LightFaultDsType)
return haveFault
}