Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

618 linhas
19 KiB

  1. local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJ = MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
  3. local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa")
  4. local CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD) -- 麻将牌
  5. local MJRoomXiaoJuView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomXiaoJuView")
  6. local yibinmajiangRoomXiaoJuView = class("yibinmajiangRoomXiaoJuView", MJRoomXiaoJuView)
  7. local MJ_WIDTH = 47
  8. local MJ_HAND_CARD_INIT_X = 130 -- 所有牌的起始位置
  9. local MJ_HAND_CARD_INIT_Y = 50 -- 手牌y轴
  10. local MJ_OPERATE_CARD_INIT_Y = 45 -- 操作牌y轴
  11. local MJ_GROUP_PADDING_X = 10 -- 麻将组牌组间x轴间隔
  12. local MJ_HANDCARD_PADDING_X = -38 -- 手牌麻将直接间隔(牌与牌)
  13. local MJ_OPERATE_PADDING_X = -3 -- 操作麻将直接间隔(牌与牌)
  14. local MJ_HU_X = 16 -- 胡牌麻将间隔
  15. local MJ_TING_START_PADDING_X = 0 -- 听牌的起始位置
  16. local MJ_TING_INTERVAL_X = 14 -- 各个听牌的间隔
  17. local MJ_HANDCARD_SCALE = 0.6 -- 手牌麻将的缩小值
  18. local MJ_OPERATE_SCALE = 0.75 -- 操作麻将的缩小值
  19. local IS_SHOW_ANGANG_CARD = false -- 暗杠牌是否要显示起来
  20. function yibinmajiangRoomXiaoJuView:ctor(...)
  21. yibinmajiangRoomXiaoJuView.super.ctor(self,...)
  22. self.desktopType = MJDefine.DesktopType.TwoD
  23. end
  24. function yibinmajiangRoomXiaoJuView:loadUI()
  25. local ui = loadUI("mj_yibinmajiang/res/ui_fangjian/mj_yibinmajiang_xiaoju_jiesuan.ui")
  26. self.ui = ui
  27. self:addChild(ui)
  28. end
  29. function yibinmajiangRoomXiaoJuView:onEnter()
  30. yibinmajiangRoomXiaoJuView.super.onEnter(self)
  31. self:initTingYongCard()
  32. end
  33. -- 初始化玩家信息
  34. function yibinmajiangRoomXiaoJuView:initPlayerView()
  35. local roomInfo=app.room.roomInfo
  36. self.ui.Items.Layout_Player:removeAllChildren()
  37. self.items={}
  38. for k,v in pairs(roomInfo.memberList) do
  39. local userId = app.room:getViewIdByUserId(v.nUserId)
  40. local nSeatId = app.room:getSeatIdByViewId(userId)
  41. local i = nSeatId+1
  42. local item=self:createPlayerItem()
  43. item.index = i;
  44. self:setPlayerItemInfo(item,v)
  45. self.items[i]=item
  46. end
  47. table.sort(self.items, function(a, b)
  48. return a.index < b.index
  49. end)
  50. for k, v in pairs(self.items or {}) do
  51. self.ui.Items.Layout_Player:addChild(self.items[k])
  52. end
  53. end
  54. -- 创建玩家面板
  55. function yibinmajiangRoomXiaoJuView:createPlayerItem()
  56. local ui=loadUI("mj_yibinmajiang/res/ui_fangjian/mj_yibinmajiang_xiaoju_item.ui")
  57. return ui
  58. end
  59. -- 设置单个玩家信息
  60. function yibinmajiangRoomXiaoJuView:setPlayerItemInfo(ui,player)
  61. local roomInfo=app.room.roomInfo
  62. local resultInfo=roomInfo.memberList
  63. local nodeBg = ui.Items["ImageView_ItemBg"]
  64. -- local nodeBg2 = ui.Items[bg2]
  65. -- local nodeLose = self.ui.Items[lose]
  66. local nodeHead = ui.Items["ImageView_Head"]
  67. local nodeName = ui.Items["Text_Name"]
  68. local nodeBenJu = ui.Items["TextBMFont_Score"]
  69. local bmFontScore = true
  70. if not nodeBenJu then
  71. nodeBenJu = ui.Items["Text_Score"]
  72. bmFontScore = false
  73. end
  74. local nodeHuType = ui.Items["ImageView_HuType"]
  75. local nodeHuIndex = ui.Items["ImageView_HuIndex"]
  76. local nodeBanker= ui.Items["ImageView_Banker"]
  77. local nodeResult= ui.Items["Text_ResultInfo"]
  78. local imgViewId = ui.Items["ImageView_ViewId"];
  79. local dpImageSeatId = ui.Items['ImageView_DPSeatId']
  80. local viewOrder = player.nSeatId + 1;
  81. imgViewId:loadTexture(string.format("mj_yibinmajiang/res/zy_fangjian/player/yibinmajiang_seat_%s.png", viewOrder));
  82. local color = (app.room:getMyUserId() == player.nUserId) and cc.c3b(255,243,176) or cc.c3b(230,192,117);
  83. local huStr = self:getHuInfo(player.paiType, player.subPaiType)
  84. local genStr = self:getGenInfo(player.genCount)
  85. local gangStr = self:getGangInfo(player.gangCount)
  86. -- 番型显示
  87. local infoStr = huStr .. genStr .. gangStr
  88. nodeResult:setText(infoStr)
  89. nodeResult:setColor(color);
  90. local userInfo = app.room:getUserInfo(player.nUserId)
  91. --先设置默认头像
  92. local width = nodeHead:getContentSize().width
  93. local nickname = ""
  94. if userInfo and userInfo.nickname then
  95. nickname = getSubStringNickname(userInfo.nickname)
  96. self:updateUserHead(nodeHead,player.nUserId, userInfo.sex, userInfo.headimgurl);
  97. end
  98. nodeName:setText(nickname)
  99. nodeHuType:setVisible(false)
  100. nodeHuIndex:setVisible(false)
  101. dpImageSeatId:setVisible(false)
  102. ui.Items.Text_FanShu:setVisible(false)
  103. -- if table.nums(player.huCards) > 0 then
  104. if next(player.huCards) and next(player.huCards[1]) and player.huCards[1].huCard and player.huCards[1].huCard > 0 then
  105. if player.huType > 0 and player.huIndex > 0 then
  106. -- 胡牌类型
  107. local huTypeTable = {
  108. [MJDefine.MJGameHuType.HU_ZIMO] = 'mj/res/ui/zy_fangjian/operate/mj_effect_zimo.png',
  109. [MJDefine.MJGameHuType.HU_DIANPAO] = 'mj/res/ui/zy_fangjian/operate/mj_effect_jiepao.png',
  110. [MJDefine.MJGameHuType.HU_QIANGGANG] = 'mj/res/ui/zy_fangjian/operate/mj_effect_hupai.png',
  111. }
  112. local huTypeImg = 'mj/res/ui/zy_fangjian/operate/mj_effect_hupai.png'
  113. huTypeImg = huTypeTable[player.huType] and huTypeTable[player.huType] or huTypeImg
  114. nodeHuType:loadTexture(huTypeImg)
  115. nodeHuType:setVisible(true)
  116. -- 胡牌顺序
  117. local huIndexTable = {
  118. [1] = 'mj/res/ui/zy_fangjian/operate/mj_effect_num1.png',
  119. [2] = 'mj/res/ui/zy_fangjian/operate/mj_effect_num2.png',
  120. [3] = 'mj/res/ui/zy_fangjian/operate/mj_effect_num3.png',
  121. }
  122. local huIndexImg = 'mj/res/ui/zy_fangjian/operate/mj_effect_num1.png'
  123. huIndexImg = huIndexTable[player.huIndex] and huIndexTable[player.huIndex] or huIndexImg
  124. nodeHuIndex:loadTexture(huIndexImg)
  125. nodeHuIndex:setVisible(true)
  126. -- 如果是点炮胡,则还要显示放炮玩家seatid
  127. if player.huType == MJDefine.MJGameHuType.HU_DIANPAO then
  128. local dpSeatId = player.dpId + 1
  129. dpImageSeatId:loadTexture(string.format("mj_yibinmajiang/res/zy_fangjian/player/yibinmajiang_seat_%s.png", dpSeatId))
  130. dpImageSeatId:setVisible(true)
  131. elseif player.huType == MJDefine.MJGameHuType.HU_ZIMO then
  132. -- 如果是自摸胡,则还要显示输的玩家seatid(根据当前胡的顺序来判断)
  133. local loseSeatId = {}
  134. for i, v in pairs(roomInfo:getHuIndexInfo()) do
  135. -- 没有胡牌,或者在本玩家胡之后的玩家都是要输自摸钱
  136. if v == 0 or v > player.huIndex then
  137. local seatId = app.room:getSeatIdByUserId(i) + 1 -- seatid是0-3,所以要加1
  138. table.insert(loseSeatId, seatId)
  139. end
  140. end
  141. local function sortFunction(a, b)
  142. return a < b
  143. end
  144. table.sort(loseSeatId, sortFunction)
  145. for i, v in ipairs(loseSeatId) do
  146. local node = dpImageSeatId:getCopied()
  147. node:loadTexture(string.format("mj_yibinmajiang/res/zy_fangjian/player/yibinmajiang_seat_%s.png", v))
  148. node:setVisible(true)
  149. node:setPositionX(dpImageSeatId:getPositionX() + node:getContentSize().width * (i-1))
  150. node:setPositionX(node:getPositionX() - (node:getContentSize().width/2)*(#loseSeatId - 1))
  151. dpImageSeatId:getParent():addChild(node)
  152. --[[
  153. tips:
  154. 这里坐标设置是先把全部都往右添加,如
  155. o
  156. oo
  157. ooo,
  158. 然后在根据当前index向左移动width/2个像素.
  159. ]]
  160. end
  161. end
  162. end
  163. -- 番数
  164. ui.Items.Text_FanShu:setVisible(true)
  165. ui.Items.Text_FanShu:setText(player.fanshu.."番")
  166. end
  167. --黄庄才会查叫和查花猪
  168. if roomInfo:getStopFlag() == MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
  169. if player.isDj == 1 then
  170. nodeHuType:loadTexture("mj/res/ui/zy_fangjian/operate/mj_effect_chajiao.png")
  171. nodeHuType:setVisible(true)
  172. nodeHuType:setPositionX(nodeHuType:getPositionX() + 15)
  173. nodeHuType:setScale(0.4)
  174. end
  175. end
  176. local bankSeatId = roomInfo:getBankSeatId();
  177. if app.room:getUserIdBySeatId(bankSeatId) ~= player.nUserId then
  178. nodeBanker:setVisible(false)
  179. end
  180. if app.room:getMyUserId() == player.nUserId then
  181. nodeBg:loadTexture("xj_my_bg.png",cc.TextureResType.plistType)
  182. --[[else
  183. nodeBg:loadTexture("xj_other_bg.png",cc.TextureResType.plistType)--]]
  184. end
  185. if tonumber(player.nTurnScore) > 0 then
  186. nodeBenJu:setText("+"..player.nTurnScore)
  187. else
  188. nodeBenJu:setText(player.nTurnScore)
  189. if tonumber(player.nTurnScore) < 0 and bmFontScore == true then
  190. nodeBenJu:setFntFile("res/fonts/dt_jian_num.fnt")
  191. end
  192. end
  193. -- 飘
  194. ui.Items.ImageView_Pos:setVisible(player.piaostate == 1)
  195. end
  196. -- 创建手牌
  197. function yibinmajiangRoomXiaoJuView:createHandCards(layer,arg,seatId)
  198. for k,v in pairs(arg) do
  199. local mj = CardClass:new(v.card, MJDefine.MyViewId, MJDefine.MJType.Stand, 10)
  200. mj:setScale(MJ_HANDCARD_SCALE)
  201. layer:addChild(mj)
  202. mj:setPosition(cc.p(self.initX[seatId],MJ_HAND_CARD_INIT_Y))
  203. self.initX[seatId]=self.initX[seatId]+mj:getContentSize().width+MJ_HANDCARD_PADDING_X
  204. end
  205. end
  206. -- 创建胡牌
  207. function yibinmajiangRoomXiaoJuView:createHuCard(layer,card,seatId)
  208. local mj = CardClass:new(card, MJDefine.MyViewId, MJDefine.MJType.Stand, 10)
  209. mj:setScale(MJ_HANDCARD_SCALE)
  210. layer:addChild(mj)
  211. mj:setPosition(cc.p(self.initX[seatId],MJ_HAND_CARD_INIT_Y))
  212. self.initX[seatId]=self.initX[seatId]+mj:getContentSize().width+MJ_HANDCARD_PADDING_X
  213. local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/mj_hu_flag.png")
  214. mj:addChild(flag)
  215. flag:setScale(2)
  216. flag:setPosition(cc.p(32,82))
  217. end
  218. -- 创建吃牌(碰牌也走这)
  219. function yibinmajiangRoomXiaoJuView:createChi(values)
  220. local node=cc.Layer:create()
  221. node:setAnchorPoint(cc.p(0.5,0.5))
  222. node:ignoreAnchorPointForPosition(false)
  223. local width=0
  224. local height=0
  225. for i=1,3 do
  226. if values[i] then
  227. local mj = CardClass:new(values[i], MJDefine.MyViewId, MJDefine.MJType.Operate, 10)
  228. mj:setScale(MJ_OPERATE_SCALE)
  229. node:addChild(mj)
  230. local mjWidth=mj:getContentSize().width * MJ_OPERATE_SCALE
  231. local mjHeight=mj:getContentSize().height * MJ_OPERATE_SCALE
  232. local x=mjWidth/2+(i-1)*(mjWidth+MJ_OPERATE_PADDING_X)
  233. local y=mjHeight/2
  234. width=width+mjWidth
  235. height=mjHeight
  236. mj:setPosition(x,y)
  237. end
  238. end
  239. node:setContentSize(cc.size(width,height))
  240. return node
  241. end
  242. -- 创建杠牌
  243. function yibinmajiangRoomXiaoJuView:createGang(values, cardNum)
  244. local node=cc.Layer:create()
  245. node:setAnchorPoint(cc.p(0.5,0.5))
  246. node:ignoreAnchorPointForPosition(false)
  247. local width=0
  248. local height=0
  249. for i=1,4 do
  250. if values[i] then
  251. local mj = CardClass:new(values[i], MJDefine.MyViewId, MJDefine.MJType.Operate, 10)
  252. mj:setScale(MJ_OPERATE_SCALE)
  253. node:addChild(mj)
  254. local mjWidth=mj:getContentSize().width * MJ_OPERATE_SCALE
  255. local mjHeight=mj:getContentSize().height * MJ_OPERATE_SCALE
  256. if i <= 3 then
  257. local x=mjWidth/2+(i-1)*(mjWidth+MJ_OPERATE_PADDING_X)
  258. local y=mjHeight/2
  259. width=width+mjWidth
  260. height=mjHeight
  261. mj:setPosition(x,y)
  262. else
  263. local x = mjWidth/2+(2-1)*(mjWidth+MJ_OPERATE_PADDING_X)
  264. local y=mjHeight/2 + 12
  265. height = mjHeight
  266. mj:setPosition(x,y)
  267. end
  268. mj:setTag(1000 + i);
  269. end
  270. end
  271. node:setContentSize(cc.size(width,height))
  272. return node
  273. end
  274. -- 创建暗杠牌
  275. function yibinmajiangRoomXiaoJuView:createAnGang(values, cardNum)
  276. local node=cc.Layer:create()
  277. node:setAnchorPoint(cc.p(0.5,0.5))
  278. node:ignoreAnchorPointForPosition(false)
  279. local width=0
  280. local height=0
  281. for i=1,4 do
  282. if values[i] then
  283. local mj = CardClass:new(values[i], MJDefine.MyViewId, MJDefine.MJType.Operate, 10)
  284. mj:setScale(MJ_OPERATE_SCALE)
  285. -- 暗杠盖牌
  286. if not IS_SHOW_ANGANG_CARD then
  287. if i <= 3 then
  288. mj:setOperateBackImage()
  289. end
  290. end
  291. node:addChild(mj)
  292. local mjWidth=mj:getContentSize().width * MJ_OPERATE_SCALE
  293. local mjHeight=mj:getContentSize().height * MJ_OPERATE_SCALE
  294. if i <= 3 then
  295. local x=mjWidth/2+(i-1)*(mjWidth+MJ_OPERATE_PADDING_X)
  296. local y=mjHeight/2
  297. width=width+mjWidth
  298. height=mjHeight
  299. mj:setPosition(x,y)
  300. else
  301. local x=mjWidth/2+(2-1)*(mjWidth+MJ_OPERATE_PADDING_X) - 1
  302. local y=mjHeight/2 + 16
  303. height=mjHeight
  304. mj:setPosition(x, y);
  305. end
  306. end
  307. end
  308. node:setContentSize(cc.size(width,height))
  309. return node
  310. end
  311. -- 创建巴杠,直接走杠牌创建
  312. function yibinmajiangRoomXiaoJuView:createBaGang(values, cardNum)
  313. local node = self:createGang(values, cardNum)
  314. local mj = node:getChildByTag(1000 + 4)
  315. return node
  316. end
  317. -- 创建牌组
  318. function yibinmajiangRoomXiaoJuView:createGroupCards(layer,arg,seatId)
  319. -- 定义牌组类型需要调用的创建方法
  320. local handlers={
  321. [MJDefine.MJGroupType.Chi]=handler(self,self.createChi),
  322. [MJDefine.MJGroupType.Peng]=handler(self,self.createChi),
  323. [MJDefine.MJGroupType.Gang]=handler(self,self.createGang),
  324. [MJDefine.MJGroupType.AnGang]=handler(self,self.createAnGang),
  325. [MJDefine.MJGroupType.BaGang] = handler(self, self.createBaGang),
  326. [MJDefine.MJGroupType.Fei] = handler(self, self.createChi),
  327. [MJDefine.MJGroupType.Ti] = handler(self, self.createChi),
  328. }
  329. for k,v in pairs(arg) do
  330. if handlers[v.opType] then
  331. local group=handlers[v.opType](v.values, v.cardNum)
  332. local w=(group:getContentSize().width-MJ_WIDTH)/2
  333. group:setPosition(cc.p(self.initX[seatId]+w,MJ_OPERATE_CARD_INIT_Y))
  334. if k<#arg then
  335. self.initX[seatId]=self.initX[seatId]+group:getContentSize().width+MJ_GROUP_PADDING_X
  336. else
  337. self.initX[seatId]=self.initX[seatId]+group:getContentSize().width+MJ_GROUP_PADDING_X
  338. end
  339. layer:addChild(group)
  340. end
  341. end
  342. end
  343. -- 获取组合牌组
  344. function yibinmajiangRoomXiaoJuView:getChangeGruopDatas(g)
  345. -- dump(g, "getChangeGruopDatas")
  346. local opType=MJDefine.MJOperateToGroupType[g.opType]
  347. local showType=MJDefine.MJOperateToGroupType[g.opType]
  348. local opCard=g.opCard
  349. local cardNum = 3
  350. local fromViewId = nil
  351. local targetSeatId = g.targetSeatId -- 操作位置座位号
  352. local fromUserId = g.opUserId or g.fromUserId -- 触发操作玩家
  353. local redNum = g.useRedNum
  354. local redCard = g.lziCard
  355. local temp = {
  356. MJDefine.MJGroupType.Gang,
  357. MJDefine.MJGroupType.BaGang,
  358. MJDefine.MJGroupType.AnGang
  359. }
  360. -- 如果是杠,则为4张
  361. for i, v in ipairs(temp) do
  362. if v == opType then
  363. cardNum = 4
  364. break
  365. end
  366. end
  367. if fromUserId<=0 or targetSeatId==nil then
  368. else
  369. fromViewId = app.room:transPos( targetSeatId, app.room:getSeatIdByUserId(fromUserId))
  370. --判断是否是对面玩家,对面玩家的话要做一次翻转
  371. local opViewId = app.room:getViewIdBySeatId(targetSeatId)
  372. if opViewId == 2 then --对面
  373. if fromViewId==1 then fromViewId = 3
  374. elseif fromViewId==3 then fromViewId = 1 end
  375. end
  376. --三人玩只有上下家
  377. if app.room:getMaxPlayerCount()==3 and fromViewId==2 then fromViewId = 3 end
  378. if app.room:getMaxPlayerCount()==2 and fromViewId~=0 then
  379. if showType == MJDefine.MJGroupType.Peng then
  380. fromViewId = 2
  381. else
  382. fromViewId = 4
  383. end
  384. end
  385. end
  386. -- 组合一下牌
  387. local group={
  388. opType=opType,
  389. showType=showType,
  390. values={},
  391. opCard = opCard,
  392. cardNum = cardNum,
  393. fromViewId = fromViewId
  394. }
  395. if MJDefine.MJGroupType.Chi==showType then
  396. elseif MJDefine.MJGroupType.Peng==showType then
  397. group.values={opCard,opCard,opCard}
  398. elseif MJDefine.MJGroupType.Fei==showType then
  399. for i = 1, 3 do
  400. if i <= redNum then
  401. table.insert(group.values, redCard)
  402. else
  403. table.insert(group.values, opCard)
  404. end
  405. end
  406. elseif MJDefine.MJGroupType.Ti==showType then
  407. group.values={opCard,opCard,opCard}
  408. else
  409. group.values={opCard,opCard,opCard,opCard}
  410. end
  411. return group
  412. end
  413. -- 组织创建牌
  414. function yibinmajiangRoomXiaoJuView:initWeaveCard()
  415. local roomInfo=app.room.roomInfo
  416. self.initX={}
  417. for k,v in pairs(roomInfo.memberList) do
  418. local userId = app.room:getViewIdByUserId(v.nUserId)
  419. local nSeatId = app.room:getSeatIdByViewId(userId)
  420. local i = nSeatId+1
  421. local groups={}
  422. for _, group in pairs(v.operates) do
  423. table.insert(groups, self:getChangeGruopDatas(group))
  424. end
  425. self.initX[i]=MJ_HAND_CARD_INIT_X
  426. self:createGroupCards(self.items[i].Items.Layout_Player,groups,i)
  427. self.initX[i] = self.initX[i] + MJ_GROUP_PADDING_X * 2
  428. self:createHandCards(self.items[i].Items.Layout_Player,v.handCards,i)
  429. -- 判断有胡牌并且有值
  430. if next(v.huCards) and next(v.huCards[1]) and v.huCards[1].huCard and v.huCards[1].huCard > 0 then
  431. self.initX[i]=self.initX[i]+MJ_HU_X
  432. self:createHuCard(self.items[i].Items.Layout_Player,v.huCards[1].huCard,i) -- protol那边是以表形式存储的,所以直接取第一个
  433. end
  434. end
  435. end
  436. -- 其他信息
  437. function yibinmajiangRoomXiaoJuView:initOther()
  438. local roomInfo = app.room.roomInfo
  439. self.ui.Items.Text_Round:setText("局数:"..roomInfo.nGameStartCount..'/'..roomInfo.nTotalGameNum)
  440. --规则
  441. local ruleAll = MJWanFa.getWanFaInfo(roomInfo:getStrGameInfo())
  442. -- self.ui.Items.Text_Rule:setText(ruleAll)
  443. local item = self.ui.Items.Text_Rule:getCopied()
  444. item:setVisible(true)
  445. item:setText(ruleAll)
  446. self.ui.Items.ListView:addChild(item)
  447. self.ui.Items.ListView:hideAllBar()
  448. self.ui.Items.ListView:getInnerContainer():setAutoSize(true)
  449. self.ui.Items.ListView:requestDoLayout();
  450. self.ui.Items.ListView:doLayout();
  451. --时间
  452. self.ui.Items.Text_Time:setText(os.date("%m-%d %X"))--(getTimeString())
  453. --房号
  454. self.ui.Items.Text_RoomNum:setText("房号:" .. roomInfo:getShowTableId());
  455. if roomInfo:getStopFlag() == MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
  456. self.ui.Items.ImageView_Title:loadTexture("xj_liuju.png",cc.TextureResType.plistType)
  457. end
  458. end
  459. -- 初始化听用牌
  460. function yibinmajiangRoomXiaoJuView:initTingYongCard()
  461. local roomInfo = app.room.roomInfo
  462. local benjinCard = roomInfo:getBenJinCard()
  463. if not benjinCard then
  464. return
  465. end
  466. local tingCardInfo = roomInfo:getTingYongCard()
  467. local prevValue, nextValue = MJDefine.getPrevAndNextValue(benjinCard)
  468. -- local CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD)
  469. local temp = {prevValue, benjinCard, nextValue}
  470. for i=1,3 do
  471. if temp[i] > 0 then
  472. local mj = CardClass:new(temp[i], MJDefine.MyViewId, MJDefine.MJType.Stand, 10)
  473. mj:setScale(MJ_HANDCARD_SCALE)
  474. mj:setAnchorPoint(cc.p(0, 0))
  475. self.ui.Items.Layout_TingYongCard:addChild(mj)
  476. local mjWidth = mj:getContentSize().width * MJ_HANDCARD_SCALE
  477. local mjHeight = mj:getContentSize().height * MJ_HANDCARD_SCALE
  478. local x = mjWidth * (i - 1) + MJ_TING_START_PADDING_X + MJ_TING_INTERVAL_X
  479. mj:setPosition(x, -4)
  480. for _, j in ipairs(tingCardInfo) do
  481. if temp[i] == j.card then
  482. mj:setTingColor()
  483. break
  484. end
  485. end
  486. end
  487. end
  488. end
  489. -- 获得胡牌类型内容 (huType胡牌类型, subHuType胡牌子类型)
  490. function yibinmajiangRoomXiaoJuView:getHuInfo(huType, subHuType)
  491. local str = ''
  492. if not huType or not subHuType then
  493. return str
  494. end
  495. -- 胡牌类型
  496. for k,v in pairs(MJDefine.MJGamePaiType) do
  497. local newType = getNumBand(huType, v)
  498. if newType > 0 then
  499. str = str .. ' ' .. MJDefine.MJGameHuStr[v]
  500. end
  501. end
  502. -- 胡牌子类型
  503. for k,v in pairs(MJDefine.MJGameSubPaiType) do
  504. local newType = getNumBand(subHuType, v)
  505. if newType > 0 then
  506. str = str .. ' ' .. MJDefine.MJGameSubHuStr[v]
  507. end
  508. end
  509. return str
  510. end
  511. -- 获得根数
  512. function yibinmajiangRoomXiaoJuView:getGenInfo(genCount)
  513. local str = ''
  514. if not genCount then
  515. return str
  516. end
  517. if genCount > 0 then
  518. str = str .. ' ' .. genCount .. '根'
  519. end
  520. return str
  521. end
  522. -- 获得杠数
  523. function yibinmajiangRoomXiaoJuView:getGangInfo(gangCount)
  524. local str = ''
  525. if not gangCount then
  526. return str
  527. end
  528. if gangCount > 0 then
  529. str = str .. ' ' .. gangCount .. '杠'
  530. end
  531. return str
  532. end
  533. return yibinmajiangRoomXiaoJuView