-- 游戏房间邀请框Layout local ClubInviteRoomNew = class("ClubInviteRoomNew" , cc.UIView); --- -- 构造函数 -- @param gID -- @param inviteInfo {userInfo = {uid, nick, icon}, gname, gamerule} -- @param clickCallback -- @param agreeCallback -- @return -- function ClubInviteRoomNew:ctor(gID, inviteInfo, clickCallback,agreeCallback) ClubInviteRoomNew.super.ctor(self) local ui = loadUI("res/ui/ui_club/clubnew/ui_club_invite_room_new.ui") self.ui = ui; self:addChild(ui); --俱乐部id self.gid = gID; --邀请信息 self.inviteInfo = inviteInfo; self.returnCallback = clickCallback; self.agreeCallback = nil if agreeCallback then self.agreeCallback = agreeCallback end end function ClubInviteRoomNew:onEnter() ClubInviteRoomNew.super.onEnter(self) --按钮注册事件 self:registerButton(); --设置默认界面 self:setDefault(); -- 监听事件 self:bindEvent(app.hall , "onJoinRoomResponse", handler(self , self.onJoinRoomResponse)); self:bindEvent(app.club_php , GAME_EVENT.CLUB_MEMBER_SET_SUCCESS, handler(self , self.onCloseView)); -- 15秒后自动关闭 self:runDelay(15, function () self:onClose() end) end --- -- 注册按钮点击事件 -- @return -- function ClubInviteRoomNew:registerButton() --同意 self.ui.Items.Button_agree:registerClick(handler(self , self.onClickAgree)) --拒绝 self.ui.Items.Button_disagree:registerClick(handler(self , self.onClickDisagree)) self.ui.Items.Layout_BG:registerClick(handler(self , self.onClickDisagree)) --屏蔽邀请 self.ui.Items.CheckBox_pingbi:addEventListener(handler(self , self.onClickPingbi)) end --- -- 设置默认界面 -- @return -- function ClubInviteRoomNew:setDefault() local inviteInfo = self.inviteInfo if inviteInfo.userInfo then --玩家头像 local nodeHead = self.ui.Items.headImg; setPlayerHeadImage(inviteInfo.userInfo.uid, inviteInfo.userInfo.icon,nodeHead) --玩家昵称 local nickname = getSubStringNickname(inviteInfo.userInfo.nick, self.ui.Items.Text_name) self.ui.Items.Text_name:setText(nickname); end local content = string.format("邀请你进入房间%s(%s)", inviteInfo.roomid or 0, inviteInfo.gamerule or "") self.ui.Items.Text_Tips:setText(content) if app.club_php:getCestIsOpen(self.gid) then local str = self.ui.Items.Text:getText() str = string.gsub(str, "玩家", "选手") self.ui.Items.Text:setText(str) end end function ClubInviteRoomNew:onClose() playBtnCloseEffect(); if self.returnCallback then self.returnCallback() end self:removeFromParent() end function ClubInviteRoomNew:onCloseView() if self.returnCallback then self.returnCallback() end self:removeFromParent() end --- -- 同意请求 -- @return -- function ClubInviteRoomNew:onClickAgree() playBtnEffect() if self.agreeCallback then local parm = { roomid = self.inviteInfo.roomid, gid = self.gid, } setAgainGameInvitedata(parm) self.agreeCallback() return end local roomId = self.inviteInfo.roomid logD("ClubInviteRoomNew:onClickAgree() roomId = ", roomId) if not roomId then return end if not isEnableEnterRoom() then return end --同意后进入房间,赋值当前进入的俱乐部id app.club_php.clubID = self.gid local function doRequest(gameId, roomId) if not gameId or tonumber(gameId) <= 0 then showTooltip("房间号不存在") self:onClose() return end app.hall:requestJoinRoom(gameId, roomId) end app.hall:queryRoomId(roomId,doRequest) end --- -- 拒绝请求 -- @return -- function ClubInviteRoomNew:onClickDisagree() playBtnEffect() if self.returnCallback then self.returnCallback() end self:removeFromParent() end --- -- 监听加入房间返回事件 -- @param event -- @return -- function ClubInviteRoomNew:onJoinRoomResponse(event) if not event then return end local errCode = event.errCode if errCode ~= 0 then local errString = ENTER_ROOM_RET_STR[errCode] or "房间不存在" showTooltip(errString); end end --是否屏蔽玩家邀请 function ClubInviteRoomNew:onClickPingbi() playBtnEffect() local isChoice = self.ui.Items.CheckBox_pingbi:getSelectedState() if isChoice then --local function okCallBack() --设置类型{1:邀请勿扰, $value 拒接邀请对象uid; 2:屏蔽开局用户, $value 1屏蔽0可见; 3:俱乐部置顶, $value 1置顶0取消置顶} local setType = 1; local playerId = nil local inviteInfo = self.inviteInfo if inviteInfo and inviteInfo.userInfo then playerId = inviteInfo.userInfo.uid app.club_php:requestMemberSet(self.gid, setType, playerId) end --end --local function cancelCallBack() -- self.ui.Items.CheckBox_pingbi:setSelectedState(false) --end --showConfirmDialog("是否屏蔽所有玩家5分钟内发出的邀请?", okCallBack, cancelCallBack); else --不允许取消屏蔽 self.ui.Items.CheckBox_pingbi:setSelectedState(true) end end return ClubInviteRoomNew