-- 解散界面 local ZiPaiRoomDismissView = class("ZiPaiRoomDismissView", cc.UIView) local function getUserNameById(userId) local userInfo = app.room:getUserInfo(userId) if not userInfo then return end local userName = userInfo.nickname or tostring(userId) return userName end function ZiPaiRoomDismissView:ctor(initiateUserId) ZiPaiRoomDismissView.super.ctor(self); self.m_initiateUserId = initiateUserId self.itemList = {} end function ZiPaiRoomDismissView:onEnter() ZiPaiRoomDismissView.super.onEnter(self) local ui = loadUI("zp_base/res/ui/ui_fangjian/zipai_ui_jiesan.ui"); self.ui = ui; self:addChild(ui); --谁申请解散 local initiateUserName = getUserNameById(self.m_initiateUserId) initiateUserName = getSubStringNickname(initiateUserName,self.ui.Items.Text) self.ui.Items.Text:setText("["..initiateUserName.."]") -- 同意 self.ui.Items.Button_1:registerClick(handler(self , self.onClickAgree)) -- 拒绝 self.ui.Items.Button_2:registerClick(handler(self , self.onClickRefuse)) local layout = self.ui.Items.Layout_3 layout:removeAllChildren() local count = 1 local PCOUNT = app.room:getActualPlayerNum() local dltWidth = layout:getContentSize().width/PCOUNT if PCOUNT == 2 then dltWidth = dltWidth - 120 else dltWidth = dltWidth - 80 end --local shift = (dltWidth-90)/4 --桌子有坐下的人 for nUserId, memberInfo in pairsByKeys(app.room.roomInfo.memberList) do if app.room:checkUserIDIsInTable(nUserId) then local item = import("zp_base.luaScript.Views.Room.ZPRoomDismissItem"):new(nUserId, 0) if PCOUNT == 2 then if count == 1 then item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10)) else item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10)) end else if count==1 then item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10)) elseif count==3 then item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10)) else item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10)) end end layout:addChild(item.ui) self.itemList[nUserId] = item count = count + 1 end end self:bindEvent(app.room , "onDismissResponse" , handler(self , self.onDismissResponse)); self:bindEvent(app.room , "onGameOverResponse" , handler(self , self.onGameOverResponse)); self:updateButton() local nLeftTime = app.room.roomInfo.nDismissStateTime local timer = nLeftTime or 60 local nTotalTime = app.room.roomInfo.nDismissToTalTime local totalTime = nTotalTime or 60 if self.ui.Items.LoadingBar then self.ui.Items.LoadingBar:setPercent(timer/totalTime * 100) end self.ui.Items.time:setText(tostring(totalTime)) self.ui.Items.time:setText(tostring(timer))--数字跟着倒计时 self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function() if tolua.isnull(self.ui.Items.time) then if self.loadingBarTimer then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer) end return end if tolua.isnull(self.ui.Items.LoadingBar) then if self.loadingBarTimer then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer) end return end timer = timer - 1 if timer <= 0 then self.ui.Items.time:setText(tostring(0))--数字跟着倒计时 else self.ui.Items.time:setText(tostring(timer))--数字跟着倒计时 end if self.ui.Items.LoadingBar then self.ui.Items.LoadingBar:setPercent(timer/totalTime * 100) end end,1.0,false) end function ZiPaiRoomDismissView:updateButton() local myUserId = app.room.roomInfo.nUserId if app.room.dismissInfo[myUserId] and app.room.dismissInfo[myUserId] ~= 0 or self.m_initiateUserId == myUserId then -- 我已经选择过了或者我是发起申请的那个 self.ui.Items.Button_1:setVisible(false) self.ui.Items.Button_2:setVisible(false) else -- 我还没选择 self.ui.Items.Button_1:setVisible(true) self.ui.Items.Button_2:setVisible(true) end if app.room.isOnLooker then self.ui.Items.Button_1:setVisible(false) self.ui.Items.Button_2:setVisible(false) self.ui.Items.Text_onLooker:setVisible(true) else self.ui.Items.Text_onLooker:setVisible(false) end end -- 同意 function ZiPaiRoomDismissView:onClickAgree() app.room:requestDismissRoom(2) end -- 拒绝 function ZiPaiRoomDismissView:onClickRefuse() app.room:requestDismissRoom(3) end function ZiPaiRoomDismissView:onDismissResponse(event) self:updateButton() for id,op in pairs(app.room.dismissInfo) do local item = self.itemList[id] if item then item:updateStatus(); end end -- 房间内的人全都回复过了 local isReplyNum = 0 logD("ZiPaiRoomDismissView:onDismissResponse(), ", table.tostring(app.room.dismissInfo)) for _, operateType in pairs(app.room.dismissInfo) do if operateType == 1 or operateType == 2 or operateType == 3 then isReplyNum = isReplyNum + 1 if operateType == 3 then self:runDelay(1, function() self:removeView() end ) end end end logD("ZiPaiRoomDismissView:onDismissResponse(), isReplyNum = "..isReplyNum.."ActualNum = "..app.room:getActualPlayerNum()) if isReplyNum >= app.room:getActualPlayerNum() then self:runDelay(1, function() self:removeView() end ) end end function ZiPaiRoomDismissView:onGameOverResponse(event) self:removeView() end function ZiPaiRoomDismissView:removeView() app.room.roomInfo.nShowDismiss = false if self.loadingBarTimer then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer) end self:removeFromParent() end return ZiPaiRoomDismissView;