EnemyShipMovementSystem.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Artemis;
  6. using StarWarrior.Components;
  7. using Microsoft.Xna.Framework.Graphics;
  8. namespace StarWarrior.Systems
  9. {
  10. class EnemyShipMovementSystem : EntityProcessingSystem
  11. {
  12. private SpriteBatch spriteBatch;
  13. private ComponentMapper<Transform> transformMapper;
  14. private ComponentMapper<Velocity> velocityMapper;
  15. public EnemyShipMovementSystem(SpriteBatch spriteBatch) : base(typeof(Transform), typeof(Velocity),typeof(Enemy)) {
  16. this.spriteBatch = spriteBatch;
  17. }
  18. public override void Initialize() {
  19. transformMapper = new ComponentMapper<Transform>(world);
  20. velocityMapper = new ComponentMapper<Velocity>(world);
  21. }
  22. public override void Process(Entity e) {
  23. Transform transform = transformMapper.Get(e);
  24. Velocity velocity = velocityMapper.Get(e);
  25. if (transform.GetX() > spriteBatch.GraphicsDevice.Viewport.Width || transform.GetX() < 0)
  26. {
  27. velocity.AddAngle(180);
  28. }
  29. }
  30. }
  31. }