rts-sim-module/entity/relay.go
2023-10-07 15:19:03 +08:00

35 lines
1.0 KiB
Go

package entity
import (
"strings"
"joylink.club/ecs"
"joylink.club/rtsssimulation/component"
"joylink.club/rtsssimulation/repository"
"joylink.club/rtsssimulation/repository/model/proto"
)
// 创建继电器实体(有uid)
func NewRelayEntity(w ecs.World, relay *repository.Relay, entityMap map[string]*ecs.Entry) *ecs.Entry {
uid := relay.Id()
model := proto.Relay_Model_name[int32(relay.Model())]
entry, ok := entityMap[uid]
if !ok {
entry = w.Create(component.RelayTag, component.UidType, component.RelayDriveType, component.BitStateType)
component.UidType.SetValue(entry, component.Uid{Id: uid})
if strings.Contains(model, "Y") {
entry.AddComponent(component.YjRelayTag)
} else if strings.Contains(model, "W") {
entry.AddComponent(component.WjRelayTag)
} else if strings.Contains(model, "P") {
entry.AddComponent(component.WjRelayTag)
entry.AddComponent(component.PjRelayTag)
}
if strings.Contains(model, "H") {
entry.AddComponent(component.HfRelayTag)
}
entityMap[uid] = entry
}
return entry
}