No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

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