package memory import ( "joylink.club/bj-rtsts-server/dto/data_proto" "joylink.club/bj-rtsts-server/dto/state_proto" "joylink.club/bj-rtsts-server/third_party/message" ) // 获取列车控制图形数据 func findTrainTccGraphicData(vs *VerifySimulation) *data_proto.TccGraphicStorage { var tccGI *data_proto.TccGraphicStorage for _, id := range vs.MapIds { if QueryGiType(id) == data_proto.PictureType_TrainControlCab { tccGI = QueryGiData[*data_proto.TccGraphicStorage](id) break } } return tccGI } func findTrainTccGraphicDataButtons(tccG *data_proto.TccGraphicStorage) []*data_proto.TccButton { return tccG.TccButtons } func findTrainTccGraphicDataKeys(tccG *data_proto.TccGraphicStorage) []*data_proto.TccKey { return tccG.TccKeys } func findTrainTccGraphicDataHandlers(tccG *data_proto.TccGraphicStorage) []*data_proto.TccHandle { return tccG.TccHandles } func findTrainTccGraphicDataButton(tccG *data_proto.TccGraphicStorage, id uint32) (*data_proto.TccButton, bool) { for _, d := range findTrainTccGraphicDataButtons(tccG) { if d.Common.Id == id { return d, true } } return nil, false } func findTrainTccGraphicDataKey(tccG *data_proto.TccGraphicStorage, id uint32) (*data_proto.TccKey, bool) { for _, d := range findTrainTccGraphicDataKeys(tccG) { if d.Common.Id == id { return d, true } } return nil, false } func findTrainTccGraphicDataHandler(tccG *data_proto.TccGraphicStorage, id uint32) (*data_proto.TccHandle, bool) { for _, d := range findTrainTccGraphicDataHandlers(tccG) { if d.Common.Id == id { return d, true } } return nil, false } // 初始化列车控制数据 func initTrainTcc(vs *VerifySimulation, runDir bool) *state_proto.TrainControlState { var tccGI *data_proto.TccGraphicStorage for _, id := range vs.MapIds { if QueryGiType(id) == data_proto.PictureType_TrainControlCab { tccGI = QueryGiData[*data_proto.TccGraphicStorage](id) break } } tcc := &state_proto.TrainControlState{} if tccGI != nil { for _, b := range tccGI.TccButtons { if b.Code == "JJZD" { tcc.Ebutton = &state_proto.TrainControlState_EmergentButton{Id: b.Common.Id, Passed: false} } } for _, b := range tccGI.TccHandles { if b.Code == "QYSB" { tcc.PushHandler = &state_proto.TrainControlState_PushHandler{Id: b.Common.Id, Val: 0} } } ds := make([]*state_proto.TrainControlState_DriverKeySwitch, 0) for _, b := range tccGI.TccKeys { if b.GetType() == data_proto.TccKey_driverControllerActivationClint { ds = append(ds, &state_proto.TrainControlState_DriverKeySwitch{Id: b.Common.Id, Val: false}) } else if b.GetType() == data_proto.TccKey_frontAndRearDirectionalControl { tcc.DirKey = &state_proto.TrainControlState_DirectionKeySwitch{Id: b.Common.Id, Val: uint32(message.IsTrue(runDir))} } } tcc.DriverKey = ds } return tcc }