|
- 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;
|