|
- -- 解散界面
- local RoomDismissView = class("RoomDismissView", cc.UIView)
-
-
-
- local STATUS = {
- Wait = 1,
- Agree = 2,
- Refuse = 3,
- }
-
- local TEXT_STATUS = {
- "(等待中)",
- "(已同意)",
- "(已拒绝)",
- }
-
- local TEXT_STATUS_COLOR = {
- cc.c3b(154,57,5),
- cc.c3b(16,160,0),
- cc.c3b(219,56,35),
- }
-
- --[[
- initiateUserId : 发起解散的人
- memberList :成员列表
- ]]--
-
- function RoomDismissView:ctor(initiateUserId,memberList,time)
- RoomDismissView.super.ctor(self);
- self.initiateUserId = initiateUserId
- self.itemList = {}
- self.memberList = memberList or {}
- self.memberStatus = {}
- self.memberStatus[initiateUserId] = STATUS.Agree
- self.time = time or 60 --默认60秒
- self:loadUI()
- end
-
- function RoomDismissView:loadUI()
- local ui = loadUI("res/ui/ui_fangjian/ui_fanjian_jiesan.ui")
- self.ui = ui
- self:addChild(ui)
- end
-
- function RoomDismissView:onEnter()
- RoomDismissView.super.onEnter(self)
-
-
- --谁申请解散
- local userInfo = self:getUserInfoById(self.initiateUserId)
- local initiateUserName = getSubStringNickname(userInfo.nickname,self.ui.Items.Text)
- local str = "玩家 ["..initiateUserName.."] 申请解散房间,是否同意?"
- if app.club_php.clubID and app.club_php.clubID~=0 then
- if app.club_php:getCestIsOpen(app.club_php.clubID) then
- str = "选手 ["..initiateUserName.."] 申请解散房间,是否同意?"
- end
- end
- self.ui.Items.Text_Info:setText(str)
-
- -- 同意
- self.ui.Items.Button_Agree:registerClick(handler(self , self.onClickAgree))
-
- -- 拒绝
- self.ui.Items.Button_Refuse:registerClick(handler(self , self.onClickRefuse))
-
- self.ui.Items.Itme_Player:setVisible(false)
-
- self:bindEvent(app.room , GAME_EVENT.DISSMISS_UPDATE_STATUS , handler(self , self.onEventUpdateStatus));
- self:bindEvent(app.room , GAME_EVENT.DISSMISS_CLOSE , handler(self , self.onEventDismissClose));
-
- self:initPlayerStatus();
-
- self:updateButton()
- self:updatePlayers()
- self:updateTime()
-
- end
- --- RoomDismissView:initPlayerStatus 初始化玩家状态,主要是重连时的状态
- function RoomDismissView:initPlayerStatus()
- for nUserId, memberInfo in pairsByKeys(self.memberList) do
- if nUserId ~= self.initiateUserId and memberInfo.nDisbandStatus and memberInfo.nDisbandStatus > 0 then
- self.memberStatus[nUserId] = memberInfo.nDisbandStatus;
- end
- end
- end
- --- RoomDismissView:resetPlayerStatus 结算解散后,需重置一下状态,否则下一次申请解散时,显示异常
- function RoomDismissView:resetPlayerStatus()
- for nUserId, memberInfo in pairsByKeys(self.memberList) do
- memberInfo.nDisbandStatus = nil;
- end
- end
-
- function RoomDismissView:updateTime()
- local t = self.time
- self.ui.Items.Text_Time:setText(t)
- self.ui.Items.Text_Time:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function()
- t=t-1
- if t<0 then
- t = 0
- -- self:removeFromParent()
- end
- self.ui.Items.Text_Time:setText(t)
- end))))
- end
-
- function RoomDismissView:updatePlayers()
- local layout = self.ui.Items.Layout_Player
- layout:removeAllChildren()
-
- if table.nums(self.memberList) == 5 then--五人斗地主,两边快出去了,缩小头像框的范围
- self.ui.Items.Itme_Player:setSize(cc.size(170,200))
- end
- --桌子有坐下的人
- for nUserId, memberInfo in pairsByKeys(self.memberList) do
- if memberInfo and memberInfo.userInfo and memberInfo.userInfo ~= "" then
- local userInfo = json.decode(memberInfo.userInfo)
-
- local item = self.ui.Items.Itme_Player:getCopied()--MJRoomDismissItem:new(nUserId, 0)
- item:setVisible(true)
- layout:addChild(item)
- local items = getUIItems(item)
- items.Text_Name:setText(userInfo.nickname)
-
- setPlayerHeadImage(nUserId,userInfo.headimgurl,items.ImageView_Head)
-
- --显示状态 不存在状态 默认等待
- local status = self.memberStatus[nUserId] or STATUS.Wait
- items.Text_Status:setText(TEXT_STATUS[status] or TEXT_STATUS[STATUS.Wait]) --状态为0 默认等待状态
- items.Text_Status:setColor(TEXT_STATUS_COLOR[status] or TEXT_STATUS_COLOR[STATUS.Wait])
- end
- -- if status then
-
- -- items.Text_Status:setColor(TEXT_STATUS_COLOR[status] or TEXT_STATUS_COLOR[STATUS.Wait])
- -- else
- -- items.Text_Status:setText(TEXT_STATUS[status])
- -- end
-
-
-
- -- self.itemList[nUserId] = item
- end
- layout:requestDoLayout()
- layout:doLayout()
- end
-
- function RoomDismissView:updateButton()
- local myUserId = app.user.loginInfo.uid
- if self.memberStatus[myUserId] or self.initiateUserId == myUserId then --and self.memberStatus[myUserId] ~= 0
- -- 我已经选择过了或者我是发起申请的那个
- self.ui.Items.Button_Agree:setVisible(false)
- self.ui.Items.Button_Refuse:setVisible(false)
- else
- -- 我还没选择
- self.ui.Items.Button_Agree:setVisible(true)
- self.ui.Items.Button_Refuse:setVisible(true)
- end
-
- if app.room.isOnLooker then
- self.ui.Items.Button_Agree:setVisible(false)
- self.ui.Items.Button_Refuse:setVisible(false)
- self.ui.Items.Text_Looker:setVisible(true)
- else
- self.ui.Items.Text_Looker:setVisible(false)
- end
- end
-
- -- 同意
- function RoomDismissView:onClickAgree()
- playBtnEffect()
- app.room:requestDismissRoom(2)
- end
-
- -- 拒绝
- function RoomDismissView:onClickRefuse()
- playBtnEffect()
- app.room:requestDismissRoom(3)
- end
-
-
- function RoomDismissView:getUserInfoById(uid)
- for k,v in pairs(self.memberList) do
- if uid == v.nUserId then
- return json.decode(v.userInfo)
- end
- end
- end
-
-
- function RoomDismissView:onEventUpdateStatus(event)
- -- local response = event.response
- --如果等于1 默认为2同意
- if event.memberStatus then
- local isRefuse = false
-
- for k,v in pairs(event.memberStatus) do
- self.memberStatus[v.userId] = v.status == 1 and 2 or v.status
- if v.status == STATUS.Refuse then
- isRefuse = true
- end
- end
-
- self:updateButton()
- self:updatePlayers()
-
- if isRefuse then--如果有人拒绝关闭界面
- -- self:removeFromParent()
- self:runDelay(1, function()
- self:resetPlayerStatus();
- self:removeFromParent()
- end)
- end
- end
- -- 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
- -- 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
- -- if isReplyNum >= table.nums(app.room.roomInfo.memberList) then
- -- self:runDelay(1, function()
- -- self:removeView()
- -- end )
- -- end
- end
-
- function RoomDismissView:onEventDismissClose(event)
- self:removeFromParent()
- -- self:removeView()
- end
-
- function RoomDismissView:removeView()
- -- app.room.roomInfo.nShowDismiss = false
- -- if self.loadingBarTimer then
- -- cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
- -- end
- -- self:removeFromParent()
- end
-
- return RoomDismissView;
|