package system import ( "github.com/yohamta/donburi/filter" "joylink.club/ecs" "joylink.club/rtsssimulation/components" ) // 按速度移动的设备系统 // 只负责按速度移动位置,由该组件的观察者负责解释位置 type MovableDeviceSystem struct { query *ecs.Query } func NewMovableDeviceSystem() *MovableDeviceSystem { return &MovableDeviceSystem{query: ecs.NewQuery(filter.Contains(components.MovableDeviceStateComponent))} } // world 执行 func (me *MovableDeviceSystem) Update(world ecs.World) { me.query.Each(world, func(e *ecs.Entry) { md := components.MovableDeviceStateComponent.Get(e) if md.Speed > 0 { if md.ToH { md.Position += int64(md.Speed) } else { md.Position -= int64(md.Speed) } } }) }