This commit is contained in:
xzb 2023-10-16 10:45:51 +08:00
parent b2d079d737
commit 9a7ecd5763
2 changed files with 47 additions and 45 deletions

View File

@ -2,6 +2,8 @@ package memory
import (
"fmt"
"joylink.club/rtsssimulation/component"
"joylink.club/rtsssimulation/entity"
"joylink.club/bj-rtsts-server/ats/verify/protos/graphicData"
"joylink.club/bj-rtsts-server/ats/verify/protos/state"
@ -126,3 +128,48 @@ func changeSignal2XH1State(w ecs.World, signalUid string, toAspect state.Signal_
fi.DriveSignal2XH1Non(w, signalUid)
}
}
// 获取仿真地图的信号机状态,用于推送给前端
func GetMapAllSignalState(sim *VerifySimulation, mapId int32) []*state.SignalState {
uidMap := QueryMapUidMapByType(mapId, &graphicData.Signal{})
var signalArr []*state.SignalState
for _, u := range uidMap {
s := handlerSignalState(sim.World, u.Uid)
if s == nil {
continue
}
s.Id = u.CommonId
signalArr = append(signalArr, s)
}
return signalArr
}
func handlerSignalState(w ecs.World, uid string) *state.SignalState {
entry, ok := entity.GetEntityByUid(w, uid)
if !ok {
fmt.Printf("id=%s的道岔不存在", uid)
return nil
}
if !entry.HasComponent(component.SignalLightsType) { //信号机灯列表
return nil
}
signalState := &state.SignalState{}
lights := component.SignalLightsType.Get(entry)
for _, light := range lights.Lights {
lightAspect := &state.Signal_Light{}
switch {
case light.HasComponent(component.LdTag):
lightAspect.Color = state.Signal_L
case light.HasComponent(component.HdTag):
lightAspect.Color = state.Signal_H
case light.HasComponent(component.UdTag):
lightAspect.Color = state.Signal_U
case light.HasComponent(component.BdTag):
lightAspect.Color = state.Signal_B
case light.HasComponent(component.AdTag):
lightAspect.Color = state.Signal_A
}
lightAspect.Display = component.BitStateType.Get(light).Val
signalState.Light = append(signalState.Light, lightAspect)
}
return signalState
}

View File

@ -64,21 +64,6 @@ func GetAllTurnoutState(sim *VerifySimulation) []*state.SwitchState {
return switchArr
}
// 获取仿真地图的信号机状态,用于推送给前端
func GetMapAllSignalState(sim *VerifySimulation, mapId int32) []*state.SignalState {
uidMap := QueryMapUidMapByType(mapId, &graphicData.Signal{})
var signalArr []*state.SignalState
for _, u := range uidMap {
s := handlerSignalState(sim.World, u.Uid)
if s == nil {
continue
}
s.Id = u.CommonId
signalArr = append(signalArr, s)
}
return signalArr
}
// 获取仿真地图的道岔状态,前端推送
func GetMapAllTurnoutState(sim *VerifySimulation, mapId int32) []*state.SwitchState {
// 获取本地图下的道岔信息
@ -107,33 +92,3 @@ func handlerTurnoutState(w ecs.World, uid string) *state.SwitchState {
pos := component.TurnoutPositionType.Get(entry)
return &state.SwitchState{Normal: pos.Db, Reverse: pos.Fb, Dw: pos.Dw, Fw: pos.Fw}
}
func handlerSignalState(w ecs.World, uid string) *state.SignalState {
entry, ok := entity.GetEntityByUid(w, uid)
if !ok {
fmt.Printf("id=%s的道岔不存在", uid)
return nil
}
if !entry.HasComponent(component.SignalLightsType) { //信号机灯列表
return nil
}
signalState := &state.SignalState{}
lights := component.SignalLightsType.Get(entry)
for _, light := range lights.Lights {
lightAspect := &state.Signal_Light{}
switch {
case light.HasComponent(component.LdTag):
lightAspect.Color = state.Signal_L
case light.HasComponent(component.HdTag):
lightAspect.Color = state.Signal_H
case light.HasComponent(component.UdTag):
lightAspect.Color = state.Signal_U
case light.HasComponent(component.BdTag):
lightAspect.Color = state.Signal_B
case light.HasComponent(component.AdTag):
lightAspect.Color = state.Signal_A
}
lightAspect.Display = component.BitStateType.Get(light).Val
signalState.Light = append(signalState.Light, lightAspect)
}
return signalState
}