MapReliveTimeComponentSystem.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. }
  14. }
  15. public class MapReliveTimeComponentUpdateSystem: UpdateSystem<MapReliveTimeComponent>
  16. {
  17. protected override void Update(MapReliveTimeComponent self)
  18. {
  19. Map map = self.GetParent<Map>();
  20. if (map.UnitPlayers.Count <= 0)
  21. {
  22. return;
  23. }
  24. long now = TimeHelper.ServerNow();
  25. foreach (Struct.UnitPlayerData data in map.UnitPlayers.Values)
  26. {
  27. if (data == null)
  28. {
  29. continue;
  30. }
  31. // 过滤一下纯点赞或刷礼物的玩家
  32. if (data.TemplateId <= 0 || data.ObjId <= 0)
  33. {
  34. continue;
  35. }
  36. // 过滤一下已复活的玩家
  37. if (data.ReliveTime <= 0 || now < data.ReliveTime)
  38. {
  39. continue;
  40. }
  41. // 复活(添加一个单位)
  42. Struct.MonsterUnit unit = new Struct.MonsterUnit();
  43. unit.id = data.TemplateId;
  44. unit.force = 1;
  45. unit.x = data.x;
  46. unit.y = data.y;
  47. unit.autoGuard = true;
  48. data.ObjId = data.Map.AddUnits(unit, true).GetResult();
  49. data.ReliveTime = 0;
  50. }
  51. }
  52. }
  53. }
  54. }