您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

180 行
5.3 KiB

  1. local PdkMessage = require("pk_luzhoupdk.luaScript.Protocol.luzhouPdkMessage")
  2. local PdkRequestStartView = class("PdkRequestStartView", cc.UIView)
  3. function PdkRequestStartView:ctor(initiateUserId)
  4. PdkRequestStartView.super.ctor(self)
  5. loadSpriteFrameFile("res/ui/zy_fangjian/liangsanren/liangsanren.plist")
  6. self.m_initiateUserId = initiateUserId
  7. self.listItems = {}
  8. self:loadUi()
  9. end
  10. function PdkRequestStartView:loadUi()
  11. self.ui = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstart.ui")
  12. self:addChild(self.ui)
  13. self:initUi()
  14. end
  15. function PdkRequestStartView:initUi( )
  16. -- 同意
  17. self.ui.Items.Button_1:registerClick(handler(self , self.onClickAgree))
  18. -- 拒绝
  19. self.ui.Items.Button_2:registerClick(handler(self , self.onClickRefuse))
  20. self:setBtnEnabled( not app.room:isMyself(self.m_initiateUserId))
  21. self.ui.Items.Text_3:setString("")
  22. end
  23. function PdkRequestStartView:setBtnEnabled( is )
  24. self.ui.Items.Button_1:setVisible( is )
  25. self.ui.Items.Button_2:setVisible( is )
  26. end
  27. -- info{uid=1, nick="", headUrl="", status=1}
  28. function PdkRequestStartView:showItems(data)
  29. self.listItems = {}
  30. self.ui.Items.Layout_3:removeAllChildren()
  31. if data == nil or data.pList == nil then return "" end
  32. local memberList = {}
  33. for _,v in pairs(data.pList) do
  34. local info = app.room.roomInfo.memberList[v.nUserId]
  35. if info then
  36. local t = {}
  37. t.userInfo = info.userInfo
  38. t.nStatus = v.nStatus
  39. t.nUserId = v.nUserId
  40. memberList[v.nUserId] = t
  41. end
  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 PdkRequestStartView: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 PdkRequestStartView:setRequestNick( info )
  73. self.ui.Items.Text:setString('['.. (getSubStringNickname(info.nickname) or "") ..']')
  74. end
  75. -- 时间
  76. function PdkRequestStartView:updateBar( time, totalTime )
  77. if self.loadingBarTimer == nil then
  78. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  79. time = time - 1
  80. if time < 0 then
  81. self:removeSelf()
  82. end
  83. if self.ui.Items.Text_3 then
  84. self.ui.Items.Text_3:setString(string.format("%d", time))
  85. end
  86. end,1.0,false)
  87. else
  88. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  89. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  90. time = time - 1
  91. if time < 0 then
  92. self:removeSelf()
  93. end
  94. if self.ui.Items.Text_3 then
  95. self.ui.Items.Text_3:setString(string.format("%d", time))
  96. end
  97. end,1.0,false)
  98. end
  99. end
  100. -- 同意
  101. function PdkRequestStartView:onClickAgree(sender)
  102. playBtnEffect()
  103. local request = PdkMessage.FastStartRequest:new()
  104. request.result = 2
  105. self.ui:sendMsg(app.room, "requestFastStartGame", request)
  106. end
  107. -- 拒绝
  108. function PdkRequestStartView:onClickRefuse(sender)
  109. playBtnEffect()
  110. local request = PdkMessage.FastStartRequest:new()
  111. request.result = 3
  112. self.ui:sendMsg(app.room, "requestFastStartGame", request)
  113. end
  114. function PdkRequestStartView:removeSelf()
  115. local pNode = self:getParent()
  116. if pNode and pNode.fastStartRequestView then
  117. pNode.fastStartRequestView = nil
  118. end
  119. self:removeFromParent()
  120. end
  121. function PdkRequestStartView:onEnter()
  122. PdkRequestStartView.super.onEnter(self)
  123. local askInfo = app.room.roomInfo.memberList[self.m_initiateUserId]
  124. if askInfo then
  125. local userInfo = json.decode(askInfo.userInfo)
  126. self:setRequestNick({nickname = userInfo.nickname})
  127. end
  128. end
  129. function PdkRequestStartView:onExit()
  130. if self.loadingBarTimer then
  131. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  132. self.loadingBarTimer = nil
  133. end
  134. end
  135. -- info{uid=1, nick="", headUrl="", status=1}
  136. function PdkRequestStartView:createItem( info )
  137. local node = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstartItem.ui")
  138. node.headImg = node.Items.ImageView_touxiang
  139. node.nickName = node.Items.Text_mingzi
  140. node.statusImg = node.Items.ImageView
  141. node.updateImg = function(nd, status)
  142. if nd.statusImg then
  143. --1申请 2同意 3 拒绝 4初始状态
  144. if status == 4 then
  145. nd.statusImg:loadTexture("kszj_lab_dengdaizhong.png", 1)
  146. elseif status == 2 then
  147. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  148. elseif status == 3 then
  149. nd.statusImg:loadTexture("kszj_lab_jujue.png", 1)
  150. elseif status == 1 then --发起者
  151. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  152. end
  153. end
  154. end
  155. if info and type(info)=='table' then
  156. setPlayerHeadImage(info.uid, info.headUrl, node.headImg)
  157. node.nickName:setString(getSubStringNickname(info.nick) or "")
  158. node:updateImg(info.status)
  159. if app.room:isMyself(info.uid) and info.status~=4 then
  160. self:setBtnEnabled(false)
  161. end
  162. end
  163. return node
  164. end
  165. return PdkRequestStartView