屏蔽门psd
This commit is contained in:
parent
3e6bd49525
commit
9b949aee30
@ -1 +1 @@
|
||||
Subproject commit c3b9d965c607a2f29e0bdc586aba6851d4f29f13
|
||||
Subproject commit adb9cf9a0005fc74565da8753f4f7577834d27d4
|
@ -35,6 +35,10 @@ type StationPsdsCircuitState struct {
|
||||
type PsdState struct {
|
||||
//屏蔽门打开的百分比,则0-完全关闭,100-完全打开
|
||||
Rate int
|
||||
//关门操作被激活
|
||||
actClosing bool
|
||||
//开门操作被激活
|
||||
actOpening bool
|
||||
}
|
||||
|
||||
// PsdTagHandler 屏蔽门标签,用于ecs query
|
||||
@ -67,7 +71,7 @@ func NewStationPsdsCircuitState() *StationPsdsCircuitState {
|
||||
return &StationPsdsCircuitState{}
|
||||
}
|
||||
func NewPsdState() *PsdState {
|
||||
return &PsdState{}
|
||||
return &PsdState{Rate: PSD_CLOSED_RATE}
|
||||
}
|
||||
|
||||
var StationPsdsCircuitStateComponent = ecs.NewComponentType[StationPsdsCircuitState]()
|
||||
@ -111,11 +115,32 @@ func (me *StationPsdsCircuitSystem) Update(w ecs.World) {
|
||||
func (me *StationPsdsCircuitSystem) circuitUpdate(w ecs.World) {
|
||||
psdsCircuitQuery.Each(w, func(e *ecs.Entry) {
|
||||
me.calculateMG(w, e)
|
||||
me.calculateActGM(w, e)
|
||||
})
|
||||
}
|
||||
|
||||
// 关门动作运算
|
||||
func (me *StationPsdsCircuitSystem) calculateGM(w ecs.World, circuitEntry *ecs.Entry) {
|
||||
func (me *StationPsdsCircuitSystem) calculateActGM(w ecs.World, circuitEntry *ecs.Entry) {
|
||||
circuit := StationPsdsCircuitStateComponent.Get(circuitEntry)
|
||||
tags := PsdTagHandlerComponent.Get(circuitEntry)
|
||||
//上行
|
||||
isActSGm := circuit.SGMJ && !circuit.G4SKMJ && !circuit.G8SKMJ
|
||||
sQuery := ecs.NewQuery(filter.Contains(tags.STag))
|
||||
sQuery.Each(w, func(sPsd *ecs.Entry) {
|
||||
sPsdState := PsdStateComponent.Get(sPsd)
|
||||
sPsdState.actClosing = isActSGm
|
||||
})
|
||||
//下行
|
||||
isActXGm := circuit.XGMJ && !circuit.G4XKMJ && !circuit.G8XKMJ
|
||||
xQuery := ecs.NewQuery(filter.Contains(tags.XTag))
|
||||
xQuery.Each(w, func(xPsd *ecs.Entry) {
|
||||
xPsdState := PsdStateComponent.Get(xPsd)
|
||||
xPsdState.actClosing = isActXGm
|
||||
})
|
||||
}
|
||||
|
||||
// 4编组开门动作运算
|
||||
func (me *StationPsdsCircuitSystem) calculateAct4KM(w ecs.World, circuitEntry *ecs.Entry) {
|
||||
|
||||
}
|
||||
|
||||
@ -159,6 +184,8 @@ func (me *StationPsdsCircuitSystem) psdUpdate(w ecs.World) {
|
||||
me.calculatePsdMove(e)
|
||||
})
|
||||
}
|
||||
|
||||
// 单个屏蔽门移动运算
|
||||
func (me *StationPsdsCircuitSystem) calculatePsdMove(psd *ecs.Entry) {
|
||||
//move.Value为门当前打开的宽度
|
||||
move := MovableObjectComponent.Get(psd)
|
||||
@ -170,4 +197,13 @@ func (me *StationPsdsCircuitSystem) calculatePsdMove(psd *ecs.Entry) {
|
||||
move.Value = PSD_OPENED
|
||||
}
|
||||
state.Rate = int((float64(move.Value) / float64(PSD_OPENED)) * float64(100))
|
||||
//
|
||||
switch {
|
||||
case state.actClosing && !state.actOpening:
|
||||
move.Retreat()
|
||||
case !state.actClosing && state.actOpening:
|
||||
move.Forward()
|
||||
case state.actClosing && state.actOpening:
|
||||
move.Pause()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user