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.

382 line
11 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJRoomPlayerView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomPlayerView")
  3. local ncmajRoomPlayerView = class("ncmajRoomPlayerView", MJRoomPlayerView)
  4. function ncmajRoomPlayerView:ctor()
  5. ncmajRoomPlayerView.super.ctor(self);
  6. end
  7. function ncmajRoomPlayerView:loadUI()
  8. local ui = loadUI("mj_ncmaj/res/ui_fangjian/mj_ncmaj_playerView.ui");
  9. self.ui = ui;
  10. self:addChild(ui);
  11. end
  12. function ncmajRoomPlayerView:onEnter()
  13. self:loadUI()
  14. self:init()
  15. self:resetTuoGuanShow()
  16. end
  17. -- 托管显示
  18. function ncmajRoomPlayerView:resetTuoGuanShow()
  19. for i=1,4 do
  20. self.ui.Items["ImageView_tuoguan_"..i]:setVisible(false)
  21. end
  22. end
  23. function ncmajRoomPlayerView:showTuoGuanByViewId(viewId,bVisible)
  24. if viewId and self.ui.Items["ImageView_tuoguan_"..viewId] then
  25. self.ui.Items["ImageView_tuoguan_"..viewId]:setVisible(bVisible)
  26. end
  27. end
  28. function ncmajRoomPlayerView:init()
  29. local names =
  30. {
  31. player = "Layout_player_%d", -- 头像绿圈根节点
  32. head = "ImageView_head_%d", -- 头像
  33. -- headBoarder = "ImageView_head_border_%d", --头像边
  34. name = "Text_Name_%d", -- 名字
  35. score = "Text_Score_%d", -- 总分数
  36. banker = "ImageView_banker_%d", -- 庄家
  37. readyState = "ImageView_ready_%d", -- 准备
  38. headInfo = "Layout_PlayerInfo_%d", --个人信息点击触发框
  39. offLine = "ImageView_offLine_%d", --离线标志
  40. --其他节点
  41. arrow = "ImageView_arrow_%d", -- 指示器
  42. tip = "ImageView_tip_%d", --提示操作图
  43. huxi = "Text_huxi_%d", --胡息
  44. qihu = "ImageView_qihu_%d", --弃胡
  45. bao = "ImageView_bao_%d", --爆
  46. piao = "ImageView_piao_%d", --飘
  47. --bozimo = "ImageView_bozimo_%d", --博自摸
  48. que = "ImageView_que_%d", --缺牌
  49. bai = "ImageView_bai_%d", --摆标志
  50. }
  51. self.allNodes = {}
  52. self.headSize = {}
  53. for i = 1,4 do--LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do
  54. local nodes = {}
  55. --玩家根节点
  56. local namePlayer = string.format(names.player,i)
  57. local nodePlayer = self.ui.Items[namePlayer]
  58. -- nodePlayer:setVisible(false)
  59. nodes.player = nodePlayer
  60. --头像
  61. local nameHead = string.format(names.head,i)
  62. local nodeHead = self.ui.Items[nameHead]
  63. nodes.head = nodeHead
  64. nodeHead:setTouchEnabled(true)
  65. nodeHead:registerClick(function()
  66. self:onClickHead(i)
  67. end)
  68. -- 需要记录头像的原始尺寸
  69. if not self.headSize.width then
  70. self.headSize.width = nodeHead:getContentSize().width
  71. self.headSize.height = nodeHead:getContentSize().height
  72. end
  73. --昵称
  74. local nickName = string.format(names.name,i)
  75. local nodeName = self.ui.Items[nickName]
  76. nodes.name = nodeName
  77. nodeName:setText("")
  78. --总分
  79. local nickScore = string.format(names.score,i)
  80. local nodeScore = self.ui.Items[nickScore]
  81. nodes.score = nodeScore
  82. --庄家
  83. local nameBanker = string.format(names.banker,i)
  84. local nodeBanker = self.ui.Items[nameBanker]
  85. nodeBanker:setVisible(false)
  86. nodes.banker = nodeBanker
  87. --准备
  88. local nameReadyState = string.format(names.readyState,i)
  89. local nodeReadyState = self.ui.Items[nameReadyState]
  90. nodes.readyState = nodeReadyState
  91. --头像信息
  92. local headInfo = string.format(names.headInfo,i)
  93. local nodeheadInfo = self.ui.Items[headInfo]
  94. nodes.headInfo = nodeheadInfo
  95. --离线信息
  96. local offLine = string.format(names.offLine,i)
  97. local nodeoffLine = self.ui.Items[offLine]
  98. nodes.offLine = nodeoffLine
  99. --指示器
  100. -- local nameArrow = string.format(names.arrow,i)
  101. -- local nodeArrow = self.ui.Items[nameArrow]
  102. -- nodes.arrow = nodeArrow
  103. --tip
  104. local nameTip = string.format(names.tip,i)
  105. local nodeTip = self.ui.Items[nameTip]
  106. nodes.tip = nodeTip
  107. --huxi
  108. local nameHuxi = string.format(names.huxi,i)
  109. local nodeHuxi = self.ui.Items[nameHuxi]
  110. nodes.huxi = nodeHuxi
  111. --弃胡
  112. local nameQiHu = string.format(names.qihu,i)
  113. local nodeQiHu = self.ui.Items[nameQiHu]
  114. nodeQiHu:setVisible(false)
  115. nodes.qihu = nodeQiHu
  116. local nameQue = string.format(names.que,i)
  117. local nodeQue = self.ui.Items[nameQue]
  118. nodeQue:setVisible(false)
  119. nodes.que = nodeQue
  120. --飘
  121. local namePiao = string.format(names.piao,i)
  122. local nodePiao = self.ui.Items[namePiao]
  123. nodePiao:setVisible(false)
  124. nodes.piao = nodePiao
  125. --爆
  126. local nameBao = string.format(names.bao,i)
  127. local nodeBao = self.ui.Items[nameBao]
  128. nodeBao:setVisible(false)
  129. nodes.bao = nodeBao
  130. local nameBai = string.format(names.bai,i)
  131. local nodeBai = self.ui.Items[nameBai]
  132. nodeBai:setVisible(false)
  133. nodes.bai = nodeBai
  134. --[[--博自摸
  135. local nameBoZiMo = string.format(names.bozimo,i)
  136. local nodeBoZiMo = self.ui.Items[nameBoZiMo]
  137. nodeBoZiMo:setVisible(false)
  138. nodes.bozimo = nodeBoZiMo--]]
  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. -- 更新玩家基本信息 : 昵称、头像
  148. -- index :是玩家展示出来的座位号
  149. function ncmajRoomPlayerView:updatePlayerInfo(index)
  150. logE("ncmajRoomPlayerView:updatePlayerInfo() index = ", index)
  151. local nodes = self.allNodes[index]
  152. local nUserId = app.room.seatShowList[index]
  153. local roomInfo = app.room.roomInfo
  154. local memberInfo = app.room.roomInfo.memberList[nUserId]
  155. if roomInfo.isEapCreate == 1 then
  156. local playerInfo = G_EapSdkMgr:getTableUserBaseInfo(nUserId)
  157. if playerInfo and memberInfo then
  158. logD("获取电竞Sdk的用户信息并赋值", table.tostring(playerInfo))
  159. local nPID = playerInfo.nPID --平台账号 id
  160. local strNickname = playerInfo.strNickname --平台昵称
  161. local strAvatar = playerInfo.strAvatar --头像url
  162. local userInfo = memberInfo.userInfo
  163. userInfo.headimgurl = strAvatar
  164. userInfo.nickname = strNickname
  165. end
  166. end
  167. if memberInfo then
  168. --[[if memberInfo.nPlayerFlag == LHQ_GAME_CONST.LHQ_GAME_CONST_ONLOOKER then
  169. return
  170. end--]]
  171. nodes.player:setVisible(true)
  172. local userInfo = json.decode(memberInfo.userInfo)
  173. if not userInfo then
  174. return
  175. end
  176. -- 玩家名字
  177. local nickname = userInfo.nickname
  178. nickname = getSubStringNickname(nickname)
  179. nodes.name:setText(tostring(nickname))
  180. nodes.score:setText(tostring(memberInfo.nTotalMoney))
  181. -- 玩家头像
  182. local nodeHead = nodes.head;
  183. --先设置默认头像
  184. local width = nodeHead:getContentSize().width
  185. setPlayerHeadImage(nUserId, userInfo.headimgurl, nodeHead)
  186. else
  187. nodes.player:setVisible(false)
  188. nodes.offLine:setVisible(bVisible)
  189. end
  190. end
  191. function ncmajRoomPlayerView:initChatComponent()
  192. ncmajRoomPlayerView.super.initChatComponent(self);
  193. local voiceEnable = tonumber(loadUserInfo("ncmajPingBiYuYinKG")) or 1
  194. local propEnable = tonumber(loadUserInfo("ncmajHuDongBiaoQingKG")) or 1
  195. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  196. self.chatComponentView:setPropEnabled(propEnable==1)
  197. end
  198. function ncmajRoomPlayerView:onChangeChatEnable()
  199. if not self.chatComponentView or tolua.isnull(self.chatComponentView) then
  200. return
  201. end
  202. local voiceEnable = tonumber(loadUserInfo("ncmajPingBiYuYinKG")) or 1
  203. local propEnable = tonumber(loadUserInfo("ncmajHuDongBiaoQingKG")) or 1
  204. self.chatComponentView:setVoiceEnabled(voiceEnable==1)
  205. self.chatComponentView:setPropEnabled(propEnable==1)
  206. end
  207. function ncmajRoomPlayerView:playBaoAnim(view)
  208. if self.allNodes[view] and self.allNodes[view].bao then
  209. self.allNodes[view].bao:setVisible(true)
  210. --自贡不播爆动画了
  211. --[[-- 加载第一张图片
  212. local nodeImage = cc.ImageView:createNode()
  213. nodeImage:loadTexture(string.format("luzhou_bao_%d",1))
  214. self.allNodes[view].bao:addChild(nodeImage)
  215. local baoSize = self.allNodes[view].bao:getContentSize()
  216. nodeImage:setPosition(cc.p(baoSize.width/2-1,baoSize.height/2-2))
  217. -- 循环修改图片
  218. local everyFrame = 0.1
  219. local indexFace = 0
  220. local indexMax = 7
  221. local action1 = cc.Sequence:create(cc.DelayTime:create(everyFrame),cc.CallFunc:create(function ()
  222. indexFace = indexFace + 1
  223. if 0 < indexFace and indexFace <= indexMax then
  224. else
  225. indexFace = 1
  226. end
  227. local name = string.format("luzhou_bao_%d.png",indexFace)
  228. if not tolua.isnull(nodeImage) then
  229. nodeImage:loadTexture(name, cc.TextureResType.plistType)
  230. end
  231. end))
  232. local action2 = cc.Repeat:create(action1, indexMax)
  233. nodeImage:stopAllActions()
  234. nodeImage:runAction(cc.RepeatForever:create(action2));
  235. nodeImage:setVisible(true)--]]
  236. end
  237. end
  238. function ncmajRoomPlayerView:clearBao()
  239. for i=1,4 do
  240. if self.allNodes[i] and self.allNodes[i].bao then
  241. self.allNodes[i].bao:setVisible(false)
  242. self.allNodes[i].bao:removeAllChildren()
  243. end
  244. end
  245. end
  246. -- 显示飘标志
  247. function ncmajRoomPlayerView:showPiao(viewId,piaoState)
  248. local bVisible = piaoState > 0
  249. if self.allNodes[viewId] and self.allNodes[viewId].piao then
  250. if piaoState > 0 then
  251. local fileStr = string.format("mj_ncmaj/res/zy_fangjian/ncmajadd/ncmaj_room_spr_piao%d.png",piaoState)
  252. self.allNodes[viewId].piao:loadTexture(fileStr,0)
  253. end
  254. self.allNodes[viewId].piao:setVisible(bVisible)
  255. else
  256. logE("ncmajRoomPlayerView:showPiao ->viewId is not exit"..viewId)
  257. end
  258. end
  259. -- 清理所有飘标志
  260. function ncmajRoomPlayerView:clearAllPiao()
  261. for i=1,4 do
  262. if self.allNodes[i] and self.allNodes[i].piao then
  263. self.allNodes[i].piao:setVisible(false)
  264. end
  265. end
  266. end
  267. -- 显示博自摸
  268. function ncmajRoomPlayerView:showBoZiMo(viewId,bVisible)
  269. if self.allNodes[viewId] and self.allNodes[viewId].bozimo then
  270. self.allNodes[viewId].bozimo:setVisible(bVisible)
  271. else
  272. logE("ncmajRoomPlayerView:showBoZiMo ->viewId is not exit"..viewId)
  273. end
  274. end
  275. -- 清理所有博自摸
  276. function ncmajRoomPlayerView:clearAllBoZiMo()
  277. for i=1,4 do
  278. if self.allNodes[i] and self.allNodes[i].bozimo then
  279. self.allNodes[i].bozimo:setVisible(false)
  280. end
  281. end
  282. end
  283. --显示定缺
  284. function ncmajRoomPlayerView:showQue(tp,viewId,bVisible)
  285. if self.allNodes[viewId] and self.allNodes[viewId].que then
  286. self.allNodes[viewId].que:setVisible(bVisible)
  287. if tp == 0 then
  288. self.allNodes[viewId].que:loadTexture("mj_ncmaj/res/zy_fangjian/ncmjadd/ncmaj_btn_wan.png", 0)
  289. elseif tp == 1 then
  290. self.allNodes[viewId].que:loadTexture("mj_ncmaj/res/zy_fangjian/ncmjadd/ncmaj_btn_tong.png", 0)
  291. elseif tp == 2 then
  292. self.allNodes[viewId].que:loadTexture("mj_ncmaj/res/zy_fangjian/ncmjadd/ncmaj_btn_tiao.png", 0)
  293. end
  294. else
  295. logE("ncmajRoomPlayerView:showQue ->viewId is not exit"..viewId)
  296. end
  297. end
  298. -- 清理所有定缺
  299. function ncmajRoomPlayerView:clearAllQue()
  300. for i=1,4 do
  301. if self.allNodes[i] and self.allNodes[i].que then
  302. self.allNodes[i].que:setVisible(false)
  303. end
  304. end
  305. end
  306. -- 显示摆标志
  307. function ncmajRoomPlayerView:showBai(viewId,bVisible)
  308. if self.allNodes[viewId] and self.allNodes[viewId].bai then
  309. self.allNodes[viewId].bai:setVisible(bVisible)
  310. else
  311. logE("ncmajRoomPlayerView:showBai ->viewId is not exit"..viewId)
  312. end
  313. end
  314. -- 清理所有摆标志
  315. function ncmajRoomPlayerView:clearAllBai()
  316. for i=1,4 do
  317. if self.allNodes[i] and self.allNodes[i].bai then
  318. self.allNodes[i].bai:setVisible(false)
  319. end
  320. end
  321. end
  322. return ncmajRoomPlayerView