39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package system
|
||
|
||
import (
|
||
"github.com/yohamta/donburi/filter"
|
||
"joylink.club/ecs"
|
||
"joylink.club/rtsssimulation/components"
|
||
"joylink.club/rtsssimulation/umi"
|
||
)
|
||
|
||
// 紧急停车按钮继电器系统
|
||
type EmpRelaySystem struct {
|
||
relaySystem
|
||
// 紧急停车按钮查询
|
||
query *ecs.Query
|
||
}
|
||
|
||
func NewEmpRelaySystem() *EmpRelaySystem {
|
||
return &EmpRelaySystem{
|
||
relaySystem: relaySystem{relayQuery: make(map[string]*ecs.Query)},
|
||
query: ecs.NewQuery(filter.Contains(components.EmpStateComponent)),
|
||
}
|
||
}
|
||
|
||
// world 执行
|
||
func (me *EmpRelaySystem) Update(world ecs.World) {
|
||
me.query.Each(world, func(empEntry *ecs.Entry) {
|
||
//key-继电器作用名,value-继电器实体
|
||
usageRelayMapper := make(map[string]*ecs.Entry)
|
||
//迭代关联的所有继电器
|
||
me.getDeviceRelayQuery(empEntry).Each(world, func(empRelayEntry *ecs.Entry) {
|
||
relayId := components.DeviceIdentityComponent.Get(empRelayEntry).Id
|
||
relayModel := (WorldModelStorage(world).FindById(relayId)).(umi.IRelayModel)
|
||
usageRelayMapper[relayModel.UsageName()] = empRelayEntry
|
||
})
|
||
//根据具体业务逻辑处理继电器
|
||
|
||
})
|
||
}
|