選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

229 行
7.7 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
  3. local huamajiangFlowView = class("huamajiangFlowView", cc.UIView);
  4. function huamajiangFlowView:ctor(data, desktopType)
  5. huamajiangFlowView.super.ctor(self);
  6. self.desktopType = MJDefine.DesktopType.TwoD;
  7. self.data = data or {};
  8. end
  9. function huamajiangFlowView:loadUI( )
  10. local ui = loadUI("mj_huamajiang/res/ui_fangjian/mj_huamajiang_flow.ui");
  11. self.ui = ui;
  12. self:addChild(ui);
  13. end
  14. function huamajiangFlowView:onEnter( )
  15. self:loadUI();
  16. self:initViews();
  17. self:initFlowView(self.data.detail);
  18. self:initLuoBoView(self.data.luoboCards);
  19. self:bindEvent(app.room, MJDefine.MJEvent.EVENT_XIAOJU_VIEW_SHOWED, handler(self, self.onEventXiaoJuViewShowed));
  20. self:bindEvent(app.room, MJDefine.MJEvent.EVENT_DAJU_VIEW_SHOWED, handler(self, self.onEventXiaoJuViewShowed));
  21. end
  22. function huamajiangFlowView:onEventXiaoJuViewShowed( )
  23. self:onBtnCloseClicked();
  24. end
  25. function huamajiangFlowView:initViews ()
  26. self.ui.Items.Button_Close:registerClick(handler(self, self.onBtnCloseClicked));
  27. self.ui.Items.ScrollView_Detail:hideAllBar();
  28. self.ui.Items.ScrollView_LuoBo:hideAllBar();
  29. self.ui.Items.Layout_1:setTouchEnabled(true);
  30. --标题根据玩法修改
  31. local gamerule = app.room.roomInfo:getGameRuleByKey("gamerule");
  32. --三副牌玩法
  33. self.ui.Items.Text_Title_Hu:setVisible(gamerule ~= 2)
  34. self.ui.Items.Text_Title_LongFen:setVisible(gamerule == 2)
  35. self.ui.Items.Text_Title_HuLong:setVisible(gamerule == 2)
  36. end
  37. function huamajiangFlowView:createItem(data)
  38. local gamerule = app.room.roomInfo:getGameRuleByKey("gamerule");
  39. local ui
  40. if gamerule == 2 then
  41. ui = loadUI("mj_huamajiang/res/ui_fangjian/mj_huamajiang_flow_three_item.ui");
  42. ui.Items.Text_LongFen:setString(data.longFen or "");
  43. local color = data.longFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  44. ui.Items.Text_LongFen:setColor(color);
  45. else
  46. ui = loadUI("mj_huamajiang/res/ui_fangjian/mj_huamajiang_flow_item.ui");
  47. end
  48. ui.Items.ScrollView_ItemDetail:hideAllBar();
  49. ui.Items.Text_Detail:setString(data.title or "");
  50. ui.Items.Text_HuFen:setString(data.huFen or 0);
  51. local color = data.huFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  52. ui.Items.Text_HuFen:setColor(color);
  53. ui.Items.Text_LuoBoFen:setString(data.luoboFen or 0);
  54. local color = data.luoboFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  55. ui.Items.Text_LuoBoFen:setColor(color);
  56. ui.Items.Text_YuFen:setString(data.yuFen or 0);
  57. local color = data.yuFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  58. ui.Items.Text_YuFen:setColor(color);
  59. local mj = MJ:new(data.card, MJDefine.MJType.Out, MJDefine.MyViewId, self.desktopType);
  60. mj:setAnchorPoint(cc.p(0.5, 0.5));
  61. mj:setPositionY(25);
  62. mj:setScale(0.80);
  63. ui.Items.Layout_HuCard:addChild(mj);
  64. local nodes = {};
  65. for k, v in ipairs(data.seats) do
  66. if v and v ~= "" then
  67. local viewOrder = tonumber(v) + 1;
  68. local img = cc.ImageView:create();
  69. nodes[viewOrder] = img;
  70. end
  71. end
  72. local index = 0;
  73. for viewOrder, v in pairs(nodes) do
  74. index = index + 1;
  75. v:loadTexture(string.format("mj_huamajiang/res/zy_fangjian/player/huamajiang_seat_%s.png", viewOrder));
  76. v:setPosition(cc.p((index - 1) * 30 - (table.nums(data.seats) - 1) * 30 / 2 + 15, 25));
  77. ui.Items.Layout_Seats:addChild(v);
  78. end
  79. return ui;
  80. end
  81. function huamajiangFlowView:getLongType(longFen, longCount)
  82. local str = "";
  83. if longFen > 0 then
  84. str = str.."龙牌"
  85. elseif longFen < 0 then
  86. str = str.."被龙牌"
  87. end
  88. if longCount > 0 then
  89. str = str.." "..longCount.."条神龙"
  90. end
  91. return str or "";
  92. end
  93. function huamajiangFlowView:getOperateType(operateType)
  94. local operateTypeName ={
  95. [MJDefine.MJOperateType.OPREATE_CHUPAI] = "出牌",
  96. [MJDefine.MJOperateType.OPREATE_CHI] = "吃",
  97. [MJDefine.MJOperateType.OPREATE_PENG] = "碰",
  98. [MJDefine.MJOperateType.OPREATE_ZHIGANG] = "直杠",
  99. [MJDefine.MJOperateType.OPREATE_BAGANG] = "巴杠",
  100. [MJDefine.MJOperateType.OPREATE_ANGANG] = "暗杠",
  101. [MJDefine.MJOperateType.OPREATE_DIANPAOHU] = "点炮胡",
  102. [MJDefine.MJOperateType.OPREATE_ZIMOHU] = "自摸",
  103. [MJDefine.MJOperateType.OPREATE_GUOSHOUGANG] = "过手杠",
  104. [0] = "查叫",
  105. }
  106. return operateTypeName[operateType] or "";
  107. end
  108. function huamajiangFlowView:getPaiType( paiType )
  109. local str = "";
  110. for k, v in pairs(MJDefine.MJGamePaiType) do
  111. if getNumBand(paiType, v) > 0 then
  112. str = str .. " " .. MJDefine.MJGameHuStr[v];
  113. end
  114. end
  115. return str or "";
  116. end
  117. function huamajiangFlowView:getItemTitle (itemData)
  118. local strDuoGang = "多头";
  119. local duogang =json.decode(app.room.roomInfo:getGameRuleByKey("duogang"));
  120. if duogang == 1 then
  121. strDuoGang = "多头杠";
  122. elseif duogang == 2 then
  123. strDuoGang = "多头";
  124. end
  125. local opType = self:getOperateType(itemData.ot) or "";
  126. local paiType = self:getPaiType(itemData.ht) or "";
  127. local gangType = tonumber(itemData.gf) > 0 and string.format("%s+%s番", strDuoGang, itemData.gf) or "";
  128. local longType = self:getLongType(itemData.ss, itemData.sl) or "";
  129. return string.format("%s%s%s%s", opType, paiType, gangType, longType);
  130. end
  131. function huamajiangFlowView:initFlowView( data )
  132. local scrollView = self.ui.Items.ScrollView_Detail;
  133. -- scrollView:removeAllChildren();
  134. local result = {};
  135. -- gs: 杠分 hs: 胡分 ht: 胡牌类型(自摸or点炮)可能要修改 gf: 杠番 ls: 萝卜分 ot: 操作类型,胡or 杠等 seat: 本次收费的座位id,多个;分割
  136. for k, v in ipairs(data) do
  137. local obj = {};
  138. obj.title = self:getItemTitle(v);
  139. obj.card = v.oc or 0;
  140. obj.huFen = v.hs;
  141. obj.yuFen = v.gs;
  142. obj.luoboFen = v.ls;
  143. obj.seats = string.split(v.seat, ";");
  144. obj.longFen = v.ss
  145. table.insert(result, obj);
  146. end
  147. for k, v in ipairs(result) do
  148. local ui = self:createItem(v);
  149. scrollView:addChild(ui);
  150. end
  151. local size = scrollView:getContentSize();
  152. size.height = 70 * table.nums(result);
  153. scrollView:setInnerContainerSize(size);
  154. end
  155. function huamajiangFlowView:initLuoBoView(data)
  156. local scrollView = self.ui.Items.ScrollView_LuoBo;
  157. local rowCount = 18;
  158. local maxRow = math.ceil(table.nums(data) / rowCount);
  159. local index = 0;
  160. local cardScale = 0.9;
  161. for card, count in pairs(data) do
  162. index = index + 1;
  163. local mj = MJ:new(card, MJDefine.MJType.Out, MJDefine.MyViewId, self.desktopType);
  164. local size = mj:getContentSize();
  165. size.width = size.width * cardScale;
  166. size.height = size.height * cardScale;
  167. local row = math.ceil( index / rowCount );
  168. local order = index % rowCount;
  169. order = order == 0 and rowCount or order;
  170. local x = (order - 1) * (size.width + 15) + size.width / 2 + 20;
  171. local y = 60;
  172. mj:setPosition(cc.p(x, y));
  173. mj:setScale(cardScale);
  174. mj:setVisible(true);
  175. local txtCount = cc.Text:createNode()
  176. txtCount:setDefaults()
  177. local config = txtCount:getFontConfig()
  178. config.fontSize = 24;
  179. config.texColor = cc.c4b(235, 72, 15, 255);
  180. txtCount:setFontConfig(config);
  181. txtCount:setString(count);
  182. txtCount:setAnchorPoint(cc.p(0, 0));
  183. txtCount:setPosition(cc.p(size.width / 2 - 5, -30))
  184. mj:addChild(txtCount);
  185. scrollView:addChild(mj);
  186. end
  187. end
  188. function huamajiangFlowView:onBtnCloseClicked( )
  189. self:removeFromParent();
  190. self = nil;
  191. end
  192. return huamajiangFlowView;