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.

381 lines
11 KiB

  1. -- 房间设置界面
  2. local MJOtherPlayerInfoView = MJFramework.MJImport("mj.luaScript.Views.Room.MJOtherPlayerInfoView")
  3. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  4. local MJRoomPlayerView = class("MJRoomPlayerView", cc.UIView)
  5. function MJRoomPlayerView:ctor()
  6. MJRoomPlayerView.super.ctor(self);
  7. end
  8. function MJRoomPlayerView:onEnter()
  9. MJRoomPlayerView.super.onEnter(self)
  10. self:loadUI()
  11. self:init()
  12. end
  13. function MJRoomPlayerView:loadUI()
  14. local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_player_view.ui");
  15. self.ui = ui;
  16. self:addChild(ui);
  17. end
  18. function MJRoomPlayerView:init()
  19. local names =
  20. {
  21. player = "Layout_player_%d", -- 头像绿圈根节点
  22. head = "ImageView_head_%d", -- 头像
  23. -- headBoarder = "ImageView_head_border_%d", --头像边
  24. name = "Text_Name_%d", -- 名字
  25. score = "Text_Score_%d", -- 总分数
  26. banker = "ImageView_banker_%d", -- 庄家
  27. readyState = "ImageView_ready_%d", -- 准备
  28. headInfo = "Layout_PlayerInfo_%d", --个人信息点击触发框
  29. offLine = "ImageView_offLine_%d", --离线标志
  30. --其他节点
  31. arrow = "ImageView_arrow_%d", -- 指示器
  32. tip = "ImageView_tip_%d", --提示操作图
  33. huxi = "Text_huxi_%d", --胡息
  34. qihu = "ImageView_qihu_%d", --弃胡
  35. }
  36. self.allNodes = {}
  37. self.headSize = {}
  38. for i = 1,4 do--LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do
  39. local nodes = {}
  40. --玩家根节点
  41. local namePlayer = string.format(names.player,i)
  42. local nodePlayer = self.ui.Items[namePlayer]
  43. -- nodePlayer:setVisible(false)
  44. nodes.player = nodePlayer
  45. --头像
  46. local nameHead = string.format(names.head,i)
  47. local nodeHead = self.ui.Items[nameHead]
  48. nodes.head = nodeHead
  49. nodeHead:setTouchEnabled(true)
  50. nodeHead:registerClick(function()
  51. self:onClickHead(i)
  52. end)
  53. -- local headBoarder = string.format(names.headBoarder,i)
  54. -- local nodeheadBoarder = self.ui.Items[headBoarder]
  55. -- nodes.headBoarder = nodeheadBoarder
  56. -- 需要记录头像的原始尺寸
  57. if not self.headSize.width then
  58. self.headSize.width = nodeHead:getContentSize().width
  59. self.headSize.height = nodeHead:getContentSize().height
  60. end
  61. --昵称
  62. local nickName = string.format(names.name,i)
  63. local nodeName = self.ui.Items[nickName]
  64. nodes.name = nodeName
  65. nodeName:setText("")
  66. --总分
  67. local nickScore = string.format(names.score,i)
  68. local nodeScore = self.ui.Items[nickScore]
  69. nodes.score = nodeScore
  70. --庄家
  71. local nameBanker = string.format(names.banker,i)
  72. local nodeBanker = self.ui.Items[nameBanker]
  73. nodeBanker:setVisible(false)
  74. nodes.banker = nodeBanker
  75. --准备
  76. local nameReadyState = string.format(names.readyState,i)
  77. local nodeReadyState = self.ui.Items[nameReadyState]
  78. nodes.readyState = nodeReadyState
  79. --头像信息
  80. local headInfo = string.format(names.headInfo,i)
  81. local nodeheadInfo = self.ui.Items[headInfo]
  82. nodes.headInfo = nodeheadInfo
  83. --离线信息
  84. local offLine = string.format(names.offLine,i)
  85. local nodeoffLine = self.ui.Items[offLine]
  86. nodes.offLine = nodeoffLine
  87. --指示器
  88. -- local nameArrow = string.format(names.arrow,i)
  89. -- local nodeArrow = self.ui.Items[nameArrow]
  90. -- nodes.arrow = nodeArrow
  91. --tip
  92. local nameTip = string.format(names.tip,i)
  93. local nodeTip = self.ui.Items[nameTip]
  94. nodes.tip = nodeTip
  95. --huxi
  96. local nameHuxi = string.format(names.huxi,i)
  97. local nodeHuxi = self.ui.Items[nameHuxi]
  98. nodes.huxi = nodeHuxi
  99. --弃胡
  100. local nameQiHu = string.format(names.qihu,i)
  101. local nodeQiHu = self.ui.Items[nameQiHu]
  102. nodeQiHu:setVisible(false)
  103. nodes.qihu = nodeQiHu
  104. self.allNodes[i] = nodes
  105. end
  106. self:initChatComponent()
  107. self.PropAniManager = import("luaScript.Tools.PropAniPlayer"):new(self.ui)
  108. --发送道具
  109. self:bindEvent(app.room,"showProp" , handler(self , self.showProp));
  110. self:bindEvent(app , MJDefine.MJEvent.ChangeChatEnable , handler(self , self.onChangeChatEnable))
  111. end
  112. function MJRoomPlayerView:initChatComponent()
  113. if self.chatComponentView and not tolua.isnull(self.chatComponentView) then
  114. return
  115. end
  116. local heads = {
  117. [1] = self.allNodes[1].head,
  118. [2] = self.allNodes[2].head,
  119. [3] = self.allNodes[3].head,
  120. [4] = self.allNodes[4].head,
  121. }
  122. self.chatComponentView = import("luaScript.Views.Room.RoomChatComponentView"):new(heads,MJDefine.MJChatTxt,MJDefine.MJFaceConfig)
  123. local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1
  124. local propEnable = tonumber(loadUserInfo("propEnable")) or 1
  125. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  126. self.chatComponentView:setPropEnabled(propEnable==1)
  127. self:addChild(self.chatComponentView)
  128. end
  129. function MJRoomPlayerView:onChangeChatEnable()
  130. if not self.chatComponentView or tolua.isnull(self.chatComponentView) then
  131. return
  132. end
  133. local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1
  134. local propEnable = tonumber(loadUserInfo("propEnable")) or 1
  135. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  136. self.chatComponentView:setPropEnabled(propEnable==1)
  137. end
  138. --显示某个玩家为庄家
  139. function MJRoomPlayerView:setBankerVisible(viewId,ani)
  140. for i = 1,4 do
  141. self.allNodes[i].banker:setVisible(false)
  142. end
  143. if not self.allNodes[viewId] then
  144. logE("not viewId "..viewId)
  145. return
  146. end
  147. self.allNodes[viewId].banker:setVisible(true)
  148. if ani then
  149. self.allNodes[viewId].banker:setScale(3.0)
  150. local seq = cc.Sequence:create(cc.ScaleTo:create(0.25,0.8),cc.ScaleTo:create(0.2,1.2),cc.ScaleTo:create(0.1,1.0))
  151. self.allNodes[viewId].banker:runAction(seq)
  152. -- local seq2 = cc.Sequence:create(cc.CallFunc:create(function ()
  153. -- self.allNodes[viewId].headLight:setVisible(true)
  154. -- end),cc.DelayTime:create(1.0),cc.CallFunc:create(function ()
  155. -- self.allNodes[viewId].headLight:setVisible(false)
  156. -- self.allNodes[viewId].headLightFlag:setVisible(true)
  157. -- end))
  158. -- self.allNodes[viewId].headLight:runAction(seq2)
  159. end
  160. end
  161. function MJRoomPlayerView:setQiHuVisible(viewId)
  162. if self.allNodes[viewId] then
  163. self.allNodes[viewId].qihu:setVisible(true)
  164. else
  165. logE("MJRoomPlayerView:showPlayerQiHu ->viewId is not"..viewId)
  166. end
  167. end
  168. --隐藏玩家
  169. function MJRoomPlayerView:setPlayerVisible(bVisible)
  170. for i = 1,4 do
  171. self.allNodes[i].player:setVisible(bVisible)
  172. end
  173. end
  174. --隐藏离线
  175. function MJRoomPlayerView:setOffLineVisible(bVisible)
  176. for i = 1,4 do --LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do
  177. self.allNodes[i].offLine:setVisible(false)
  178. end
  179. end
  180. --隐藏离线
  181. function MJRoomPlayerView:setPlayerOffLineVisible(bVisible,viewId)
  182. if not viewId or viewId > 4 or not self.allNodes[viewId] then
  183. return
  184. end
  185. self.allNodes[viewId].offLine:setVisible(bVisible)
  186. --头像变灰
  187. -- self.allNodes[viewId].head:setGreyEnabled(bVisible)
  188. -- self.allNodes[viewId].headBoarder:setGreyEnabled(bVisible)
  189. local Text_offtime = self.allNodes[viewId].offLine:getChildByName("Text_offline_time_"..viewId)
  190. if Text_offtime then
  191. local userId = app.room:getUserIdByViewId(viewId)
  192. local member = app.room.roomInfo.memberList[userId]
  193. local offtime = member and member.offlinetime or 0
  194. Text_offtime:setText(formatTimeToStr(offtime))
  195. Text_offtime:stopAllActions()
  196. Text_offtime:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function()
  197. offtime = offtime + 1
  198. Text_offtime:setText(formatTimeToStr(offtime))
  199. end))))
  200. end
  201. end
  202. --隐藏提示
  203. function MJRoomPlayerView:setOperatorTipVisible(bVisible)
  204. for i = 1,4 do
  205. self.allNodes[i].tip:setVisible(bVisible)
  206. end
  207. end
  208. function MJRoomPlayerView:setHeadTouchEnable(b)
  209. for i = 1,4 do
  210. self.allNodes[i].head:setTouchEnabled(b)
  211. end
  212. end
  213. --设置准备状态
  214. function MJRoomPlayerView:setReadyStatus(viewId,bVisible)
  215. if self.allNodes[viewId] then
  216. self.allNodes[viewId].readyState:setVisible(bVisible)
  217. else
  218. logE("MJRoomPlayerView:setReadyStatus ->viewId is not"..viewId)
  219. end
  220. end
  221. -- 更新玩家基本信息 : 昵称、头像
  222. -- index :是玩家展示出来的座位号
  223. function MJRoomPlayerView:updatePlayerInfo(index)
  224. logE("MJRoomView:updatePlayerInfo() index = ", index)
  225. local nodes = self.allNodes[index]
  226. local nUserId = app.room.seatShowList[index]
  227. local roomInfo = app.room.roomInfo
  228. local memberInfo = app.room.roomInfo.memberList[nUserId]
  229. if memberInfo then
  230. --[[if memberInfo.nPlayerFlag == LHQ_GAME_CONST.LHQ_GAME_CONST_ONLOOKER then
  231. return
  232. end--]]
  233. nodes.player:setVisible(true)
  234. local userInfo = json.decode(memberInfo.userInfo)
  235. if not userInfo then
  236. return
  237. end
  238. -- 玩家名字
  239. local nickname = userInfo.nickname
  240. nickname = getSubStringNickname(nickname)
  241. nodes.name:setText(tostring(nickname))
  242. nodes.score:setText(tostring(memberInfo.nTotalMoney))
  243. -- 玩家头像
  244. local nodeHead = nodes.head;
  245. --先设置默认头像
  246. local width = nodeHead:getContentSize().width
  247. setPlayerHeadImage(nUserId, userInfo.headimgurl, nodeHead)
  248. else
  249. nodes.player:setVisible(false)
  250. nodes.offLine:setVisible(bVisible)
  251. end
  252. end
  253. function MJRoomPlayerView:onClickHead(index)
  254. playBtnEffect()
  255. local nUserId = app.room.seatShowList[index]
  256. local memberInfo = app.room.roomInfo.memberList[nUserId]
  257. if memberInfo then
  258. local view = import("luaScript.Views.Room.RoomPlayerInfoViewNew"):new(nUserId, memberInfo.userInfo)
  259. view:setAnchorPoint(cc.p(0.5, 0.5))
  260. app:showWaitDialog(view, 0, true)
  261. end
  262. end
  263. function MJRoomPlayerView:getHead(index)
  264. local nodes = self.allNodes[index]
  265. return nodes.head
  266. end
  267. function MJRoomPlayerView:removePlayerInfoView()
  268. if self.playerInfoView then
  269. self.playerInfoView:removeFromParent()
  270. self.playerInfoView=nil
  271. end
  272. end
  273. function MJRoomPlayerView:showProp(data)
  274. local response = data.response
  275. logE("LHQRoomView:showProp response = "..table.tostring(response))
  276. --ui表现开始
  277. local uidStarId = response.uidStarId
  278. local uidEndId = response.uidEndId
  279. local propId = response.propId
  280. local isQunFa = response.isQunFa
  281. local beginViewId = app.room:getViewIdByUserId(uidStarId)
  282. local endViewId = app.room:getViewIdByUserId(uidEndId)
  283. if beginViewId==MJDefine.MyViewId then
  284. self:removePlayerInfoView()
  285. end
  286. if not self.allNodes[beginViewId] or not self.allNodes[endViewId]
  287. or not self.allNodes[endViewId].head or not self.allNodes[beginViewId].head then
  288. logE("场景还没初始化完成就收到道具消息果断return!")
  289. return
  290. end
  291. --播放动画
  292. if isQunFa == 1 then
  293. local onLineList = app.room.roomInfo.memberList
  294. for nUserId,v in pairs(onLineList) do
  295. local endViewId = app.room:getViewIdByUserId(nUserId)
  296. if endViewId ~= beginViewId then
  297. self.PropAniManager:playAnimation(self.allNodes[beginViewId].head,self.allNodes[endViewId].head,propId)
  298. end
  299. end
  300. else
  301. self.PropAniManager:playAnimation(self.allNodes[beginViewId].head,self.allNodes[endViewId].head,propId)
  302. end
  303. end
  304. return MJRoomPlayerView;