require("luaScript.Protocol.ProtocolCommon") require("luaScript.Protocol.Club.ClubProtocalMessage") local ClubProtocol = class("ClubProtocol" , require("luaScript.Protocol.Protocol")) local ClubCmd = require("luaScript.Protocol.Club.ClubCmd") -- 创建茶馆房间结果,成功或者失败 function ClubProtocol:onClubCreateRoomRequest(status, response) logD("ClubProtocol:onClubCreateRoomRequest(), ", table.tostring(response)) --如果是点了再来一局才去拉取数据 local againbol,wanfa = getIsAgainGamebol() if wanfa ~= "" and response.ret == 0 then setGameRoomId(response.showTableId) app.club_php:clubInviteSameTable() end --app.waitDialogManager:closeWaitNetworkDialog(); app.waitDialogManager:closeAllNetWait(); -- 成功后直接进入房间 --创建房间失败提示游戏开始禁止加入游戏时,主动重新创建一个房间,并刷新茶馆桌子 if response.ret ~= 0 then showTooltip(GAME_CLUB_CREATE_ROOM_RESULT[response.ret] or tostring(response.ret)); logD("ClubProtocol:onClubCreateRoomRequest() createFail, ", tostring(response.ret)) if response.ret == 4 then if app.club_php.clubID and app.club_php.clubID~=0 then app.club_php:requestClubHome(app.club_php.clubID) end app.club:dispatchEvent({name = GAME_EVENT.CLUB_CREATE_ERR}) end end end -- 加入茶馆房间结果,成功或者失败 function ClubProtocol:onClubJoinRoomResponse(status, response) logD("ClubProtocol:onClubJoinRoomResponse(), ", table.tostring(response)) -- logD(table.tostring(response)) --app.waitDialogManager:closeWaitNetworkDialog(); app.waitDialogManager:closeAllNetWait(); if response.ret == 1 then if self.clubCreateRoomData ~= nil then --房间解散时,加入失败,就直接发送创建房间 self:requesetCreateRoomInClub(self.clubCreateRoomData); --清空创建房间数据 self.clubCreateRoomData = nil; return; end end -- 成功后直接进入房间 if response.ret ~= 0 then -- if app.club_php.clubID and app.club_php.clubID~=0 then GAME_CLUB_JOIN_ROOM_RESULT[response.ret] = string.gsub(GAME_CLUB_JOIN_ROOM_RESULT[response.ret], "茶馆", "赛事") GAME_CLUB_JOIN_ROOM_RESULT[response.ret] = string.gsub(GAME_CLUB_JOIN_ROOM_RESULT[response.ret], "亲友圈", "赛事") -- end showTooltip(GAME_CLUB_JOIN_ROOM_RESULT[response.ret] or tostring(response.ret)); end end --茶馆踢人结果协议 function ClubProtocol:onClubKickResponse(status,response) logD("ClubProtocol:onClubKickResponse(), ", table.tostring(response)) app.waitDialogManager:closeWaitNetworkDialog(); if app.club_php:getCestIsOpen(app.club_php.clubID) then GAME_CLUB_KICK_RESULT[response.result] = string.gsub(GAME_CLUB_KICK_RESULT[response.result], "玩家", "选手") end showTooltip(GAME_CLUB_KICK_RESULT[response.result] or tostring(response.result)); self:dispatchEvent({name = "onClubKickResponse"}); end --同时被踢玩家收到被踢协议 function ClubProtocol:onClubOtherKickedResponse(status,response) logD("ClubProtocol:onClubOtherKickedResponse(), ", table.tostring(response)) app.waitDialogManager:closeWaitNetworkDialog(); showTooltip("您已被管理员踢出房间") self:dispatchEvent({name = "onClubOtherKickedResponse"}); end --茶馆解散房间结果协议 function ClubProtocol:onClubDismissResponse(status,response) logD("ClubProtocol:onClubDismissResponse(), response = ", table.tostring(response)) app.waitDialogManager:closeWaitNetworkDialog(); showTooltip(GAME_CLUB_DISMISS_RESULT[response.result] or tostring(response.result)); self:dispatchEvent({name = "onClubDismissResponse"}); end --申请创建房间 function ClubProtocol:requesetCreateRoomInClub(request) setIsRoomGamedata(nil) setisContinueRoomGamedata(nil) setisContinueRoomGamebol(false) --清空抽奖数据 dd.IGameOverAward.setAwardData(nil) checkSubGameFiles(request.gameid, function() -- 为了收到服务器返回的结果时能正确接收房间消息 -- 这里应该先加载房间协议 local gameInfo = {} local gameType = nil if request.gameInfo then gameInfo = json.decode(request.gameInfo) gameType = gameInfo.gamerule or 0 end --如果是合盟 local clubInfo = app.club_php.clubList[tonumber(request.groupId)] if clubInfo then if clubInfo.unionType == 2 then request.groupId = tonumber(clubInfo.unionGid);--茶馆标识 request.groupUid = tonumber(clubInfo.unionOwner);--茶馆标识 gameInfo.clubId = tonumber(clubInfo.unionGid);--茶馆标识 request.gameInfo = json.encode(gameInfo) elseif clubInfo.unionType == 1 then request.groupUid = tonumber(clubInfo.ownerId);--茶馆标识 end end logD("ClubProtocol:requesetCreateRoomInClub(), request = ", table.tostring(request)) app:changeGameProtocol(request.gameid or 0,gameType); app.waitDialogManager:showWaitNetworkDialog(); self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM , sender = request}; end) end -- 申请加入房间 function ClubProtocol:requestJoinRoomInClub(request, createRoomRequst) logD("ClubProtocol:requestJoinRoomInClub(), request = ", table.tostring(request)) -- 进房之前先检查文件完整性 checkSubGameFiles(request.gameid, function() app:changeGameProtocol(request.gameid or 0,request.gamerule or 0); --记录创建房间数据 self.clubCreateRoomData = createRoomRequst; --如果是合盟 local clubInfo = app.club_php.clubList[tonumber(request.grouId)] if clubInfo then if clubInfo.unionType == 2 then request.grouId = tonumber(clubInfo.unionGid);--茶馆标识 end end app.waitDialogManager:showWaitNetworkDialog(); self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_REQUEST , sender = request}; end) end --茶馆中解散房间请求 function ClubProtocol:requestDismissInClub(request) logD("ClubProtocol:requestDismissInClub(), ", table.tostring(request)) app.waitDialogManager:showWaitNetworkDialog(); self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_REQUEST , sender = request}; end --茶馆中踢人请求 function ClubProtocol:requestKickInClub(request) logD("ClubProtocol:requestKickInClub(), ", table.tostring(request)) app.waitDialogManager:showWaitNetworkDialog(); self:sendResponse{cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_REQUEST , sender = request}; end -- 茶馆禁止同桌结果 function ClubProtocol:onClubNotSameDeskResponse(status, response) logD("ClubProtocol:onClubNotSameDeskResponse(), ", table.tostring(response)) app.waitDialogManager:closeWaitNetworkDialog(); -- 成功后直接进入房间 if response.ret == 16 then self:dispatchEvent({name = "onClubNotSameDeskResponse",uid = response.forbidUid,userInfo = response.userInfo}); elseif response.ret == 19 then self:dispatchEvent({name = GAME_EVENT.CLUB_GPS_DISTANCE,uid = response.forbidUid,userInfo = response.userInfo,gpsLimit = response.gpsLimit}); end end function ClubProtocol:ctor(net) ClubProtocol.super.ctor(self , net); --加入房间数据 self.clubCreateRoomData = nil; --发送 -- 创建房间 self:defMsgFunc{name = "clubCreateRoomRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM, sender = ClubCreateRoomRequest}; -- 加入房间 self:defMsgFunc{name = "clubJoinRoomRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_REQUEST, sender = ClubJoinRoomRequest}; -- 茶馆游戏未开始时踢人 self:defMsgFunc{name = "clubKickRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_REQUEST, sender = ClubKickRequest}; -- 茶馆解散房间 self:defMsgFunc{name = "ClubDismissRequest" , cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_REQUEST, sender = ClubDismissRequest}; --接收 -- 推送创建房间结果(正常进入)如果进房成功,服务器会快速分配桌子给玩家,分配成功返回进入桌子成功消息 RoomCmd.GAME_COMMAND_LOGIN_GAME_SUCCESS self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_CREATEROOM_RESPONSE , reader = ClubCreateRoomResponse, func = handler(self , self.onClubCreateRoomRequest)}; -- 推送加入房间结果 self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_JOINROOM_RESPONSE , reader = ClubJoinRoomResponse, func = handler(self , self.onClubJoinRoomResponse)}; -- 茶馆踢人结果协议 self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_KICK_RESPONSE , reader = ClubKickResponse, func = handler(self , self.onClubKickResponse)}; -- 同时被踢玩家收到被踢协议 self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_OTHER_KICKED_RESPONSE , reader = ClubOtherKickedResponse, func = handler(self , self.onClubOtherKickedResponse)}; -- 茶馆解散房间结果 self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_DISMISS_RESPONSE , reader = ClubDismissResponse, func = handler(self , self.onClubDismissResponse)}; -- 茶馆禁止同桌结果 self:defPushMsg{cmd = ClubCmd.GAME_COMMAND_CLUB_NOTSAMEDESK_RESPONSE , reader = ClubNotSameDeskResponse, func = handler(self , self.onClubNotSameDeskResponse)}; end return ClubProtocol;