You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
5.4 KiB

  1. -- luzhouRequestStartView.lua
  2. local MJMessage = ZPFramework.ZPImport("mj.luaScript.Protocol.MJMessage")
  3. local MJDefine = ZPFramework.ZPImport("mj.luaScript.MJDefine")
  4. local doushisiRequestStartView = class("doushisiRequestStartView", cc.UIView)
  5. function doushisiRequestStartView:ctor(initiateUserId)
  6. doushisiRequestStartView.super.ctor(self)
  7. loadSpriteFrameFile("res/ui/zy_fangjian/liangsanren/liangsanren.plist")
  8. self.m_initiateUserId = initiateUserId
  9. self.listItems = {}
  10. self:loadUi()
  11. end
  12. function doushisiRequestStartView:loadUi()
  13. self.ui = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstart.ui")
  14. self:addChild(self.ui)
  15. self:initUi()
  16. end
  17. function doushisiRequestStartView:initUi( )
  18. -- 同意
  19. self.ui.Items.Button_1:registerClick(handler(self , self.onClickAgree))
  20. -- 拒绝
  21. self.ui.Items.Button_2:registerClick(handler(self , self.onClickRefuse))
  22. self:setBtnEnabled( not app.room:isMyself(self.m_initiateUserId))
  23. self.ui.Items.Text_3:setString("")
  24. end
  25. function doushisiRequestStartView:setBtnEnabled( is )
  26. self.ui.Items.Button_1:setVisible( is )
  27. self.ui.Items.Button_2:setVisible( is )
  28. end
  29. -- info{uid=1, nick="", headUrl="", status=1}
  30. function doushisiRequestStartView:showItems(data)
  31. self.listItems = {}
  32. self.ui.Items.Layout_3:removeAllChildren()
  33. if data == nil or data.pList == nil then return "" end
  34. local memberList = {}
  35. for _,v in pairs(data.pList) do
  36. local info = app.room.roomInfo.memberList[v.nUserId]
  37. local t = {}
  38. t.userInfo = info.userInfo
  39. t.nStatus = v.nStatus
  40. t.nUserId = v.nUserId
  41. memberList[v.nUserId] = t
  42. end
  43. local tmp = {}
  44. for uid,v in pairs(memberList) do
  45. if v and v.userInfo then
  46. local info = json.decode(v.userInfo)
  47. table.insert(tmp, {uid=tonumber(uid), nick=info.nickname, headUrl=info.headimgurl, status=v.nStatus})
  48. end
  49. end
  50. if #tmp>=2 then table.sort(tmp,function(a, b) return a.uid<b.uid end) end
  51. for i,v in ipairs(tmp) do
  52. local node = self:createItem(v)
  53. self.listItems[v.uid] = node
  54. self.ui.Items.Layout_3:addChild(node)
  55. end
  56. self:updateBar(data.timeOut, 60)
  57. end
  58. function doushisiRequestStartView:updateView( data )
  59. local list = data.pList
  60. for _,v in pairs(list) do
  61. local node = self.listItems[v.nUserId]
  62. if node then
  63. node:updateImg(v.nStatus)
  64. if app.room:isMyself(v.nUserId) and v.nStatus~=4 then
  65. self:setBtnEnabled(false)
  66. end
  67. end
  68. end
  69. self:updateBar(data.timeOut, 60)
  70. end
  71. -- 设置发起者昵称
  72. function doushisiRequestStartView:setRequestNick( info )
  73. self.ui.Items.Text:setString('['.. (getSubStringNickname(info.nickname) or "") ..']')
  74. end
  75. -- 时间
  76. function doushisiRequestStartView:updateBar( time, totalTime )
  77. if self.loadingBarTimer == nil then
  78. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  79. time = time - 1
  80. if self.ui.Items.Text_3 then
  81. self.ui.Items.Text_3:setString(string.format("%d", time))
  82. end
  83. end,1.0,false)
  84. else
  85. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  86. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  87. time = time - 1
  88. if self.ui.Items.Text_3 then
  89. self.ui.Items.Text_3:setString(string.format("%d", time))
  90. end
  91. end,1.0,false)
  92. end
  93. end
  94. -- 同意
  95. function doushisiRequestStartView:onClickAgree(sender)
  96. playBtnEffect()
  97. local request = MJMessage.FastStartRequest:new()
  98. request.tp = 2
  99. self.ui:sendMsg(app.room, MJDefine.MJEvent.RequestFastsStart, request)
  100. end
  101. -- 拒绝
  102. function doushisiRequestStartView:onClickRefuse(sender)
  103. playBtnEffect()
  104. local request = MJMessage.FastStartRequest:new()
  105. request.tp = 3
  106. self.ui:sendMsg(app.room, MJDefine.MJEvent.RequestFastsStart, request)
  107. end
  108. function doushisiRequestStartView:removeSelf()
  109. local pNode = self:getParent()
  110. if pNode and pNode._fastRequestView then
  111. pNode._fastRequestView = nil
  112. end
  113. self:removeFromParent()
  114. end
  115. function doushisiRequestStartView:onEnter()
  116. doushisiRequestStartView.super.onEnter(self)
  117. local askInfo = app.room.roomInfo.memberList[self.m_initiateUserId]
  118. if askInfo then
  119. local userInfo = json.decode(askInfo.userInfo)
  120. self:setRequestNick({nickname = userInfo.nickname})
  121. end
  122. end
  123. function doushisiRequestStartView:onExit()
  124. if self.loadingBarTimer then
  125. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  126. self.loadingBarTimer = nil
  127. end
  128. end
  129. -- info{uid=1, nick="", headUrl="", status=1}
  130. function doushisiRequestStartView:createItem( info )
  131. local node = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstartItem.ui")
  132. node.headImg = node.Items.ImageView_touxiang
  133. node.nickName = node.Items.Text_mingzi
  134. node.statusImg = node.Items.ImageView
  135. node.updateImg = function(nd, status)
  136. if nd.statusImg then
  137. --1申请 2同意 3 拒绝 4初始状态
  138. if status == 4 then
  139. nd.statusImg:loadTexture("kszj_lab_dengdaizhong.png", 1)
  140. elseif status == 2 then
  141. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  142. elseif status == 3 then
  143. nd.statusImg:loadTexture("kszj_lab_jujue.png", 1)
  144. elseif status == 1 then --发起者
  145. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  146. end
  147. end
  148. end
  149. if info and type(info)=='table' then
  150. setPlayerHeadImage(info.uid, info.headUrl, node.headImg)
  151. node.nickName:setString(getSubStringNickname(info.nick) or "")
  152. node:updateImg(info.status)
  153. if app.room:isMyself(info.uid) and info.status~=4 then
  154. self:setBtnEnabled(false)
  155. end
  156. end
  157. return node
  158. end
  159. return doushisiRequestStartView