No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

188 líneas
5.5 KiB

  1. -- 解散界面
  2. local ZiPaiRoomDismissView = class("ZiPaiRoomDismissView", cc.UIView)
  3. local function getUserNameById(userId)
  4. local userInfo = app.room:getUserInfo(userId)
  5. if not userInfo then return end
  6. local userName = userInfo.nickname or tostring(userId)
  7. return userName
  8. end
  9. function ZiPaiRoomDismissView:ctor(initiateUserId)
  10. ZiPaiRoomDismissView.super.ctor(self);
  11. self.m_initiateUserId = initiateUserId
  12. self.itemList = {}
  13. end
  14. function ZiPaiRoomDismissView:onEnter()
  15. ZiPaiRoomDismissView.super.onEnter(self)
  16. local ui = loadUI("zp_base/res/ui/ui_fangjian/zipai_ui_jiesan.ui");
  17. self.ui = ui;
  18. self:addChild(ui);
  19. --谁申请解散
  20. local initiateUserName = getUserNameById(self.m_initiateUserId)
  21. initiateUserName = getSubStringNickname(initiateUserName,self.ui.Items.Text)
  22. self.ui.Items.Text:setText("["..initiateUserName.."]")
  23. -- 同意
  24. self.ui.Items.Button_1:registerClick(handler(self , self.onClickAgree))
  25. -- 拒绝
  26. self.ui.Items.Button_2:registerClick(handler(self , self.onClickRefuse))
  27. local layout = self.ui.Items.Layout_3
  28. layout:removeAllChildren()
  29. local count = 1
  30. local PCOUNT = app.room:getActualPlayerNum()
  31. local dltWidth = layout:getContentSize().width/PCOUNT
  32. if PCOUNT == 2 then
  33. dltWidth = dltWidth - 120
  34. else
  35. dltWidth = dltWidth - 80
  36. end
  37. --local shift = (dltWidth-90)/4
  38. --桌子有坐下的人
  39. for nUserId, memberInfo in pairsByKeys(app.room.roomInfo.memberList) do
  40. if app.room:checkUserIDIsInTable(nUserId) then
  41. local item = import("zp_base.luaScript.Views.Room.ZPRoomDismissItem"):new(nUserId, 0)
  42. if PCOUNT == 2 then
  43. if count == 1 then
  44. item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10))
  45. else
  46. item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10))
  47. end
  48. else
  49. if count==1 then
  50. item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10))
  51. elseif count==3 then
  52. item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10))
  53. else
  54. item.ui:setPosition(cc.p((count-1)*dltWidth+dltWidth/2, 10))
  55. end
  56. end
  57. layout:addChild(item.ui)
  58. self.itemList[nUserId] = item
  59. count = count + 1
  60. end
  61. end
  62. self:bindEvent(app.room , "onDismissResponse" , handler(self , self.onDismissResponse));
  63. self:bindEvent(app.room , "onGameOverResponse" , handler(self , self.onGameOverResponse));
  64. self:updateButton()
  65. local nLeftTime = app.room.roomInfo.nDismissStateTime
  66. local timer = nLeftTime or 60
  67. local nTotalTime = app.room.roomInfo.nDismissToTalTime
  68. local totalTime = nTotalTime or 60
  69. if self.ui.Items.LoadingBar then
  70. self.ui.Items.LoadingBar:setPercent(timer/totalTime * 100)
  71. end
  72. self.ui.Items.time:setText(tostring(totalTime))
  73. self.ui.Items.time:setText(tostring(timer))--数字跟着倒计时
  74. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  75. if tolua.isnull(self.ui.Items.time) then
  76. if self.loadingBarTimer then
  77. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  78. end
  79. return
  80. end
  81. if tolua.isnull(self.ui.Items.LoadingBar) then
  82. if self.loadingBarTimer then
  83. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  84. end
  85. return
  86. end
  87. timer = timer - 1
  88. if timer <= 0 then
  89. self.ui.Items.time:setText(tostring(0))--数字跟着倒计时
  90. else
  91. self.ui.Items.time:setText(tostring(timer))--数字跟着倒计时
  92. end
  93. if self.ui.Items.LoadingBar then
  94. self.ui.Items.LoadingBar:setPercent(timer/totalTime * 100)
  95. end
  96. end,1.0,false)
  97. end
  98. function ZiPaiRoomDismissView:updateButton()
  99. local myUserId = app.room.roomInfo.nUserId
  100. if app.room.dismissInfo[myUserId] and app.room.dismissInfo[myUserId] ~= 0 or self.m_initiateUserId == myUserId then
  101. -- 我已经选择过了或者我是发起申请的那个
  102. self.ui.Items.Button_1:setVisible(false)
  103. self.ui.Items.Button_2:setVisible(false)
  104. else
  105. -- 我还没选择
  106. self.ui.Items.Button_1:setVisible(true)
  107. self.ui.Items.Button_2:setVisible(true)
  108. end
  109. if app.room.isOnLooker then
  110. self.ui.Items.Button_1:setVisible(false)
  111. self.ui.Items.Button_2:setVisible(false)
  112. self.ui.Items.Text_onLooker:setVisible(true)
  113. else
  114. self.ui.Items.Text_onLooker:setVisible(false)
  115. end
  116. end
  117. -- 同意
  118. function ZiPaiRoomDismissView:onClickAgree()
  119. app.room:requestDismissRoom(2)
  120. end
  121. -- 拒绝
  122. function ZiPaiRoomDismissView:onClickRefuse()
  123. app.room:requestDismissRoom(3)
  124. end
  125. function ZiPaiRoomDismissView:onDismissResponse(event)
  126. self:updateButton()
  127. for id,op in pairs(app.room.dismissInfo) do
  128. local item = self.itemList[id]
  129. if item then
  130. item:updateStatus();
  131. end
  132. end
  133. -- 房间内的人全都回复过了
  134. local isReplyNum = 0
  135. logD("ZiPaiRoomDismissView:onDismissResponse(), ", table.tostring(app.room.dismissInfo))
  136. for _, operateType in pairs(app.room.dismissInfo) do
  137. if operateType == 1 or operateType == 2 or operateType == 3 then
  138. isReplyNum = isReplyNum + 1
  139. if operateType == 3 then
  140. self:runDelay(1, function()
  141. self:removeView()
  142. end )
  143. end
  144. end
  145. end
  146. logD("ZiPaiRoomDismissView:onDismissResponse(), isReplyNum = "..isReplyNum.."ActualNum = "..app.room:getActualPlayerNum())
  147. if isReplyNum >= app.room:getActualPlayerNum() then
  148. self:runDelay(1, function()
  149. self:removeView()
  150. end )
  151. end
  152. end
  153. function ZiPaiRoomDismissView:onGameOverResponse(event)
  154. self:removeView()
  155. end
  156. function ZiPaiRoomDismissView:removeView()
  157. app.room.roomInfo.nShowDismiss = false
  158. if self.loadingBarTimer then
  159. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  160. end
  161. self:removeFromParent()
  162. end
  163. return ZiPaiRoomDismissView;