package entity import ( "fmt" "joylink.club/ecs" "joylink.club/rtsssimulation/component" "joylink.club/rtsssimulation/component/relation" "joylink.club/rtsssimulation/modelrepo/model" ) func NewPoints(w ecs.World, p model.Points) *ecs.Entry { id := p.Uid().Id() // 创建道岔实体 e := w.Entry(w.Create(component.UidType, component.TurnoutTag, component.PointsModelRelaType, component.PointsZzjRelaType, component.PointsPositionType)) c := p.GetZzjCount() if c <= 0 { panic(fmt.Errorf("道岔转辙机数量必须大于0。id=%s, zzjCount=%d", id, c)) } // 创建转辙机实体 entities := w.CreateMany(c, component.PointsZzjRelaType, component.PointsZzjKbqStateType, component.FixedPositionTransformType) pzr := &relation.PointsZzjRela{ Points: e, } // 关系状态初始化 component.UidType.Set(e, &component.Uid{Id: id}) component.PointsModelRelaType.Set(e, &relation.PointsModelRela{M: p}) component.PointsZzjRelaType.Set(e, pzr) for _, ez := range entities { zzj := w.Entry(ez) pzr.Zzjs = append(pzr.Zzjs, zzj) component.PointsZzjRelaType.Set(zzj, pzr) } return e }