不带电路的信号机
This commit is contained in:
parent
80bcb33db6
commit
7e05997668
@ -56,6 +56,15 @@ func NewLights(w ecs.World, lightTags ...component.DsTag) []*ecs.Entry {
|
|||||||
return ls
|
return ls
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewLight 创建灯位,并打标
|
||||||
|
func NewLight(w ecs.World, lightTags ...component.DsTag) *ecs.Entry {
|
||||||
|
lightEntry := NewLightEntity(w)
|
||||||
|
for _, lightTag := range lightTags {
|
||||||
|
lightEntry.AddComponent(lightTag)
|
||||||
|
}
|
||||||
|
return lightEntry
|
||||||
|
}
|
||||||
|
|
||||||
// IsLightFd 灯是否被封(如Signal 3xh3 红绿黄三显示封绿灯)
|
// IsLightFd 灯是否被封(如Signal 3xh3 红绿黄三显示封绿灯)
|
||||||
func IsLightFd(lightEntry *ecs.Entry) bool {
|
func IsLightFd(lightEntry *ecs.Entry) bool {
|
||||||
if lightEntry.HasComponent(component.LightDriveType) && lightEntry.HasComponent(component.BitStateType) {
|
if lightEntry.HasComponent(component.LightDriveType) && lightEntry.HasComponent(component.BitStateType) {
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"joylink.club/ecs"
|
"joylink.club/ecs"
|
||||||
"joylink.club/rtsssimulation/component"
|
"joylink.club/rtsssimulation/component"
|
||||||
"joylink.club/rtsssimulation/consts"
|
"joylink.club/rtsssimulation/consts"
|
||||||
|
"joylink.club/rtsssimulation/repository/model/proto"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -14,9 +15,9 @@ func LoadSignals(w ecs.World) error {
|
|||||||
signals := data.Repo.SignalList()
|
signals := data.Repo.SignalList()
|
||||||
for _, signal := range signals {
|
for _, signal := range signals {
|
||||||
groups := signal.RelayGroups()
|
groups := signal.RelayGroups()
|
||||||
if len(groups) == 1 {
|
|
||||||
group := groups[0]
|
|
||||||
signalEntry := newSignalEntity(w, signal.Id(), data)
|
signalEntry := newSignalEntity(w, signal.Id(), data)
|
||||||
|
if len(groups) == 1 { //带电路的信号机,有且只有一个组合类型,组合类型与电路有关
|
||||||
|
group := groups[0]
|
||||||
elecs := group.Components()
|
elecs := group.Components()
|
||||||
//
|
//
|
||||||
switch group.Code() {
|
switch group.Code() {
|
||||||
@ -55,8 +56,9 @@ func LoadSignals(w ecs.World) error {
|
|||||||
default:
|
default:
|
||||||
slog.Warn(fmt.Sprintf("id=[%s]的信号机,无效组合类型[%s]", signal.Id(), group.Code()))
|
slog.Warn(fmt.Sprintf("id=[%s]的信号机,无效组合类型[%s]", signal.Id(), group.Code()))
|
||||||
}
|
}
|
||||||
} else { //信号机有且只有一个组合类型
|
} else { //不带电路的信号机
|
||||||
slog.Warn("id=[%s]的信号机须有且只有一个组合类型", signal.Id())
|
signalEntry.AddComponent(component.SignalLightsType)
|
||||||
|
component.SignalLightsType.Set(signalEntry, newSignalLightsByModel(w, signal.Model()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -77,3 +79,23 @@ func newSignalEntity(w ecs.World, uid string, worldData *component.WorldData) *e
|
|||||||
func newSignalLights(w ecs.World, lightTags ...component.DsTag) *component.SignalLights {
|
func newSignalLights(w ecs.World, lightTags ...component.DsTag) *component.SignalLights {
|
||||||
return &component.SignalLights{Lights: NewLights(w, lightTags...)}
|
return &component.SignalLights{Lights: NewLights(w, lightTags...)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新建灯位列表
|
||||||
|
func newSignalLightsByModel(w ecs.World, sigMt proto.Signal_Model) *component.SignalLights {
|
||||||
|
switch sigMt {
|
||||||
|
case proto.Signal_HLU:
|
||||||
|
return newSignalLights(w, component.HdTag, component.LdTag, component.UdTag)
|
||||||
|
case proto.Signal_HL:
|
||||||
|
return newSignalLights(w, component.HdTag, component.LdTag)
|
||||||
|
case proto.Signal_HLU_FU:
|
||||||
|
return &component.SignalLights{Lights: []*ecs.Entry{NewLight(w, component.HdTag), NewLight(w, component.LdTag), NewLight(w, component.UdTag, component.FdTag)}}
|
||||||
|
case proto.Signal_HLU_FL:
|
||||||
|
return &component.SignalLights{Lights: []*ecs.Entry{NewLight(w, component.HdTag), NewLight(w, component.LdTag, component.FdTag), NewLight(w, component.UdTag)}}
|
||||||
|
case proto.Signal_AB:
|
||||||
|
return newSignalLights(w, component.AdTag, component.BdTag)
|
||||||
|
case proto.Signal_HBU:
|
||||||
|
return newSignalLights(w, component.HdTag, component.BdTag, component.UdTag)
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("根据信号机模型来创建灯位列表,暂不支持该信号机模型[%d]", sigMt))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -40,3 +40,6 @@ func (s *Signal) RelayGroups() []*ElectronicComponentGroup {
|
|||||||
func (s *Signal) Code() string {
|
func (s *Signal) Code() string {
|
||||||
return s.code
|
return s.code
|
||||||
}
|
}
|
||||||
|
func (s *Signal) Model() proto.Signal_Model {
|
||||||
|
return s.model
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user