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.

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