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.

172 lines
5.2 KiB

  1. local PdkMessage = require("pk_hejiangpdk.luaScript.Protocol.hejiangPdkMessage")
  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. local t = {}
  36. t.userInfo = info.userInfo
  37. t.nStatus = v.nStatus
  38. t.nUserId = v.nUserId
  39. memberList[v.nUserId] = t
  40. end
  41. local tmp = {}
  42. for uid,v in pairs(memberList) do
  43. if v and v.userInfo then
  44. local info = json.decode(v.userInfo)
  45. table.insert(tmp, {uid=tonumber(uid), nick=info.nickname, headUrl=info.headimgurl, status=v.nStatus})
  46. end
  47. end
  48. if #tmp>=2 then table.sort(tmp,function(a, b) return a.uid<b.uid end) end
  49. for i,v in ipairs(tmp) do
  50. local node = self:createItem(v)
  51. self.listItems[v.uid] = node
  52. self.ui.Items.Layout_3:addChild(node)
  53. end
  54. self:updateBar(data.timeOut, 60)
  55. end
  56. function PdkRequestStartView:updateView( data )
  57. local list = data.pList
  58. for _,v in pairs(list) do
  59. local node = self.listItems[v.nUserId]
  60. if node then
  61. node:updateImg(v.nStatus)
  62. if app.room:isMyself(v.nUserId) and v.nStatus~=4 then
  63. self:setBtnEnabled(false)
  64. end
  65. end
  66. end
  67. self:updateBar(data.timeOut, 60)
  68. end
  69. -- 设置发起者昵称
  70. function PdkRequestStartView:setRequestNick( info )
  71. self.ui.Items.Text:setString('['.. (getSubStringNickname(info.nickname) or "") ..']')
  72. end
  73. -- 时间
  74. function PdkRequestStartView:updateBar( time, totalTime )
  75. if self.loadingBarTimer == nil then
  76. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  77. time = time - 1
  78. if self.ui.Items.Text_3 then
  79. self.ui.Items.Text_3:setString(string.format("%d", time))
  80. end
  81. end,1.0,false)
  82. else
  83. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  84. self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  85. time = time - 1
  86. if self.ui.Items.Text_3 then
  87. self.ui.Items.Text_3:setString(string.format("%d", time))
  88. end
  89. end,1.0,false)
  90. end
  91. end
  92. -- 同意
  93. function PdkRequestStartView:onClickAgree(sender)
  94. playBtnEffect()
  95. local request = PdkMessage.FastStartRequest:new()
  96. request.result = 2
  97. self.ui:sendMsg(app.room, "requestFastStartGame", request)
  98. end
  99. -- 拒绝
  100. function PdkRequestStartView:onClickRefuse(sender)
  101. playBtnEffect()
  102. local request = PdkMessage.FastStartRequest:new()
  103. request.result = 3
  104. self.ui:sendMsg(app.room, "requestFastStartGame", request)
  105. end
  106. function PdkRequestStartView:removeSelf()
  107. local pNode = self:getParent()
  108. if pNode and pNode.fastStartRequestView then
  109. pNode.fastStartRequestView = nil
  110. end
  111. self:removeFromParent()
  112. end
  113. function PdkRequestStartView:onEnter()
  114. PdkRequestStartView.super.onEnter(self)
  115. local askInfo = app.room.roomInfo.memberList[self.m_initiateUserId]
  116. if askInfo then
  117. local userInfo = json.decode(askInfo.userInfo)
  118. self:setRequestNick({nickname = userInfo.nickname})
  119. end
  120. end
  121. function PdkRequestStartView:onExit()
  122. if self.loadingBarTimer then
  123. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer)
  124. self.loadingBarTimer = nil
  125. end
  126. end
  127. -- info{uid=1, nick="", headUrl="", status=1}
  128. function PdkRequestStartView:createItem( info )
  129. local node = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstartItem.ui")
  130. node.headImg = node.Items.ImageView_touxiang
  131. node.nickName = node.Items.Text_mingzi
  132. node.statusImg = node.Items.ImageView
  133. node.updateImg = function(nd, status)
  134. if nd.statusImg then
  135. --1申请 2同意 3 拒绝 4初始状态
  136. if status == 4 then
  137. nd.statusImg:loadTexture("kszj_lab_dengdaizhong.png", 1)
  138. elseif status == 2 then
  139. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  140. elseif status == 3 then
  141. nd.statusImg:loadTexture("kszj_lab_jujue.png", 1)
  142. elseif status == 1 then --发起者
  143. nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1)
  144. end
  145. end
  146. end
  147. if info and type(info)=='table' then
  148. setPlayerHeadImage(info.uid, info.headUrl, node.headImg)
  149. node.nickName:setString(getSubStringNickname(info.nick) or "")
  150. node:updateImg(info.status)
  151. if app.room:isMyself(info.uid) and info.status~=4 then
  152. self:setBtnEnabled(false)
  153. end
  154. end
  155. return node
  156. end
  157. return PdkRequestStartView