C2G_AddUnitsToMapHandler.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. WNPlayer player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
  13. if (player == null)
  14. {
  15. Log.Debug($"操作错误, player is null");
  16. response.Error = ErrorCode.ERR_OperationError;
  17. reply();
  18. return;
  19. }
  20. // 参数判断
  21. if (request.UnitId <= 0 || request.Force < 0 || request.Force > (int)AreaForce.FORCEB || request.X < 0 || request.Y < 0)
  22. {
  23. Log.Debug($"参数错误...unitId={request.UnitId}, force={request.Force}");
  24. response.Error = ErrorCode.ERR_ParameterError;
  25. reply();
  26. return;
  27. }
  28. // 配置是否能找到
  29. Monster prop = MonsterCategory.Instance.Get(request.UnitId);
  30. if (prop == null)
  31. {
  32. Log.Debug($"添加单位出错, 未找到配置...unitId={request.UnitId}, playerId={player.GetId()}");
  33. response.Error = ErrorCode.ERR_ConfigError;
  34. reply();
  35. return;
  36. }
  37. Struct.MonsterUnit unit = new Struct.MonsterUnit();
  38. unit.id = prop.Id;
  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. await player.Map.AddUnits(unit, false);
  51. reply();
  52. }
  53. }
  54. }