EnemyShooterSystem.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using Artemis;
  3. using StarWarrior.Components;
  4. namespace StarWarrior.Systems
  5. {
  6. public class EnemyShooterSystem : EntityProcessingSystem {
  7. private ComponentMapper<Weapon> weaponMapper;
  8. private ComponentMapper<Transform> transformMapper;
  9. Random rd = new Random();
  10. long playerId = -1;
  11. public EnemyShooterSystem() : base(typeof(Transform), typeof(Weapon),typeof(Enemy)) {
  12. }
  13. public override void Initialize() {
  14. weaponMapper = new ComponentMapper<Weapon>(world);
  15. transformMapper = new ComponentMapper<Transform>(world);
  16. }
  17. protected override void Begin() {
  18. }
  19. public override void Process(Entity e) {
  20. Weapon weapon = weaponMapper.Get(e);
  21. long t = weapon.GetShotAt() + TimeSpan.FromSeconds(2).Ticks;
  22. if (t < DateTime.Now.Ticks)
  23. {
  24. Transform transform = transformMapper.Get(e);
  25. Entity missile = EntityFactory.CreateMissile(world);
  26. missile.GetComponent<Transform>().SetLocation(transform.GetX() + 20, transform.GetY() + 20);
  27. missile.GetComponent<Velocity>().SetVelocity(-0.5f);
  28. missile.GetComponent<Velocity>().SetAngle(270);
  29. missile.Refresh();
  30. weapon.SetShotAt(DateTime.Now.Ticks);
  31. }
  32. }
  33. }
  34. }