C2G_BattleNotifyHandler.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Text.Json;
  3. namespace ET.Server
  4. {
  5. /// <summary>
  6. /// 向战斗服发送特定消息(触发编辑器事件)
  7. /// </summary>
  8. [MessageHandler(SceneType.Game)]
  9. public class C2G_BattleNotifyHandler : AMRpcHandler<C2G_BattleNotify, G2C_BattleNotify>
  10. {
  11. protected override async ETTask Run(Session session, C2G_BattleNotify request, G2C_BattleNotify response, Action reply)
  12. {
  13. WNPlayer player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
  14. if (player == null)
  15. {
  16. Log.Debug($"操作错误, player is null");
  17. response.Error = ErrorCode.ERR_OperationError;
  18. reply();
  19. return;
  20. }
  21. // 判断参数
  22. if (string.IsNullOrEmpty(request.Message))
  23. {
  24. Log.Debug($"参数错误, request.NameType={request.Message}");
  25. response.Error = ErrorCode.ERR_ParameterError;
  26. reply();
  27. return;
  28. }
  29. //TODO:从玩家的openid换取在战场中的objectID
  30. int objid = 7;
  31. //甜甜圈礼物功能示例
  32. if(request.Message == BattleNotify.TiktokGift_52.ToString())//eventname = "甜甜圈")
  33. {
  34. //TODO: 游戏服记录单位level,初始level为1,level=3为顶级
  35. int level = 1;
  36. if (level < 3)
  37. {
  38. player.GetXmdsManager().notifyBattleServer(player.Map.Id.ToString(), NotifyBSName.TriggerEvent,
  39. JsonSerializer.Serialize(new Struct.TriggerEventNotify() { message = BattleNotify.TiktokGift_52.ToString(), TriggerUnits = objid.ToString() }));
  40. }
  41. else
  42. {
  43. //已经升到顶级的单位,触发其它甜甜圈效果
  44. player.GetXmdsManager().notifyBattleServer(player.Map.Id.ToString(), NotifyBSName.TriggerEvent,
  45. JsonSerializer.Serialize(new Struct.TriggerEventNotify() { message = BattleNotify.TiktokGift_52_ext.ToString(), TriggerUnits = objid.ToString() }));
  46. }
  47. return;
  48. }
  49. Struct.TriggerEventNotify notifyMsg = new Struct.TriggerEventNotify() { message = request.Message };
  50. if (request.Message == BattleNotify.TiktokGift_1.ToString() ) //仙女棒
  51. {
  52. //礼物的效果如果专门针对送礼人自己,则需要把送礼人的objectid填入到TriggerUnits中
  53. notifyMsg.TriggerUnits = objid.ToString();
  54. }
  55. else if(request.Message == BattleNotify.TiktokGift_10.ToString())
  56. {
  57. notifyMsg.TriggerUnits = objid.ToString();
  58. }
  59. // 通知战斗服
  60. player.GetXmdsManager().notifyBattleServer(player.Map.Id.ToString(), NotifyBSName.TriggerEvent, JsonSerializer.Serialize(notifyMsg));
  61. reply();
  62. await ETTask.CompletedTask;
  63. }
  64. }
  65. }