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.

250 lines
8.3 KiB

  1. local ZPDef = ZPFramework.ZPImport("zp_base.luaScript.ZPDef")
  2. local ZPFuc = ZPFramework.ZPImport("zp_base.luaScript.ZPFunctions")
  3. local ZPSound = ZPFramework.ZPImport("zp_base.luaScript.ZPSound")
  4. local ZPRoomXiaoJuView = ZPFramework.ZPFrameworkClassImprot("zp_base.luaScript.Views.Room.ZPRoomXiaoJuView")
  5. local hejiangRoomXiaoJuView = class("hejiangRoomXiaoJuView",ZPRoomXiaoJuView)
  6. function hejiangRoomXiaoJuView:ctor(nextCallBackFun,isRecontect)
  7. hejiangRoomXiaoJuView.super.ctor(self,nextCallBackFun,isRecontect);
  8. end
  9. function hejiangRoomXiaoJuView:onEnter()
  10. hejiangRoomXiaoJuView.super.onEnter(self)
  11. end
  12. function hejiangRoomXiaoJuView:updatePlayerInfo()
  13. local maxTurnScore = self:getMaxTurnScore(self.xiaojuData)
  14. --非小家的3个玩家是否有最大分数这个值
  15. local isNormolPlayerWiner = false
  16. for k,v in pairs(self.xiaojuData) do
  17. if app.room:checkUserIDIsInTable(v.nUserId) then
  18. if tonumber(v.nTurnScore) == maxTurnScore then
  19. if not self:isLittleUid(v.nUserId) then
  20. isNormolPlayerWiner = true
  21. end
  22. end
  23. end
  24. end
  25. local index = 1
  26. local idx = 2
  27. local isOneHaved = false
  28. local i = 1;
  29. for k,v in pairsByKeys(self.xiaojuData) do
  30. v.nTurnScore = tonumber(v.nTurnScore)
  31. if app.room:checkUserIDIsInTable(v.nUserId) then
  32. if self:isLittleUid(v.nUserId) then
  33. i = 4;
  34. else
  35. if isNormolPlayerWiner then
  36. if v.nTurnScore == maxTurnScore and not isOneHaved then
  37. i = 1;
  38. isOneHaved = true
  39. else
  40. i = idx;
  41. idx = idx + 1;
  42. end
  43. else
  44. i = index
  45. index = index + 1
  46. end
  47. end
  48. local roomInfo = app.room.roomInfo
  49. local userInfo = app.room:getUserInfo(v.nUserId)
  50. local viewId = app.room:getViewIdByUserId(v.nUserId)
  51. local nWinerId = app.room.roomInfo.winUserId
  52. local dianPaoUserId = app.room.roomInfo.dianPaoUserId
  53. local bankerId = app.room:getUserIdBySeatId(app.room.roomInfo.nBankSeatId)
  54. local stopFlag = app.room.roomInfo.stopFlag
  55. if v.nTurnScore > 0 then
  56. self.allNode[i].nodewinScore:setText(tostring("+"..v.nTurnScore))
  57. self.allNode[i].nodeloseScore:setVisible(false)
  58. else
  59. self.allNode[i].nodeloseScore:setText(v.nTurnScore)
  60. self.allNode[i].nodewinScore:setVisible(false)
  61. self.allNode[i].nodewinBg:setVisible(false)
  62. end
  63. self.allNode[i].nodelayoutHuinfo:setVisible(false)
  64. self.allNode[i].nodehutype:setVisible(false)
  65. --先设置默认头像
  66. local width = self.allNode[i].nodeHead:getContentSize().width
  67. local nickname = ""
  68. if userInfo and userInfo.nickname then
  69. nickname = getSubStringNickname(userInfo.nickname)
  70. self:updateUserHead(self.allNode[i].nodeHead,v.nUserId, userInfo.sex, userInfo.headimgurl);
  71. end
  72. --名称
  73. self.allNode[i].nodeName:setText(nickname)
  74. --ID
  75. self.allNode[i].nodeID:setText(tostring("ID:"..v.nUserId))
  76. --显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq
  77. -- begin
  78. local ClubDefine = require("luaScript.Protocol.Club.ClubDefine")
  79. if app.club_php.clubID and app.club_php.clubID ~= 0 then
  80. if app.club_php:getCestIsOpen(app.club_php.clubID) then
  81. --隐私数据
  82. local clubInfo = app.club_php.clubList[app.club_php.clubID]
  83. self.cliext = clubInfo.groupext and clubInfo.groupext.cliext
  84. if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then
  85. if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then
  86. self.allNode[i].nodeID:setVisible(true)
  87. else
  88. self.allNode[i].nodeID:setVisible(false)
  89. end
  90. end
  91. end
  92. end
  93. if v.nUserId == tonumber(app.user.loginInfo.uid) then
  94. self.allNode[i].nodeID:setVisible(true)
  95. end
  96. -- end
  97. --庄家
  98. if bankerId == v.nUserId then
  99. self.allNode[i].nodeBanker:setVisible(true)
  100. else
  101. self.allNode[i].nodeBanker:setVisible(false)
  102. end
  103. --点炮玩家
  104. if dianPaoUserId == v.nUserId then
  105. self.allNode[i].nodefangPao:setVisible(false)
  106. --更换显示方式
  107. local ui = self:getAHutypeUi(0,"zp_mt_dianpao.png")
  108. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  109. else
  110. self.allNode[i].nodefangPao:setVisible(false)
  111. end
  112. --组合牌展示
  113. local data = self.xiaojuData[v.nUserId]
  114. if not data then
  115. return
  116. end
  117. local isHuUid = false--是否是赢牌者uid
  118. for huk,huv in pairs(roomInfo.hupaiInfo) do
  119. if huv.huPaiUid == v.nUserId then
  120. isHuUid = true
  121. app.room.roomInfo.huCard = huv.huCard
  122. self.allNode[i].nodelayoutHuinfo:setVisible(true)
  123. --显示胡牌
  124. self.allNode[i].nodeHushu:setText(huv.huPaiHuShu)
  125. self.allNode[i].nodeBeishu:setText(huv.multiNum)
  126. local huDes = {
  127. [1] = "十",[2] = "二十",[3] = "三十",[4] = "四十",[5] = "五十",[6] = "六十",[7] = "七十",[8] = "八十",
  128. [9] = "九十",[10] = "一百",[20] = "二百",[30] = "三百",
  129. }
  130. --查叫
  131. if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG then
  132. local ui = self:getAHutypeUi(0,"zp_mt_chajiao.png")
  133. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  134. end
  135. --非自摸 非点炮 显示堂出
  136. if huv.dianPaoUid <= 0 and not ZPFuc.isZiMo(huv.huTypes) then
  137. local ui = self:getAHutypeUi(0,"zp_mt_tangchu.png")
  138. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  139. end
  140. local huDNum = math.floor(huv.huPaiHuShu/10)
  141. if huv.huPaiHuShu == 0 then
  142. self.allNode[i].nodehuinfo:setText("乱胡")--显示无胡
  143. local ui = self:getAHutypeUi(0)
  144. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  145. elseif huDNum > 0 then
  146. if huv.huPaiHuShu%10 == 0 then
  147. self.allNode[i].nodehuinfo:setText("恰"..huDes[huDNum].."胡")--显示梗
  148. local ui = self:getAHutypeUi(0,"zp_mt_geng.png")
  149. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  150. else
  151. self.allNode[i].nodehuinfo:setText(huDes[huDNum].."多胡")
  152. end
  153. else
  154. self.allNode[i].nodehuinfo:setText(huv.huPaiHuShu.."胡")
  155. end
  156. if huv.guiNum and huv.guiNum > 0 then
  157. local gui = string.format("zp_mt_gui%d.png",huv.guiNum)
  158. local ui = self:getAHutypeUi(0,gui)
  159. self.allNode[i].nodelayoutHuTypes:addChild(ui)
  160. end
  161. self:showHuTypes(self.allNode[i].nodelayoutHuTypes,huv.huTypes)
  162. end
  163. end
  164. local index = 0
  165. for key,value in pairs(data.tableWeaveCard) do
  166. local list,operationType = ZPFuc.getZPCardList(value.card,value.type)
  167. local card = value.opcard
  168. list = ZPFuc.getOpCardFirstList(operationType,list,card)
  169. --上面吃或不吃不要用if else因为还可能都不成立
  170. if list then
  171. self:createWeaveCard(value,list,index,false,self.allNode[i].nodeLayout,v.nUserId)
  172. end
  173. index = index + 1
  174. end
  175. --只显示一次胡变为opCard
  176. local showOneTime = true
  177. for k,value in pairs(data.handCard) do
  178. local list,operationType = ZPFuc.getZPCardList(value.card,value.type)
  179. local card = value.opcard
  180. --判断组合牌里是否有胡的那张
  181. local haveHuCard = false
  182. for t = 1,3 do
  183. if app.room.roomInfo.huCard == list[t] then
  184. haveHuCard = true
  185. break
  186. end
  187. end
  188. --如果是吃胡,并且手里的这次的组合牌里还有胡的那张
  189. if showOneTime and haveHuCard and app.room.roomInfo.huCardType and app.room.roomInfo.huCardType == ZPDef.ReconnectHuType.CHI_HU then
  190. card = app.room.roomInfo.huCard
  191. showOneTime = false
  192. end
  193. list = ZPFuc.getOpCardFirstList(operationType,list,card)
  194. if value.type == ZPDef.SendCardType.KAN_THREE_SAME then
  195. value.type = ZPDef.SendCardType.KANPAI_LOCAL
  196. end
  197. --上面吃或不吃不要用if else因为还可能都不成立
  198. if list then
  199. self:createWeaveCard(value,list,index,true,self.allNode[i].nodeLayout,v.nUserId)
  200. end
  201. index = index + 1
  202. end
  203. --本局结束
  204. if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_NORMAL then
  205. if #roomInfo.hupaiInfo > 0 then
  206. if v.nTurnScore > 0 then
  207. if v.nUserId == app.user.loginInfo.uid then
  208. ZPSound.PlayWinGame()
  209. end
  210. else
  211. if v.nUserId == app.user.loginInfo.uid then
  212. ZPSound.PlayLoseGame()
  213. end
  214. end
  215. end
  216. end
  217. --indexPlayer = indexPlayer + 1
  218. if isHuUid and true == isHuUid then
  219. self:showHuCardBox(self.allNode[i].nodeLayout,app.room.roomInfo.huCard)
  220. end
  221. end
  222. end
  223. self:showDiPai()
  224. end
  225. return hejiangRoomXiaoJuView;