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.

305 lines
9.1 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJRoomPlayerView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomPlayerView")
  3. local huamajiangRoomPlayerView = class("huamajiangRoomPlayerView", MJRoomPlayerView)
  4. function huamajiangRoomPlayerView:ctor()
  5. huamajiangRoomPlayerView.super.ctor(self);
  6. end
  7. function huamajiangRoomPlayerView:loadUI()
  8. local ui = loadUI("mj_huamajiang/res/ui_fangjian/mj_huamajiang_playerView.ui");
  9. self.ui = ui;
  10. self:addChild(ui);
  11. end
  12. function huamajiangRoomPlayerView:onEnter()
  13. self:loadUI()
  14. self:init()
  15. self:resetTuoGuanShow()
  16. end
  17. -- 托管显示
  18. function huamajiangRoomPlayerView:resetTuoGuanShow()
  19. for i=1,4 do
  20. self.ui.Items["ImageView_tuoguan_"..i]:setVisible(false)
  21. end
  22. end
  23. function huamajiangRoomPlayerView:showTuoGuanByViewId(viewId,bVisible)
  24. self.ui.Items["ImageView_tuoguan_"..viewId]:setVisible(bVisible)
  25. end
  26. function huamajiangRoomPlayerView:init()
  27. local names =
  28. {
  29. player = "Layout_player_%d", -- 头像绿圈根节点
  30. head = "ImageView_head_%d", -- 头像
  31. -- headBoarder = "ImageView_head_border_%d", --头像边
  32. name = "Text_Name_%d", -- 名字
  33. score = "Text_Score_%d", -- 总分数
  34. banker = "ImageView_banker_%d", -- 庄家
  35. readyState = "ImageView_ready_%d", -- 准备
  36. headInfo = "Layout_PlayerInfo_%d", --个人信息点击触发框
  37. offLine = "ImageView_offLine_%d", --离线标志
  38. --其他节点
  39. arrow = "ImageView_arrow_%d", -- 指示器
  40. tip = "ImageView_tip_%d", --提示操作图
  41. huxi = "Text_huxi_%d", --胡息
  42. qihu = "ImageView_qihu_%d", --弃胡
  43. bao = "ImageView_bao_%d", --爆
  44. piao = "ImageView_piao_%d", --飘
  45. baoAnim = "Layout_baoAnim_%d", --爆牌特效
  46. hu = "ImageView_hu_%d", --胡牌
  47. viewOrder = "ImageView_ViewId_%d", -- 座位
  48. }
  49. self.allNodes = {}
  50. self.headSize = {}
  51. for i = 1,4 do--LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do
  52. local nodes = {}
  53. --玩家根节点
  54. local namePlayer = string.format(names.player,i)
  55. local nodePlayer = self.ui.Items[namePlayer]
  56. -- nodePlayer:setVisible(false)
  57. nodes.player = nodePlayer
  58. --头像
  59. local nameHead = string.format(names.head,i)
  60. local nodeHead = self.ui.Items[nameHead]
  61. nodes.head = nodeHead
  62. nodeHead:setTouchEnabled(true)
  63. nodeHead:registerClick(function()
  64. self:onClickHead(i)
  65. end)
  66. -- 需要记录头像的原始尺寸
  67. if not self.headSize.width then
  68. self.headSize.width = nodeHead:getContentSize().width
  69. self.headSize.height = nodeHead:getContentSize().height
  70. end
  71. --昵称
  72. local nickName = string.format(names.name,i)
  73. local nodeName = self.ui.Items[nickName]
  74. nodes.name = nodeName
  75. nodeName:setText("")
  76. --总分
  77. local nickScore = string.format(names.score,i)
  78. local nodeScore = self.ui.Items[nickScore]
  79. nodes.score = nodeScore
  80. --庄家
  81. local nameBanker = string.format(names.banker,i)
  82. local nodeBanker = self.ui.Items[nameBanker]
  83. nodeBanker:setVisible(false)
  84. nodes.banker = nodeBanker
  85. --准备
  86. local nameReadyState = string.format(names.readyState,i)
  87. local nodeReadyState = self.ui.Items[nameReadyState]
  88. nodes.readyState = nodeReadyState
  89. --头像信息
  90. local headInfo = string.format(names.headInfo,i)
  91. local nodeheadInfo = self.ui.Items[headInfo]
  92. nodes.headInfo = nodeheadInfo
  93. --离线信息
  94. local offLine = string.format(names.offLine,i)
  95. local nodeoffLine = self.ui.Items[offLine]
  96. nodes.offLine = nodeoffLine
  97. --指示器
  98. -- local nameArrow = string.format(names.arrow,i)
  99. -- local nodeArrow = self.ui.Items[nameArrow]
  100. -- nodes.arrow = nodeArrow
  101. --tip
  102. local nameTip = string.format(names.tip,i)
  103. local nodeTip = self.ui.Items[nameTip]
  104. nodes.tip = nodeTip
  105. --huxi
  106. local nameHuxi = string.format(names.huxi,i)
  107. local nodeHuxi = self.ui.Items[nameHuxi]
  108. nodes.huxi = nodeHuxi
  109. --弃胡
  110. local nameQiHu = string.format(names.qihu,i)
  111. local nodeQiHu = self.ui.Items[nameQiHu]
  112. nodeQiHu:setVisible(false)
  113. nodes.qihu = nodeQiHu
  114. --飘
  115. local namePiao = string.format(names.piao,i)
  116. local nodePiao = self.ui.Items[namePiao]
  117. nodePiao:setVisible(false)
  118. nodes.piao = nodePiao
  119. --爆
  120. local nameBao = string.format(names.bao,i)
  121. local nodeBao = self.ui.Items[nameBao]
  122. nodeBao:setVisible(false)
  123. nodes.bao = nodeBao
  124. --胡
  125. local nameHu = string.format(names.hu,i)
  126. local nodeHu = self.ui.Items[nameHu]
  127. nodeHu:setVisible(false)
  128. nodes.hu = nodeHu
  129. --座位
  130. local nameViewOrder = string.format(names.viewOrder, i);
  131. local nodeViewOrder = self.ui.Items[nameViewOrder]
  132. nodes.viewOrder = nodeViewOrder
  133. --报牌动画
  134. local nameBaoAnim = string.format(names.baoAnim, i);
  135. local nodeBaoAnim = self.ui.Items[nameBaoAnim];
  136. nodeBaoAnim:setVisible(false);
  137. nodeBaoAnim:setScale(0.9);
  138. nodes.baoAnim = nodeBaoAnim;
  139. self.allNodes[i] = nodes
  140. end
  141. self:initChatComponent()
  142. self.PropAniManager = import("luaScript.Tools.PropAniPlayer"):new(self.ui)
  143. --发送道具
  144. self:bindEvent(app.room,"showProp" , handler(self , self.showProp));
  145. self:bindEvent(app , MJDefine.MJEvent.ChangeChatEnable , handler(self , self.onChangeChatEnable))
  146. end
  147. function huamajiangRoomPlayerView:initChatComponent()
  148. huamajiangRoomPlayerView.super.initChatComponent(self);
  149. local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1
  150. local propEnable = tonumber(loadUserInfo("propEnable")) or 1
  151. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  152. self.chatComponentView:setPropEnabled(propEnable==1)
  153. end
  154. function huamajiangRoomPlayerView:onChangeChatEnable()
  155. if not self.chatComponentView or tolua.isnull(self.chatComponentView) then
  156. return
  157. end
  158. local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1
  159. local propEnable = tonumber(loadUserInfo("propEnable")) or 1
  160. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  161. self.chatComponentView:setPropEnabled(propEnable==1)
  162. end
  163. function huamajiangRoomPlayerView:updatePlayerInfo( index )
  164. huamajiangRoomPlayerView.super.updatePlayerInfo(self, index);
  165. local nodes = self.allNodes[index];
  166. local nUserId = app.room.seatShowList[index];
  167. local roomInfo = app.room.roomInfo;
  168. local memberInfo = app.room.roomInfo.memberList[nUserId];
  169. if not memberInfo then
  170. return ;
  171. end
  172. local seat = memberInfo.nSeatId;
  173. if nodes.viewOrder then
  174. nodes.viewOrder:loadTexture(string.format("mj_huamajiang/res/zy_fangjian/player/huamajiang_seat_%d.png", (seat + 1)), 0);
  175. end
  176. end
  177. function huamajiangRoomPlayerView:playBaoAnim(view)
  178. if self.allNodes[view] and self.allNodes[view].baoAnim then
  179. self.allNodes[view].bao:setVisible(true);
  180. self.allNodes[view].baoAnim:setVisible(true)
  181. -- 加载第一张图片
  182. local nodeImage = cc.ImageView:createNode()
  183. nodeImage:loadTexture(string.format("mj_huamajiang/res/zy_fangjian/anim/bao/huamajiang_bao_%d.png",1))
  184. self.allNodes[view].baoAnim:addChild(nodeImage)
  185. local baoSize = self.allNodes[view].baoAnim:getContentSize()
  186. nodeImage:setPosition(cc.p(baoSize.width/2-1,baoSize.height/2-2))
  187. -- 循环修改图片
  188. local everyFrame = 0.1
  189. local indexFace = 0
  190. local indexMax = 7
  191. local action1 = cc.Sequence:create(cc.DelayTime:create(everyFrame),cc.CallFunc:create(function ()
  192. indexFace = indexFace + 1
  193. if 0 < indexFace and indexFace <= indexMax then
  194. else
  195. indexFace = 1
  196. end
  197. local name = string.format("mj_huamajiang/res/zy_fangjian/anim/bao/huamajiang_bao_%d.png",indexFace)
  198. if not tolua.isnull(nodeImage) then
  199. nodeImage:loadTexture(name, 0)
  200. end
  201. end))
  202. local action2 = cc.Repeat:create(action1, indexMax)
  203. nodeImage:stopAllActions()
  204. nodeImage:runAction(cc.RepeatForever:create(action2));
  205. nodeImage:setVisible(true)
  206. end
  207. end
  208. function huamajiangRoomPlayerView:clearBao()
  209. for i=1,4 do
  210. if self.allNodes[i] and self.allNodes[i].bao then
  211. self.allNodes[i].bao:setVisible(false)
  212. self.allNodes[i].bao:removeAllChildren()
  213. end
  214. if self.allNodes[i] and self.allNodes[i].baoAnim then
  215. self.allNodes[i].baoAnim:setVisible(false)
  216. self.allNodes[i].baoAnim:removeAllChildren()
  217. end
  218. end
  219. end
  220. -- 显示飘标志
  221. function huamajiangRoomPlayerView:showPiao(viewId,bVisible)
  222. if self.allNodes[viewId] and self.allNodes[viewId].piao then
  223. self.allNodes[viewId].piao:setVisible(bVisible)
  224. else
  225. logE("huamajiangRoomPlayerView:showPiao ->viewId is not exit"..viewId)
  226. end
  227. end
  228. -- 清理所有飘标志
  229. function huamajiangRoomPlayerView:clearAllPiao()
  230. for i=1,4 do
  231. if self.allNodes[i] and self.allNodes[i].piao then
  232. self.allNodes[i].piao:setVisible(false)
  233. end
  234. end
  235. end
  236. function huamajiangRoomPlayerView:showHu( viewId, bVisible )
  237. if self.allNodes[viewId] and self.allNodes[viewId].hu then
  238. self.allNodes[viewId].hu:setVisible(bVisible);
  239. end
  240. if bVisible and self.allNodes[viewId] and self.allNodes[viewId].bao then
  241. self.allNodes[viewId].bao:setVisible(false);
  242. end
  243. end
  244. function huamajiangRoomPlayerView:clearHu( )
  245. for i=1,4 do
  246. if self.allNodes[i] and self.allNodes[i].hu then
  247. self.allNodes[i].hu:setVisible(false)
  248. end
  249. end
  250. end
  251. function huamajiangRoomPlayerView:refreshPlayerScore (scoreInfo)
  252. for k, v in ipairs(scoreInfo) do
  253. if self.allNodes[v.viewId] and self.allNodes[v.viewId].score then
  254. self.allNodes[v.viewId].score:setString(v.totalScore);
  255. end
  256. end
  257. end
  258. return huamajiangRoomPlayerView