45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
|
package entity
|
||
|
|
||
|
import (
|
||
|
"log/slog"
|
||
|
|
||
|
"joylink.club/ecs"
|
||
|
"joylink.club/rtsssimulation/component"
|
||
|
)
|
||
|
|
||
|
func newCiQC(w ecs.World, data *component.WorldData) *ecs.Entry {
|
||
|
entry := w.Entry(w.Create(component.CiQcTableType, component.CiQcStateType))
|
||
|
data.CiQcEntities = append(data.CiQcEntities, entry)
|
||
|
return entry
|
||
|
}
|
||
|
|
||
|
// 加载联锁驱动、采集卡
|
||
|
func LoadCiQC(w ecs.World) error {
|
||
|
data := GetWorldData(w)
|
||
|
for _, csr := range data.Repo.CiQcList() {
|
||
|
// if len(csr.CjList) == 0 {
|
||
|
// return fmt.Errorf("加载联锁驱采卡实体失败,车站'%s'无采集码表数据", csr.StationId)
|
||
|
// }
|
||
|
// if len(csr.QdList) == 0 {
|
||
|
// return fmt.Errorf("加载联锁驱采卡实体失败,车站'%s'无驱动码表数据", csr.StationId)
|
||
|
// }
|
||
|
if len(csr.CjList) == 0 || len(csr.QdList) == 0 {
|
||
|
slog.Warn("加载联锁驱采卡实体失败,无驱动/采集码表数据", "车站", csr.StationId)
|
||
|
continue
|
||
|
}
|
||
|
entry := newCiQC(w, data)
|
||
|
qctable := &component.CiQcTable{
|
||
|
QdBits: csr.QdList,
|
||
|
CjBits: csr.CjList,
|
||
|
}
|
||
|
err := qctable.BuildQcIndex()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
component.CiQcTableType.Set(entry, qctable)
|
||
|
component.CiQcStateType.Set(entry, component.NewCiQcState(len(csr.QdList), len(csr.CjList)))
|
||
|
}
|
||
|
// TODO: 不同联锁驱动码位索引唯一检查
|
||
|
return nil
|
||
|
}
|