XmdsBattleFunctionEventAOI_99993.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System.Collections.Generic;
  2. using CommonLang;
  3. using XmdsCommonServer.Plugin;
  4. using CommonAI.Zone.Instance;
  5. using XmdsCommonServer.Plugin.Scene;
  6. using System;
  7. using CommonAI.Zone.Helper;
  8. namespace XmdsCommonSkill.Plugin.FunctionEvent
  9. {
  10. /// <summary>
  11. /// 玩家触发aoi
  12. /// </summary>
  13. public class XmdsBattleFunctionEventAOI_99993 : XmdsBattleFunctionEventBase
  14. {
  15. public static int EventID = 99993;
  16. public class ParamsData
  17. {
  18. public struct UnitCreateInfo
  19. {
  20. public int id;
  21. public int force;
  22. public bool relativePos;
  23. public float x;
  24. public float y;
  25. }
  26. public bool bindTeam;
  27. public bool canSeeMe;
  28. public bool canSeeOther;
  29. public bool deadExit;
  30. //退出aoi需要消灭的阵营
  31. public int killForce;
  32. public List<UnitCreateInfo> units;
  33. }
  34. //private ParamsData mParams;
  35. // 队伍拉人半径
  36. public static int TeamRadius = 5;
  37. public override int GetEventID()
  38. {
  39. return EventID;
  40. }
  41. protected override bool OnInit()
  42. {
  43. return true;
  44. }
  45. public override object CreateParams()
  46. {
  47. return new ParamsData();
  48. }
  49. private T ObjectDict2ValueByKey<T>(IDictionary<string, object> dict, string key, T defaultVal)
  50. {
  51. if (dict == null)
  52. {
  53. return defaultVal;
  54. }
  55. object ret;
  56. if (dict.TryGetValue(key, out ret))
  57. {
  58. return (T)System.Convert.ChangeType(ret, typeof(T));
  59. }
  60. else
  61. {
  62. return defaultVal;
  63. }
  64. }
  65. protected override void OnTriggerEvent(XmdsVirtual target, XmdsVirtual sender)
  66. {
  67. //InstancePlayer player = target.mUnit as InstancePlayer;
  68. //if(player == null)
  69. //{
  70. // return;
  71. //}
  72. //mParams = (ParamsData)data;
  73. //XmdsPlayerAOI aoi = new XmdsPlayerAOI(player, mParams.canSeeMe, mParams.canSeeOther);
  74. //player.setAoiStatus(aoi);
  75. //int killForce = mParams.killForce;
  76. //aoi.DeadExit = mParams.deadExit;
  77. //var handle = new ObjectAoiStatus.OnObjectLeaveHandler((a, o)=>
  78. //{
  79. // if (aoi.GetUnitCountByForce(killForce) == 0)
  80. // {
  81. // aoi.Cleanup();
  82. // player.setAoiStatus(null);
  83. // }
  84. //});
  85. //aoi.OnObjectLeave += handle;
  86. //var zone = player.Parent;
  87. //// 以TeamRadius为半径将队友拉入位面
  88. //if (mParams.bindTeam && target.TeamListCount > 0)
  89. //{
  90. // var teamList = target.TeamList;
  91. // foreach (var uuid in teamList)
  92. // {
  93. // var p = zone.getPlayerByUUID(uuid);
  94. // if (p != null && CMath.intersectRound(player.X, player.Y, TeamRadius, p.X, p.Y, p.Info.BodySize))
  95. // {
  96. // p.setAoiStatus(aoi);
  97. // }
  98. // }
  99. //}
  100. //if(mParams.units != null)
  101. //{
  102. // foreach (var item in mParams.units)
  103. // {
  104. // var unitInfo = zone.Templates.getUnit(item.id);
  105. // if(unitInfo != null)
  106. // {
  107. // float x = item.x, y = item.y;
  108. // if (item.relativePos)
  109. // {
  110. // x = player.X + item.x;
  111. // y = player.Y + item.y;
  112. // }
  113. // float d = (float)(Math.Atan2(player.Y - y, player.X - x));
  114. // var unit = zone.AddUnit(unitInfo, "打华仔", (byte)item.force, player.Level, x, y, d);
  115. // if (unit != null)
  116. // {
  117. // unit.setAoiStatus(player.AoiStatus);
  118. // }
  119. // }
  120. // }
  121. //}
  122. }
  123. }
  124. }