| 189 | } |
| 190 | |
| 191 | func (s *SpeedSystem) New(*ecs.World) { |
| 192 | engo.Mailbox.Listen("CollisionMessage", func(message engo.Message) { |
| 193 | log.Println("collision") |
| 194 | |
| 195 | collision, isCollision := message.(common.CollisionMessage) |
| 196 | if isCollision { |
| 197 | // See if we also have that Entity, and if so, change the speed |
| 198 | for _, e := range s.entities { |
| 199 | if e.ID() == collision.Entity.BasicEntity.ID() { |
| 200 | e.SpeedComponent.X *= -1 |
| 201 | } |
| 202 | } |
| 203 | } |
| 204 | }) |
| 205 | } |
| 206 | |
| 207 | func (s *SpeedSystem) Add(basic *ecs.BasicEntity, speed *SpeedComponent, space *common.SpaceComponent) { |
| 208 | s.entities = append(s.entities, speedEntity{basic, speed, space}) |