C2G_HGHHReadyHandler.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Collections.Generic;
  3. namespace ET.Server
  4. {
  5. /// <summary>
  6. /// 黄冈晃晃 准备
  7. /// </summary>
  8. [MessageHandler(SceneType.Game)]
  9. public class C2G_HGHHReadyHandler : AMRpcHandler<C2G_HGHHReady, G2C_HGHHReady>
  10. {
  11. protected override async ETTask Run(Session session, C2G_HGHHReady request, G2C_HGHHReady response, Action reply)
  12. {
  13. Player player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
  14. if (player == null)
  15. {
  16. response.Error = ErrorCode.ERR_OperationError;
  17. response.Message = "玩家不存在或离线...";
  18. reply();
  19. return;
  20. }
  21. // 玩家是否进入房间
  22. if (player.RoomId <= 0)
  23. {
  24. response.Error = ErrorCode.ERR_OperationError;
  25. response.Message = "玩家不在房间,不可准备...";
  26. reply();
  27. return;
  28. }
  29. Scene scene = session.DomainScene();
  30. // 房间是否能找到
  31. Room room = scene.GetComponent<GameRoomComponent>().Get(player.RoomId);
  32. if (room == null)
  33. {
  34. response.Error = ErrorCode.ERR_OperationError;
  35. response.Message = "请求的房间不存在或已解散...";
  36. reply();
  37. return;
  38. }
  39. // todo 玩家房间是否已开始, 后面这个判断要调整
  40. HGHuangHuangComponent hgHuangHuangComponent = room.GetComponent<HGHuangHuangComponent>();
  41. if (hgHuangHuangComponent != null && hgHuangHuangComponent.State != 0)
  42. {
  43. response.Error = ErrorCode.ERR_OperationError;
  44. response.Message = "房间已开始,不可准备...";
  45. reply();
  46. return;
  47. }
  48. player.State = 1;
  49. Log.Info($"id:{player.Id}, 玩家:{player.Name}, 状态:已准备,通知所有玩家");
  50. // 广播
  51. foreach (Player p in room.GetAllPlayers().Values)
  52. {
  53. if (p != null)
  54. {
  55. MessageHelper.SendToClient(p, new G2C_HGHHReadyPush(){info = ProtoHelper.RoomToProto(room, p, null)});
  56. }
  57. }
  58. // 返回
  59. response.IsReady = true;
  60. reply();
  61. await ETTask.CompletedTask;
  62. }
  63. }
  64. }