C2G_AddUnitsToMapHandler.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. namespace ET.Server
  3. {
  4. /// <summary>
  5. /// 向场景增加单位
  6. /// </summary>
  7. [MessageHandler(SceneType.Game)]
  8. public class C2G_AddUnitsToMapHandler: AMRpcHandler<C2G_AddUnitsToMap, G2C_AddUnitsToMap>
  9. {
  10. protected override async ETTask Run(Session session, C2G_AddUnitsToMap request, G2C_AddUnitsToMap response, Action reply)
  11. {
  12. if (session.DomainScene().SceneType != SceneType.Game)
  13. {
  14. Log.Debug($"Game 请求的Scene错误...SceneType={session.DomainScene().SceneType}");
  15. session.Dispose();
  16. return;
  17. }
  18. // 移除session自动超时组件
  19. session.RemoveComponent<SessionAcceptTimeoutComponent>();
  20. WNPlayer player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
  21. if (player == null)
  22. {
  23. Log.Debug($"操作错误, player is null");
  24. response.Error = ErrorCode.ERR_OperationError;
  25. reply();
  26. return;
  27. }
  28. // 参数判断
  29. if (request.UnitId <= 0 || request.Force < 0 || request.Force > (int)AreaForce.FORCEB )
  30. {
  31. Log.Debug($"参数错误...unitId={request.UnitId}, force={request.Force}");
  32. response.Error = ErrorCode.ERR_ParameterError;
  33. reply();
  34. return;
  35. }
  36. Struct.MonsterUnit unit = new Struct.MonsterUnit();
  37. unit.name = GetRandomName();
  38. unit.id = request.UnitId;
  39. unit.force = request.Force;
  40. if (!string.IsNullOrEmpty(request.Flag))
  41. {
  42. unit.flag = request.Flag;
  43. }
  44. else
  45. {
  46. unit.x = request.X;
  47. unit.y = request.Y;
  48. }
  49. unit.autoGuard = true;
  50. int objId = await player.Map.AddUnits(unit, true);
  51. // 临时openId
  52. string _openId = player.GetComponent<PlayerDataComponent>().Data.Id.ToString();
  53. player.Map.AddUnitPlayer(_openId, request.UnitId, objId, 0, unit.name, "");
  54. reply();
  55. }
  56. private string GetRandomName()
  57. {
  58. string[] names =
  59. {
  60. "好人", "小新", "精钢侠", "带投大戈", "奥仔", "袄特门", "兔比斯", "张剑闯天牙", "窝耗帅", "大白"
  61. };
  62. var rand = new Random();
  63. var first = names[rand.Next(names.Length)];
  64. return first + rand.Next(9999);
  65. }
  66. }
  67. }