Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

816 lignes
24 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 ZPWanFa= require("luaScript.SubGameDefine.ZiPai.erwuWanFa")
  5. local ErWuRoomXiaoJuView = class("ErWuRoomXiaoJuView", cc.UIView)
  6. local tempCardVlue ={
  7. [17] = 20, --11
  8. [18] = 30, --12
  9. [49] = 40, --31
  10. [34] = 41, --22
  11. [20] = 50, --14
  12. [50] = 51, --32
  13. [21] = 60, --15
  14. [36] = 61, --24
  15. [51] = 62, --33
  16. [22] = 70, --16
  17. [82] = 71, --52
  18. [52] = 72, --34
  19. [38] = 80, --26
  20. [53] = 81, --35
  21. [68] = 82, --44
  22. [54] = 90, --36
  23. [84] = 91, --54
  24. [70] = 100, --46
  25. [85] = 101, --55
  26. [86] = 110, --56
  27. [102] = 120, --66
  28. }
  29. function ErWuRoomXiaoJuView:ctor(nextCallBackFun,isRecontect,colorType)
  30. ErWuRoomXiaoJuView.super.ctor(self);
  31. self.isRecontect = isRecontect
  32. self.nextCallBack = nextCallBackFun
  33. self.xiaojuData = app.room.roomInfo.playList
  34. self.isShow = false
  35. if self.isRecontect then
  36. self.xiaojuData = app.room.roomInfo.arrayTableInfo
  37. end
  38. self.allNode = {}
  39. self.showHu = {}
  40. self.colorType = colorType or ZPDef.ColorType.White
  41. end
  42. function ErWuRoomXiaoJuView:loadUI()
  43. local ui = loadUI("zp_erwu/res/ui/ui_fangjian/erwu_ui_xiaoju.ui");
  44. self.ui = ui;
  45. self:addChild(ui);
  46. end
  47. function ErWuRoomXiaoJuView:onEnter()
  48. ErWuRoomXiaoJuView.super.onEnter(self)
  49. self:loadUI()
  50. -- 下一局
  51. self.ui.Items.Button_Next:registerClick(handler(self , self.onClickNext))
  52. --显示总结算
  53. self.ui.Items.Button_All:registerClick(handler(self , self.onClickZongJieSuan))
  54. --查牌
  55. self.ui.Items.Button_ChaPai:registerClick(handler(self , self.onClickChaPai))
  56. --胡牌类型item,复制用
  57. self.ui.Items.Layout_hutypes:setVisible(false)
  58. --显示结束
  59. if app.room.roomInfo.isGameOver == 1 then
  60. self.ui.Items.Button_Next:setVisible(false)
  61. self.ui.Items.Button_All:setVisible(true)
  62. else
  63. self.ui.Items.Button_All:setVisible(false)
  64. end
  65. self.ui.Items.ImageView_DiCard_1:setVisible(false)
  66. --组合牌第一个点的坐标
  67. self.weaveCardPos = cc.p(180,45)
  68. self.leftCardPos = self.ui.Items.ImageView_DiCard_1:getPosition()
  69. --初始化人物信息
  70. self:initPlayerView()
  71. self:initOtherData()
  72. self:updatePlayerInfo()
  73. end
  74. function ErWuRoomXiaoJuView:initPlayerView()
  75. self.ui.Items.Layout_WeaveCard_Item:setVisible(false)
  76. for i=1,4 do
  77. local head = "ImageView_head_"..i
  78. local headBg = "ImageView_head_bg_" .. i
  79. local name = "Text_Name_"..i
  80. local id = "Text_ID_"..i
  81. local banker = "ImageView_Zhuang_"..i
  82. local winScore = "TextBMFont_WinScore_"..i
  83. local loseScore = "TextBMFont_LoseScore_"..i
  84. local layout = "Layout_Hand_"..i
  85. local winBg = "ImageView_ying_bg_"..i
  86. --local loseBg = "ImageView_pt_bg_"..i
  87. local layoutHuinfo = "Layout_HuInfo_"..i
  88. local fangPao = "ImageView_FangPao_"..i
  89. local layoutHuTypes = "Layout_huTypes_"..i
  90. local huType = "ImageView_HuType_"..i
  91. local textHuInfo = "Text_Hu_Info_"..i
  92. local textHushu = "Text_hushu_"..i
  93. local textBeishu = "Text_beishu_"..i
  94. local textFanshu = "Text_fanshu_"..i
  95. local textFanxing = "Text_fanxing_"..i
  96. local textTuoNum = "Text_TuoNum_"..i
  97. local toujia = "ImageView_toujia_"..i
  98. local baojiao = "ImageView_baojiao_"..i
  99. local xiaojia = "ImageView_xiaojia_"..i
  100. local fengding = "ImageView_fengding_"..i
  101. self.allNode[i] = {}
  102. self.allNode[i].nodeHead = self.ui.Items[head]
  103. self.allNode[i].nodeHeadBg = self.ui.Items[headBg]
  104. self.allNode[i].nodeName = self.ui.Items[name]
  105. self.allNode[i].nodeID = self.ui.Items[id]
  106. self.allNode[i].nodeBanker = self.ui.Items[banker]
  107. self.allNode[i].nodewinScore = self.ui.Items[winScore]
  108. self.allNode[i].nodeloseScore = self.ui.Items[loseScore]
  109. self.allNode[i].nodeLayout = self.ui.Items[layout]
  110. self.allNode[i].nodewinBg = self.ui.Items[winBg]
  111. --self.allNode[i].nodeloseBg = self.ui.Items[loseBg]
  112. self.allNode[i].nodelayoutHuinfo = self.ui.Items[layoutHuinfo]
  113. self.allNode[i].nodefangPao = self.ui.Items[fangPao]
  114. self.allNode[i].nodehutype = self.ui.Items[huType]
  115. self.allNode[i].nodelayoutHuTypes = self.ui.Items[layoutHuTypes]
  116. self.allNode[i].nodehuinfo = self.ui.Items[textHuInfo]
  117. self.allNode[i].nodeHushu = self.ui.Items[textHushu]
  118. self.allNode[i].nodeBeishu = self.ui.Items[textBeishu]
  119. self.allNode[i].nodefanshu = self.ui.Items[textFanshu]
  120. self.allNode[i].nodefanxing = self.ui.Items[textFanxing]
  121. self.allNode[i].nodeTuoNum = self.ui.Items[textTuoNum]
  122. self.allNode[i].nodetoujia = self.ui.Items[toujia]
  123. self.allNode[i].nodebaojiao = self.ui.Items[baojiao]
  124. self.allNode[i].nodexiaojia = self.ui.Items[xiaojia]
  125. self.allNode[i].nodefengding = self.ui.Items[fengding]
  126. self.ui.Items["Layout_Player_" .. i]:setVisible(false)
  127. end
  128. end
  129. --是否是小家uid
  130. function ErWuRoomXiaoJuView:isLittleUid(uid)
  131. if not uid then return false end
  132. if uid == 0 then return true end
  133. local viewId = app.room:getViewIdByUserId(uid)
  134. if not viewId then return false end
  135. local seatId = app.room:getSeatIdByViewId(viewId)
  136. if not seatId then return false end
  137. if app.room.roomInfo.xiaoSeatId and app.room.roomInfo.xiaoSeatId == seatId then
  138. return true
  139. else
  140. return false
  141. end
  142. end
  143. --获取最大得分
  144. function ErWuRoomXiaoJuView:getMaxTurnScore(t)
  145. local score = 0
  146. for i,j in pairs(t) do
  147. if j.nTurnScore > score then
  148. score = j.nTurnScore
  149. end
  150. end
  151. return score
  152. end
  153. function ErWuRoomXiaoJuView:updatePlayerInfo()
  154. self.isHaveUse = {}
  155. local indexPlayer = 2
  156. local maxTurnScore = self:getMaxTurnScore(self.xiaojuData)
  157. --按要求赢家要摆在第一个位置
  158. for k,v in pairsByKeys(self.xiaojuData) do
  159. local i = indexPlayer
  160. if v.nTurnScore == maxTurnScore and not self.isHaveUse[1] and (not self:isLittleUid(v.nUserId)) then
  161. i = 1
  162. elseif self:isLittleUid(v.nUserId) then
  163. i = 4
  164. else
  165. indexPlayer = indexPlayer + 1
  166. end
  167. if i== 4 and (not self:isLittleUid(v.nUserId)) then
  168. for tt=1,4 do
  169. if not self.isHaveUse[tt] then
  170. i = tt
  171. end
  172. end
  173. self.isHaveUse[i] = true
  174. elseif not self.isHaveUse[i] then
  175. self.isHaveUse[i] = true
  176. else
  177. for tt=1,4 do
  178. if not self.isHaveUse[tt] then
  179. i = tt
  180. end
  181. end
  182. self.isHaveUse[i] = true
  183. end
  184. self.ui.Items["Layout_Player_" .. i]:setVisible(true)
  185. local roomInfo = app.room.roomInfo
  186. local userInfo = app.room:getUserInfo(v.nUserId)
  187. local viewId = app.room:getViewIdByUserId(v.nUserId)
  188. local nWinerId = app.room.roomInfo.winUserId
  189. local dianPaoUserId = app.room.roomInfo.dianPaoUserId
  190. local baopeiUserId = app.room.roomInfo.baopeiUserid
  191. local bankerId = app.room:getUserIdBySeatId(app.room.roomInfo.nBankSeatId)
  192. local stopFlag = app.room.roomInfo.stopFlag
  193. local xiaojiaid = self:getXiaojiaUid()
  194. self.allNode[i].nodefangPao:setScale(1.5)
  195. if stopFlag ~= 0 then
  196. self.allNode[i].nodefanshu:setVisible(false)
  197. self.allNode[i].nodelayoutHuTypes:setVisible(false)
  198. self.allNode[i].nodefanxing:setVisible(false)
  199. self.allNode[i].nodeTuoNum:setVisible(false)
  200. self.allNode[i].nodefengding:setVisible(false)
  201. end
  202. if v.nTurnScore > 0 then
  203. self.allNode[i].nodewinScore:setText(tostring("+"..v.nTurnScore))
  204. self.allNode[i].nodeloseScore:setVisible(false)
  205. else
  206. self.allNode[i].nodeloseScore:setText(v.nTurnScore)
  207. self.allNode[i].nodewinScore:setVisible(false)
  208. self.allNode[i].nodewinBg:setVisible(false)
  209. end
  210. self.allNode[i].nodelayoutHuinfo:setVisible(false)
  211. self.allNode[i].nodehutype:setVisible(false)
  212. --先设置默认头像
  213. local width = self.allNode[i].nodeHead:getContentSize().width
  214. if v.nUserId == 0 then
  215. self.allNode[i].nodeName:setVisible(false)
  216. self.allNode[i].nodeID:setVisible(false)
  217. self.allNode[i].nodeHeadBg:setVisible(false)
  218. self.allNode[i].nodewinScore:setVisible(false)
  219. self.allNode[i].nodeloseScore:setVisible(false)
  220. else
  221. local nickname = ""
  222. if userInfo and userInfo.nickname then
  223. nickname = getSubStringNickname(userInfo.nickname)
  224. self:updateUserHead(self.allNode[i].nodeHead,v.nUserId, userInfo.sex, userInfo.headimgurl);
  225. end
  226. --名称
  227. self.allNode[i].nodeName:setText(nickname)
  228. --ID
  229. self.allNode[i].nodeID:setText(tostring("ID:"..v.nUserId))
  230. end
  231. --庄家
  232. if bankerId == v.nUserId then
  233. self.allNode[i].nodeBanker:setVisible(false)
  234. self.allNode[i].nodetoujia:setVisible(true)
  235. else
  236. self.allNode[i].nodeBanker:setVisible(false)
  237. self.allNode[i].nodetoujia:setVisible(false)
  238. end
  239. --小家
  240. if xiaojiaid == v.nUserId then
  241. self.allNode[i].nodexiaojia:setVisible(true)
  242. else
  243. self.allNode[i].nodexiaojia:setVisible(false)
  244. end
  245. --报叫
  246. if v.nBaoPaiStatus == 2 then
  247. self.allNode[i].nodebaojiao:setVisible(true)
  248. else
  249. self.allNode[i].nodebaojiao:setVisible(false)
  250. end
  251. --点炮 包赔玩家
  252. if dianPaoUserId == v.nUserId or baopeiUserId == v.nUserId then
  253. if dianPaoUserId == v.nUserId then
  254. self.allNode[i].nodefangPao:setVisible(true)
  255. --更换显示方式
  256. --local ui = self:getAHutypeUi("zp_erwu/res/ui/zy_fangjian/jiesuan/dianpao.png")
  257. self.allNode[i].nodefangPao:loadTexture("zp_erwu/res/ui/zy_fangjian/jiesuan/dianpao.png")
  258. self.allNode[i].nodefangPao:setScale(1.3)
  259. local orderPos = self.allNode[i].nodefangPao:getPosition()
  260. self.allNode[i].nodefangPao:setPositionY(orderPos.y - 10)
  261. elseif baopeiUserId == v.nUserId then
  262. self.allNode[i].nodefangPao:setVisible(true)
  263. --更换显示方式
  264. ---local ui = self:getAHutypeUi("zp_erwu/res/ui/zy_fangjian/jiesuan/baopei.png")
  265. self.allNode[i].nodefangPao:loadTexture("zp_erwu/res/ui/zy_fangjian/jiesuan/baopei.png")
  266. self.allNode[i].nodefangPao:setScale(1.3)
  267. local orderPos = self.allNode[i].nodefangPao:getPosition()
  268. self.allNode[i].nodefangPao:setPositionY(orderPos.y - 10)
  269. end
  270. else
  271. self.allNode[i].nodefangPao:setVisible(false)
  272. end
  273. --组合牌展示
  274. local data = self.xiaojuData[v.nUserId]
  275. if not data then
  276. return
  277. end
  278. local isHuUid = false--是否是赢牌者uid
  279. for huk,huv in pairs(roomInfo.hupaiInfo) do
  280. if huv.huPaiUid == v.nUserId then
  281. isHuUid = true
  282. app.room.roomInfo.huCard = huv.huCard
  283. self.allNode[i].nodefangPao:setVisible(true)
  284. self.allNode[i].nodelayoutHuinfo:setVisible(false)
  285. self.allNode[i].nodefangPao:loadTexture("zp_erwu/res/ui/zy_fangjian/jiesuan/hu.png")
  286. end
  287. if huv.huPaiUid == v.nUserId then
  288. self.allNode[i].nodefanshu:setVisible(true)
  289. self.allNode[i].nodefanshu:setText(huv.huPaiHuShu.."番")
  290. local hustr = self:getHuTypesStr(huv.huPaiUid,huv.huTypes)
  291. self.allNode[i].nodelayoutHuTypes:setVisible(true)
  292. self.allNode[i].nodefanxing:setVisible(true)
  293. self.allNode[i].nodefanxing:setText(tostring(hustr))
  294. self.allNode[i].nodeTuoNum:setVisible(true)
  295. self.allNode[i].nodeTuoNum:setText(v.totalTuoNum.."坨")
  296. else
  297. self.allNode[i].nodefanshu:setVisible(false)
  298. self.allNode[i].nodelayoutHuTypes:setVisible(false)
  299. self.allNode[i].nodefanxing:setVisible(false)
  300. self.allNode[i].nodeTuoNum:setVisible(false)
  301. end
  302. if huv.huPaiUid == v.nUserId and self:IsFengDing(huv.huTypes) then
  303. self.allNode[i].nodefengding:setVisible(true)
  304. else
  305. self.allNode[i].nodefengding:setVisible(false)
  306. end
  307. end
  308. if v.nTurnScore < 0 and v.nBaoPaiStatus == 2 then
  309. self.allNode[i].nodelayoutHuTypes:setVisible(true)
  310. self.allNode[i].nodefanxing:setVisible(true)
  311. self.allNode[i].nodefanxing:setText(tostring("被杀报"))
  312. end
  313. local index = 0
  314. for key,value in pairs(data.tableWeaveCard) do
  315. if (table.nums(value.card) == 5) then
  316. local list = {value.card[1], value.card[2], value.card[3], value.card[4]}
  317. self:createWeaveCard(value, list, index, false, self.allNode[i].nodeLayout,v.nUserId)
  318. index = index + 1
  319. list = {value.card[2]}
  320. self:createWeaveCard(value, list, index, false, self.allNode[i].nodeLayout,v.nUserId)
  321. index = index + 1
  322. else
  323. self:createWeaveCard(value, value.card, index, false, self.allNode[i].nodeLayout,v.nUserId)
  324. index = index + 1
  325. end
  326. end
  327. if table.nums(data.tableWeaveCard) > 0 then
  328. index = index + 1
  329. end
  330. local handcardList = {}
  331. for k,value in pairs(data.handCard) do
  332. local card = value.opcard
  333. local list = value.card
  334. if list then
  335. table.insert(handcardList,list)
  336. end
  337. end
  338. table.sort(handcardList,function(a,b)
  339. local index = a[1]
  340. local numA = tempCardVlue[index]
  341. local index1 = b[1]
  342. local numB = tempCardVlue[index1]
  343. if numA ~= nil and numB ~= nil then
  344. return numA < numB
  345. end
  346. end)
  347. --只显示一次胡变为opCard
  348. local showOneTime = true
  349. for k,value in pairs(handcardList) do
  350. local list = value
  351. if list then
  352. local lens = table.nums(list)
  353. if lens > 4 and lens <= 8 then
  354. local templist = {}
  355. for i = 5,lens do
  356. table.insert(templist,list[i])
  357. end
  358. self:createWeaveCard(value,list,index,true,self.allNode[i].nodeLayout,v.nUserId)
  359. index = index + 1
  360. self:createWeaveCard(value,templist,index,true,self.allNode[i].nodeLayout,v.nUserId)
  361. index = index + 1
  362. elseif lens > 8 and lens <= 12 then
  363. local templist = {}
  364. local templist1 = {}
  365. for i = 5,8 do
  366. table.insert(templist,list[i])
  367. end
  368. for i = 9,12 do
  369. table.insert(templist1,list[i])
  370. end
  371. self:createWeaveCard(value,list,index,true,self.allNode[i].nodeLayout,v.nUserId)
  372. index = index + 1
  373. self:createWeaveCard(value,templist,index,true,self.allNode[i].nodeLayout,v.nUserId)
  374. index = index + 1
  375. self:createWeaveCard(value,templist1,index,true,self.allNode[i].nodeLayout,v.nUserId)
  376. index = index + 1
  377. elseif lens > 12 and lens <= 16 then
  378. local templist = {}
  379. local templist1 = {}
  380. local templist2 = {}
  381. for i = 5,8 do
  382. table.insert(templist,list[i])
  383. end
  384. for i = 9,12 do
  385. table.insert(templist1,list[i])
  386. end
  387. for i = 13,16 do
  388. table.insert(templist2,list[i])
  389. end
  390. self:createWeaveCard(value,list,index,true,self.allNode[i].nodeLayout,v.nUserId)
  391. index = index + 1
  392. self:createWeaveCard(value,templist,index,true,self.allNode[i].nodeLayout,v.nUserId)
  393. index = index + 1
  394. self:createWeaveCard(value,templist1,index,true,self.allNode[i].nodeLayout,v.nUserId)
  395. index = index + 1
  396. self:createWeaveCard(value,templist2,index,true,self.allNode[i].nodeLayout,v.nUserId)
  397. index = index + 1
  398. else
  399. self:createWeaveCard(value,list,index,true,self.allNode[i].nodeLayout,v.nUserId)
  400. index = index + 1
  401. end
  402. end
  403. end
  404. --本局结束
  405. if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_NORMAL then
  406. if #roomInfo.hupaiInfo > 0 then
  407. if v.nTurnScore > 0 then
  408. if v.nUserId == app.user.loginInfo.uid then
  409. ZPSound.PlayWinGame()
  410. end
  411. else
  412. if v.nUserId == app.user.loginInfo.uid then
  413. ZPSound.PlayLoseGame()
  414. end
  415. end
  416. end
  417. end
  418. --indexPlayer = indexPlayer + 1
  419. if isHuUid and true == isHuUid then
  420. self:showHuCardBox(self.allNode[i].nodeLayout,app.room.roomInfo.huCard)
  421. end
  422. end
  423. self.ui.Items.Layout_Player:doLayout()
  424. self.ui.Items.Layout_Player:requestDoLayout()
  425. self:showDiPai()
  426. end
  427. function ErWuRoomXiaoJuView:getAHutypeUi(ht,filename)
  428. local ui = self.ui.Items.Layout_hutypes:getCopied()
  429. ui.Items = getUIItems(ui);
  430. ui:setVisible(true)
  431. if not ht then
  432. ht = 0
  433. end
  434. local name = string.format(ZPDef.TipFile.HU,ht)
  435. if filename then
  436. name = filename
  437. end
  438. ui.Items.ImageView_hutype:loadTextureFromPlist(name)
  439. return ui
  440. end
  441. function ErWuRoomXiaoJuView:showDiPai()
  442. local dipaiSize = table.nums(app.room.roomInfo.dipaiList);
  443. if dipaiSize <= 0 then
  444. self.ui.Items.Layout_Bottom_1:setVisible(false)
  445. else
  446. self.ui.Items.Layout_Bottom_1:setVisible(true)
  447. end
  448. self.ui.Items.Layout_Bottom_1:setVisible(false)
  449. --[[if app.room:getActualPlayerNum() == 2 then
  450. local y = self.ui.Items.Layout_Bottom_1:getPositionY()
  451. self.ui.Items.Layout_Bottom_1:setPositionY(y+40)
  452. end--]]
  453. local tIndex = 0
  454. for dipaiK,dipaiV in pairsByKeys(app.room.roomInfo.dipaiList) do
  455. local mLayout = cc.Layout:createNode()
  456. mLayout:setAnchorPoint(cc.p(0.5,0.5))
  457. mLayout:setSize(cc.size(30,30))
  458. local cardImg = cc.ImageView:createNode();
  459. cardImg:setAnchorPoint(cc.p(0.5,0.5));
  460. cardImg:setScale(0.8)
  461. local fileName = ZPFuc.getZPCardImgByValue(dipaiV.chessCards,ZPDef.CardType.CARD_TYPE_QUIT,self.colorType)
  462. cardImg:loadTextureFromPlist(fileName);
  463. local row = math.floor(tIndex/22)
  464. --cardImg:setPosition(self.leftCardPos.x + (tIndex%25)*45,self.leftCardPos.y-row*60)
  465. cardImg:setPosition(cc.p(15,15))
  466. mLayout:addChild(cardImg)
  467. self.ui.Items.Layout_dipai:addChild(mLayout);
  468. tIndex = tIndex + 1;
  469. end
  470. end
  471. function ErWuRoomXiaoJuView:getHuTypeAndBeiShuStr(huType,beishu)
  472. local strRul = ""
  473. return strRul
  474. end
  475. --判断是否是赢家uid
  476. function ErWuRoomXiaoJuView:getIsWinUid(uid)
  477. for huk,huv in pairs(app.room.roomInfo.hupaiInfo) do
  478. if huv.huPaiUid == uid then
  479. return true
  480. end
  481. end
  482. return false
  483. end
  484. function ErWuRoomXiaoJuView:createWeaveCard(value,list,index,isHand,node,userID)
  485. local sendCardType = value.type
  486. local huxi = value.hushu
  487. local opCard = value.opcard
  488. local ui = self.ui.Items.Layout_WeaveCard_Item:getCopied()
  489. ui.Items = getUIItems(ui);
  490. ui:setVisible(true)
  491. local max = table.nums(list)
  492. local idx = max
  493. for i = 1,4 do
  494. local name = "ImageView_Card_"..i
  495. local hu = "ImageView_card_hu_"..i
  496. ui.Items[hu]:setVisible(false)
  497. if i > max then
  498. ui.Items[name]:setVisible(false)
  499. else
  500. if list[i] == app.room.roomInfo.huCard and not self.isShow then
  501. --[[--吃胡一定是手牌
  502. if app.room.roomInfo.huCardType and app.room.roomInfo.huCardType == ZPDef.ReconnectHuType.CHI_HU and isHand then
  503. self.isShow = true
  504. --其他类型的胡牌在组合牌上
  505. elseif app.room.roomInfo.huCardType and app.room.roomInfo.huCardType ~= ZPDef.ReconnectHuType.CHI_HU and not isHand then
  506. self.isShow = true
  507. elseif app.room.roomInfo.huCardType and app.room.roomInfo.huCardType == 0 and isHand then--叫牌的时候
  508. self.isShow = true
  509. end--]]
  510. if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG then
  511. if true == isHand or #list == 4 or (#list == 3 and list[1]==list[2] and list[2]==list[3]) then
  512. self.isShow = true
  513. end
  514. else
  515. if app.room.roomInfo.huCardType == ZPDef.ReconnectHuType.CHI_HU and not isHand then
  516. else
  517. self.isShow = true
  518. end
  519. end
  520. end
  521. local fileName = ZPFuc.getZPCardImgByValue(list[i],ZPDef.CardType.CARD_TYPE_QUIT,self.colorType)
  522. ui.Items[name]:loadTextureFromPlist(fileName)
  523. ui.Items[name].cardValue = list[i]
  524. --[[if self.isShow == true then
  525. --ui.Items[name]:setColor(cc.c3b(248,193,103))
  526. if not self.showHu[userID] then
  527. self.isShow = false
  528. self.showHu[userID] = true
  529. if self:getIsWinUid(userID) then
  530. ui.Items[hu]:setVisible(true)
  531. end
  532. end
  533. self.isShow = false
  534. end--]]
  535. end
  536. end
  537. --不管是不是手牌都要显示
  538. if self:getWeaveTypeFile(sendCardType) ~= "" then--and (not isHand)
  539. --ui.Items.ImageView_tip:loadTextureFromPlist(self:getWeaveTypeFile(sendCardType))
  540. ui.Items.ImageView_tip:setVisible(false)
  541. else
  542. ui.Items.ImageView_tip:setVisible(false)
  543. end
  544. ui.Items.TextBMFont_youshu:setVisible(false)
  545. --ui.Items.TextBMFont_youshu:setText(huxi)
  546. ui:setPosition(cc.p(self.weaveCardPos.x + index * 35,self.weaveCardPos.y))
  547. --self.ui.Items.Layout_1:addChild(ui)
  548. node:addChild(ui)
  549. end
  550. --在胡牌的那张牌上面显示胡字
  551. function ErWuRoomXiaoJuView:showHuCardBox(node,hucard)
  552. if not node then return end
  553. local cardUI = node:getChildren()
  554. if cardUI and type(cardUI) == 'table' then
  555. local endPos = cardUI[#cardUI]:getPosition()
  556. for i = #cardUI ,1,-1 do
  557. local tui = cardUI[i]
  558. for k = 1,4 do
  559. local name = "ImageView_Card_"..k
  560. local hu = "ImageView_card_hu_"..k
  561. if tui.Items[name] and tui.Items[name]:isVisible() and tui.Items[name].cardValue == hucard then
  562. --把带胡字的那一列放到最后去
  563. tui.Items[hu]:setVisible(true)
  564. local pos1 = tui:getPosition()
  565. tui:setPosition(endPos)
  566. cardUI[#cardUI]:setPosition(pos1)
  567. return
  568. end
  569. end
  570. end
  571. end
  572. end
  573. --[[
  574. 获取组合类型文件
  575. ]]
  576. function ErWuRoomXiaoJuView:getWeaveTypeFile(sendCardType)
  577. if sendCardType == ZPDef.SendCardType.TWO_SEVEN_TEN
  578. or sendCardType == ZPDef.SendCardType.ONE_FIVE_TEN
  579. or sendCardType == ZPDef.SendCardType.ONE_TWO_THREE
  580. or sendCardType == ZPDef.SendCardType.DA_ZI_TWO_AND_ONE
  581. or sendCardType == ZPDef.SendCardType.SHUN_ZI then
  582. return ZPDef.XiaoJuWeaveCardType.CHI
  583. elseif sendCardType == ZPDef.SendCardType.DUI_THREE_SAME then
  584. return ZPDef.XiaoJuWeaveCardType.PENG
  585. elseif sendCardType == ZPDef.SendCardType.KAN_THREE_SAME or sendCardType == ZPDef.SendCardType.DIRTY_THREE_SAME then
  586. return ZPDef.XiaoJuWeaveCardType.WEI
  587. elseif sendCardType == ZPDef.SendCardType.KUAI_SHUI_FOUR_SAME or sendCardType == ZPDef.SendCardType.CHI_PAI_PENG_PAO or sendCardType == ZPDef.SendCardType.CHI_PAI_SHAO_PAO then
  588. return ZPDef.XiaoJuWeaveCardType.ZHAO
  589. elseif sendCardType == ZPDef.SendCardType.GUN_ZI_FOUR_SAME or sendCardType == ZPDef.SendCardType.CHI_PAI_TI then
  590. return ZPDef.XiaoJuWeaveCardType.LONG
  591. elseif sendCardType == ZPDef.SendCardType.ZHUANG_ZI then
  592. return ZPDef.XiaoJuWeaveCardType.JIANG
  593. elseif sendCardType == ZPDef.SendCardType.KANPAI_LOCAL then
  594. return ZPDef.XiaoJuWeaveCardType.KAN
  595. else
  596. local txt = string.format("发牌类型为:"..sendCardType)
  597. --showTooltip(txt)
  598. return ""
  599. end
  600. end
  601. function ErWuRoomXiaoJuView:initOtherData()
  602. local roomInfo = app.room.roomInfo
  603. local winUserId = app.room.roomInfo.winUserId
  604. --规则
  605. local rule = ZPWanFa.getRuleInfo(roomInfo.strGameInfo)
  606. logD("ErWuRoomXiaoJuView:initOtherData", "rule", rule)
  607. self.ui.Items.Text_Rule:setText(rule)
  608. --时间
  609. self.ui.Items.Text_Time:setText(getTimeString())
  610. --房号
  611. self.ui.Items.Text_RoomNum:setText("房号:"..tostring(app.room.roomInfo.nShowTableId))
  612. end
  613. function ErWuRoomXiaoJuView:updateUserHead(nodeHead,nUserId, sex, headimgurl)
  614. setPlayerHeadImage(nUserId, headimgurl, nodeHead);
  615. end
  616. -- 查牌
  617. function ErWuRoomXiaoJuView:onClickChaPai()
  618. playBtnEffect()
  619. self:setVisible(false)
  620. end
  621. -- 下一局
  622. function ErWuRoomXiaoJuView:onClickNext()
  623. playBtnEffect()
  624. self.ui:sendMsg(app.room, "callReadyRequest");
  625. if self.nextCallBack then
  626. self.nextCallBack()
  627. end
  628. end
  629. function ErWuRoomXiaoJuView:onClickZongJieSuan()
  630. playBtnEffect()
  631. if self.nextCallBack then
  632. self.nextCallBack()
  633. end
  634. end
  635. function ErWuRoomXiaoJuView:getAHutypeTextUi(text)
  636. local hutext = cc.Text:createNode()
  637. hutext:setDefaults()
  638. local config = hutext:getFontConfig()
  639. config.fontSize = 22
  640. config.texColor = cc.c3b(255,240,179)--cc.c4b(251,213,130,255)
  641. hutext:setFontConfig(config)
  642. hutext:setText(tostring(text))
  643. return hutext
  644. end
  645. function ErWuRoomXiaoJuView:getXiaojiaUid()
  646. return app.room:getUserIdBySeatId(app.room.roomInfo.xiaoSeatId)
  647. end
  648. function ErWuRoomXiaoJuView:IsFengDing(huType)
  649. local ret = getNumBand(huType,ZPDef.HuType.FENGDING)
  650. if ret > 0 then
  651. return true
  652. end
  653. return false
  654. end
  655. --显示胡牌类型
  656. function ErWuRoomXiaoJuView:getHuTypesStr(huUid,huType)
  657. local strSpec = ""
  658. if huType > 0 then
  659. local ret = getNumBand(huType,ZPDef.HuType.TIAN_HU)
  660. if ret > 0 then
  661. strSpec = strSpec.."天胡x2 "
  662. end
  663. local ret = getNumBand(huType,ZPDef.HuType.LONG_HU)
  664. if ret > 0 then
  665. strSpec = strSpec.."龙胡x1 "
  666. end
  667. local ret = getNumBand(huType,ZPDef.HuType.TUO_HONG_HU)
  668. if ret > 0 then
  669. if huUid == self:getXiaojiaUid() then
  670. strSpec = strSpec.."坨坨红x1 "
  671. else
  672. strSpec = strSpec.."坨坨红x3 "
  673. end
  674. end
  675. local ret = getNumBand(huType,ZPDef.HuType.HEI_LONG_HU)
  676. if ret > 0 then
  677. strSpec = strSpec.."黑龙x1 "
  678. end
  679. local ret = getNumBand(huType,ZPDef.HuType.CHI_PIAO)
  680. if ret > 0 then
  681. strSpec = strSpec.."吃飘x1 "
  682. end
  683. local ret = getNumBand(huType,ZPDef.HuType.XIAO_HU)
  684. if ret > 0 then
  685. strSpec = strSpec.."小胡 "
  686. end
  687. local ret = getNumBand(huType,ZPDef.HuType.TUO_HEI_HU)
  688. if ret > 0 then
  689. if huUid == self:getXiaojiaUid() then
  690. strSpec = strSpec.."坨坨黑x1 "
  691. else
  692. strSpec = strSpec.."坨坨黑x3 "
  693. end
  694. end
  695. local ret = getNumBand(huType,ZPDef.HuType.BAO_HU)
  696. if ret > 0 then
  697. strSpec = strSpec.."报叫x1 "
  698. end
  699. end
  700. --另加番
  701. if app.room.roomInfo.fourHongNum > 0 or app.room.roomInfo.fourNormolNum > 0 then
  702. local num = app.room.roomInfo.fourHongNum + app.room.roomInfo.fourNormolNum
  703. strSpec = strSpec.."四张x"..num.." "
  704. end
  705. if app.room.roomInfo.threeHongNum > 0 or app.room.roomInfo.fourHongNum > 0 then
  706. local num = app.room.roomInfo.fourHongNum + app.room.roomInfo.threeHongNum
  707. strSpec = strSpec.."冲番牌x"..num.." "
  708. end
  709. return strSpec
  710. end
  711. return ErWuRoomXiaoJuView