MapReliveTimeComponentSystem.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections.Generic;
  3. namespace ET.Server
  4. {
  5. [FriendOf(typeof (MapReliveTimeComponent))]
  6. public static class MapReliveTimeComponentSystem
  7. {
  8. public class MapReliveTimeComponentAwakeSystem: AwakeSystem<MapReliveTimeComponent>
  9. {
  10. protected override void Awake(MapReliveTimeComponent self)
  11. {
  12. Log.Info($"创建单位玩家复活组件...");
  13. self.ReliveDatas = new List<Struct.UnitPlayerReliveData>();
  14. }
  15. }
  16. public class MapReliveTimeComponentUpdateSystem: UpdateSystem<MapReliveTimeComponent>
  17. {
  18. protected override void Update(MapReliveTimeComponent self)
  19. {
  20. if (self.ReliveDatas.Count <= 0)
  21. {
  22. return;
  23. }
  24. for (int i = self.ReliveDatas.Count - 1; i >= 0; i--)
  25. {
  26. Struct.UnitPlayerReliveData data = self.ReliveDatas[i];
  27. if (data == null)
  28. {
  29. continue;
  30. }
  31. if (TimeHelper.ServerNow() < data.ReliveTime)
  32. {
  33. continue;
  34. }
  35. // 复活(添加一个单位)
  36. Struct.MonsterUnit unit = new Struct.MonsterUnit();
  37. unit.id = data.ID;
  38. unit.force = 1;
  39. unit.x = data.x;
  40. unit.y = data.y;
  41. unit.autoGuard = true;
  42. int objId = data.Map.AddUnits(unit, false).GetResult();
  43. if (objId > 0 && !data.Map.UnitObjIds.Contains(objId) && !data.Map.IsGameOver())
  44. {
  45. data.Map.UnitObjIds.Add(objId);
  46. }
  47. self.ReliveDatas.Remove(data);
  48. }
  49. }
  50. }
  51. }
  52. }