package iscs_sys import ( "joylink.club/ecs" "joylink.club/ecs/filter" "joylink.club/rtsssimulation/component" "joylink.club/rtsssimulation/entity" "joylink.club/rtsssimulation/repository" "time" ) // PowerSourceSystem 国网 type PowerSourceSystem struct { query *ecs.Query } func NewPowerSourceSystem() *PowerSourceSystem { return &PowerSourceSystem{ query: ecs.NewQuery(filter.Contains(component.UidType, component.ElectricitySourceType)), } } func (s *PowerSourceSystem) Update(w ecs.World) { wd := entity.GetWorldData(w) s.query.Each(w, func(entry *ecs.Entry) { psId := component.UidType.Get(entry).Id ps := component.ElectricitySourceType.Get(entry) // psModel := (wd.Repo.FindById(psId)).(*repository.PowerSource) pipeId := psModel.PortA.Device().Id() // ps.Fresh = time.Now().UnixMilli() ps.Sx = psModel.Sx ps.Ac = psModel.Ac ps.U = psModel.Voltage //电源传递电力给母线 s.transPower(wd, pipeId, ps, psId) }) } func (s *PowerSourceSystem) transPower(wd *component.WorldData, pipeId string, ps *component.ElectricitySource, psId string) { pipeEntry := wd.EntityMap[pipeId] if !pipeEntry.HasComponent(component.PipeElectricityType) { pipeEntry.AddComponent(component.PipeElectricityType) component.PipeElectricityType.Set(pipeEntry, component.NewPipeElectricity()) } pipe := component.PipeType.Get(pipeEntry) pipe.Matter = component.PmtElectricity // powerPipe := component.PipeElectricityType.Get(pipeEntry) powerPipe.TransPower(psId, ps) }