You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
8.8 KiB

  1. require("luaScript.Protocol.ProtocolCommon")
  2. require("luaScript.Protocol.Club.ClubProtocalMessage")
  3. local ClubProtocol = class("ClubProtocol" , require("luaScript.Protocol.Protocol"))
  4. local ClubCmd = require("luaScript.Protocol.Club.ClubCmd")
  5. -- 创建茶馆房间结果,成功或者失败
  6. function ClubProtocol:onClubCreateRoomRequest(status, response)
  7. logD("ClubProtocol:onClubCreateRoomRequest(), ", table.tostring(response))
  8. --如果是点了再来一局才去拉取数据
  9. local againbol,wanfa = getIsAgainGamebol()
  10. if wanfa ~= "" and response.ret == 0 then
  11. setGameRoomId(response.showTableId)
  12. app.club_php:clubInviteSameTable()
  13. end
  14. --app.waitDialogManager:closeWaitNetworkDialog();
  15. app.waitDialogManager:closeAllNetWait();
  16. -- 成功后直接进入房间
  17. --创建房间失败提示游戏开始禁止加入游戏时,主动重新创建一个房间,并刷新茶馆桌子
  18. if response.ret ~= 0 then
  19. showTooltip(GAME_CLUB_CREATE_ROOM_RESULT[response.ret] or tostring(response.ret));
  20. logD("ClubProtocol:onClubCreateRoomRequest() createFail, ", tostring(response.ret))
  21. if response.ret == 4 then
  22. if app.club_php.clubID and app.club_php.clubID~=0 then
  23. app.club_php:requestClubHome(app.club_php.clubID)
  24. end
  25. app.club:dispatchEvent({name = GAME_EVENT.CLUB_CREATE_ERR})
  26. end
  27. end
  28. end
  29. -- 加入茶馆房间结果,成功或者失败
  30. function ClubProtocol:onClubJoinRoomResponse(status, response)
  31. logD("ClubProtocol:onClubJoinRoomResponse(), ", table.tostring(response))
  32. -- logD(table.tostring(response))
  33. --app.waitDialogManager:closeWaitNetworkDialog();
  34. app.waitDialogManager:closeAllNetWait();
  35. if response.ret == 1 then
  36. if self.clubCreateRoomData ~= nil then
  37. --房间解散时,加入失败,就直接发送创建房间
  38. self:requesetCreateRoomInClub(self.clubCreateRoomData);
  39. --清空创建房间数据
  40. self.clubCreateRoomData = nil;
  41. return;
  42. end
  43. end
  44. -- 成功后直接进入房间
  45. if response.ret ~= 0 then
  46. -- if app.club_php.clubID and app.club_php.clubID~=0 then
  47. GAME_CLUB_JOIN_ROOM_RESULT[response.ret] = string.gsub(GAME_CLUB_JOIN_ROOM_RESULT[response.ret], "茶馆", "赛事")
  48. GAME_CLUB_JOIN_ROOM_RESULT[response.ret] = string.gsub(GAME_CLUB_JOIN_ROOM_RESULT[response.ret], "亲友圈", "赛事")
  49. -- end
  50. showTooltip(GAME_CLUB_JOIN_ROOM_RESULT[response.ret] or tostring(response.ret));
  51. end
  52. end
  53. --茶馆踢人结果协议
  54. function ClubProtocol:onClubKickResponse(status,response)
  55. logD("ClubProtocol:onClubKickResponse(), ", table.tostring(response))
  56. app.waitDialogManager:closeWaitNetworkDialog();
  57. if app.club_php:getCestIsOpen(app.club_php.clubID) then
  58. GAME_CLUB_KICK_RESULT[response.result] = string.gsub(GAME_CLUB_KICK_RESULT[response.result], "玩家", "选手")
  59. end
  60. showTooltip(GAME_CLUB_KICK_RESULT[response.result] or tostring(response.result));
  61. self:dispatchEvent({name = "onClubKickResponse"});
  62. end
  63. --同时被踢玩家收到被踢协议
  64. function ClubProtocol:onClubOtherKickedResponse(status,response)
  65. logD("ClubProtocol:onClubOtherKickedResponse(), ", table.tostring(response))
  66. app.waitDialogManager:closeWaitNetworkDialog();
  67. showTooltip("您已被管理员踢出房间")
  68. self:dispatchEvent({name = "onClubOtherKickedResponse"});
  69. end
  70. --茶馆解散房间结果协议
  71. function ClubProtocol:onClubDismissResponse(status,response)
  72. logD("ClubProtocol:onClubDismissResponse(), response = ", table.tostring(response))
  73. app.waitDialogManager:closeWaitNetworkDialog();
  74. showTooltip(GAME_CLUB_DISMISS_RESULT[response.result] or tostring(response.result));
  75. self:dispatchEvent({name = "onClubDismissResponse"});
  76. end
  77. --申请创建房间
  78. function ClubProtocol:requesetCreateRoomInClub(request)
  79. setIsRoomGamedata(nil)
  80. setisContinueRoomGamedata(nil)
  81. setisContinueRoomGamebol(false)
  82. --清空抽奖数据
  83. dd.IGameOverAward.setAwardData(nil)
  84. checkSubGameFiles(request.gameid, function()
  85. -- 为了收到服务器返回的结果时能正确接收房间消息
  86. -- 这里应该先加载房间协议
  87. local gameInfo = {}
  88. local gameType = nil
  89. if request.gameInfo then
  90. gameInfo = json.decode(request.gameInfo)
  91. gameType = gameInfo.gamerule or 0
  92. end
  93. --如果是合盟
  94. local clubInfo = app.club_php.clubList[tonumber(request.groupId)]
  95. if clubInfo then
  96. if clubInfo.unionType == 2 then
  97. request.groupId = tonumber(clubInfo.unionGid);--茶馆标识
  98. request.groupUid = tonumber(clubInfo.unionOwner);--茶馆标识
  99. gameInfo.clubId = tonumber(clubInfo.unionGid);--茶馆标识
  100. request.gameInfo = json.encode(gameInfo)
  101. elseif clubInfo.unionType == 1 then
  102. request.groupUid = tonumber(clubInfo.ownerId);--茶馆标识
  103. end
  104. end
  105. logD("ClubProtocol:requesetCreateRoomInClub(), request = ", table.tostring(request))
  106. app:changeGameProtocol(request.gameid or 0,gameType);
  107. app.waitDialogManager:showWaitNetworkDialog();
  108. self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM , sender = request};
  109. end)
  110. end
  111. -- 申请加入房间
  112. function ClubProtocol:requestJoinRoomInClub(request, createRoomRequst)
  113. logD("ClubProtocol:requestJoinRoomInClub(), request = ", table.tostring(request))
  114. -- 进房之前先检查文件完整性
  115. checkSubGameFiles(request.gameid, function()
  116. app:changeGameProtocol(request.gameid or 0,request.gamerule or 0);
  117. --记录创建房间数据
  118. self.clubCreateRoomData = createRoomRequst;
  119. --如果是合盟
  120. local clubInfo = app.club_php.clubList[tonumber(request.grouId)]
  121. if clubInfo then
  122. if clubInfo.unionType == 2 then
  123. request.grouId = tonumber(clubInfo.unionGid);--茶馆标识
  124. end
  125. end
  126. app.waitDialogManager:showWaitNetworkDialog();
  127. self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_REQUEST , sender = request};
  128. end)
  129. end
  130. --茶馆中解散房间请求
  131. function ClubProtocol:requestDismissInClub(request)
  132. logD("ClubProtocol:requestDismissInClub(), ", table.tostring(request))
  133. app.waitDialogManager:showWaitNetworkDialog();
  134. self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_REQUEST , sender = request};
  135. end
  136. --茶馆中踢人请求
  137. function ClubProtocol:requestKickInClub(request)
  138. logD("ClubProtocol:requestKickInClub(), ", table.tostring(request))
  139. app.waitDialogManager:showWaitNetworkDialog();
  140. self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_REQUEST , sender = request};
  141. end
  142. -- 茶馆禁止同桌结果
  143. function ClubProtocol:onClubNotSameDeskResponse(status, response)
  144. logD("ClubProtocol:onClubNotSameDeskResponse(), ", table.tostring(response))
  145. app.waitDialogManager:closeWaitNetworkDialog();
  146. -- 成功后直接进入房间
  147. if response.ret == 16 then
  148. self:dispatchEvent({name = "onClubNotSameDeskResponse",uid = response.forbidUid,userInfo = response.userInfo});
  149. elseif response.ret == 19 then
  150. self:dispatchEvent({name = GAME_EVENT.CLUB_GPS_DISTANCE,uid = response.forbidUid,userInfo = response.userInfo,gpsLimit = response.gpsLimit});
  151. end
  152. end
  153. function ClubProtocol:ctor(net)
  154. ClubProtocol.super.ctor(self , net);
  155. --加入房间数据
  156. self.clubCreateRoomData = nil;
  157. --发送
  158. -- 创建房间
  159. self:defMsgFunc{name = "clubCreateRoomRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM, sender = ClubCreateRoomRequest};
  160. -- 加入房间
  161. self:defMsgFunc{name = "clubJoinRoomRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_REQUEST, sender = ClubJoinRoomRequest};
  162. -- 茶馆游戏未开始时踢人
  163. self:defMsgFunc{name = "clubKickRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_REQUEST, sender = ClubKickRequest};
  164. -- 茶馆解散房间
  165. self:defMsgFunc{name = "ClubDismissRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_REQUEST, sender = ClubDismissRequest};
  166. --接收
  167. -- 推送创建房间结果(正常进入)如果进房成功,服务器会快速分配桌子给玩家,分配成功返回进入桌子成功消息 RoomCmd.GAME_COMMAND_LOGIN_GAME_SUCCESS
  168. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM_RESPONSE , reader = ClubCreateRoomResponse, func = handler(self , self.onClubCreateRoomRequest)};
  169. -- 推送加入房间结果
  170. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_RESPONSE , reader = ClubJoinRoomResponse, func = handler(self , self.onClubJoinRoomResponse)};
  171. -- 茶馆踢人结果协议
  172. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_RESPONSE , reader = ClubKickResponse, func = handler(self , self.onClubKickResponse)};
  173. -- 同时被踢玩家收到被踢协议
  174. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_OTHER_KICKED_RESPONSE , reader = ClubOtherKickedResponse, func = handler(self , self.onClubOtherKickedResponse)};
  175. -- 茶馆解散房间结果
  176. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_RESPONSE , reader = ClubDismissResponse, func = handler(self , self.onClubDismissResponse)};
  177. -- 茶馆禁止同桌结果
  178. self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_NOTSAMEDESK_RESPONSE , reader = ClubNotSameDeskResponse, func = handler(self , self.onClubNotSameDeskResponse)};
  179. end
  180. return ClubProtocol;