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.

150 lines
5.1 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
  3. local yibinmajiangFlowView = class("yibinmajiangFlowView", cc.UIView);
  4. function yibinmajiangFlowView:ctor(data, desktopType)
  5. yibinmajiangFlowView.super.ctor(self);
  6. self.desktopType = MJDefine.DesktopType.TwoD;
  7. self.data = data or {};
  8. end
  9. function yibinmajiangFlowView:loadUI( )
  10. local ui = loadUI("mj_yibinmajiang/res/ui_fangjian/mj_yibinmajiang_flow.ui");
  11. self.ui = ui;
  12. self:addChild(ui);
  13. end
  14. function yibinmajiangFlowView:onEnter( )
  15. self:loadUI();
  16. self:initViews();
  17. self:initFlowView(self.data.detail);
  18. self:bindEvent(app.room, MJDefine.MJEvent.EVENT_XIAOJU_VIEW_SHOWED, handler(self, self.onEventXiaoJuViewShowed));
  19. self:bindEvent(app.room, MJDefine.MJEvent.EVENT_DAJU_VIEW_SHOWED, handler(self, self.onEventXiaoJuViewShowed));
  20. end
  21. function yibinmajiangFlowView:onEventXiaoJuViewShowed( )
  22. self:onBtnCloseClicked();
  23. end
  24. function yibinmajiangFlowView:initViews ()
  25. self.ui.Items.Button_Close:registerClick(handler(self, self.onBtnCloseClicked));
  26. self.ui.Items.ScrollView_Detail:hideAllBar();
  27. self.ui.Items.Layout_1:setTouchEnabled(true);
  28. end
  29. function yibinmajiangFlowView:createItem(data)
  30. local ui = loadUI("mj_yibinmajiang/res/ui_fangjian/mj_yibinmajiang_flow_item.ui");
  31. ui.Items.ScrollView_ItemDetail:hideAllBar();
  32. ui.Items.Text_Detail:setString(data.title or "");
  33. ui.Items.Text_HuFen:setString(data.huFen or 0);
  34. local color = data.huFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  35. ui.Items.Text_HuFen:setColor(color);
  36. ui.Items.Text_YuFen:setString(data.yuFen or 0);
  37. local color = data.yuFen >= 0 and cc.c3b(235,72,15) or cc.c3b(113,113,113);
  38. ui.Items.Text_YuFen:setColor(color);
  39. local mj = MJ:new(data.card, MJDefine.MJType.Out, MJDefine.MyViewId, self.desktopType);
  40. mj:setAnchorPoint(cc.p(0.5, 0.5));
  41. mj:setPositionY(25);
  42. mj:setScale(0.80);
  43. ui.Items.Layout_HuCard:addChild(mj);
  44. local nodes = {};
  45. for k, v in ipairs(data.seats) do
  46. if v and v ~= "" then
  47. local viewOrder = tonumber(v) + 1;
  48. local img = cc.ImageView:create();
  49. nodes[viewOrder] = img;
  50. end
  51. end
  52. local index = 0;
  53. for viewOrder, v in pairs(nodes) do
  54. index = index + 1;
  55. v:loadTexture(string.format("mj_yibinmajiang/res/zy_fangjian/player/yibinmajiang_seat_%s.png", viewOrder));
  56. v:setPosition(cc.p((index - 1) * 30 - (table.nums(data.seats) - 1) * 30 / 2 + 15, 25));
  57. ui.Items.Layout_Seats:addChild(v);
  58. end
  59. return ui;
  60. end
  61. function yibinmajiangFlowView:getOperateType(operateType)
  62. local operateTypeName ={
  63. [MJDefine.MJOperateType.OPREATE_CHUPAI] = "出牌",
  64. [MJDefine.MJOperateType.OPREATE_CHI] = "吃",
  65. [MJDefine.MJOperateType.OPREATE_PENG] = "碰",
  66. [MJDefine.MJOperateType.OPREATE_ZHIGANG] = "直杠",
  67. [MJDefine.MJOperateType.OPREATE_BAGANG] = "巴杠",
  68. [MJDefine.MJOperateType.OPREATE_ANGANG] = "暗杠",
  69. [MJDefine.MJOperateType.OPREATE_DIANPAOHU] = "点炮胡",
  70. [MJDefine.MJOperateType.OPREATE_ZIMOHU] = "自摸",
  71. [MJDefine.MJOperateType.OPREATE_GUOSHOUGANG] = "过手杠",
  72. [0] = "查叫",
  73. }
  74. return operateTypeName[operateType] or "";
  75. end
  76. function yibinmajiangFlowView:getPaiType( paiType )
  77. local str = "";
  78. for k, v in pairs(MJDefine.MJGamePaiType) do
  79. if getNumBand(paiType, v) > 0 then
  80. str = str .. " " .. MJDefine.MJGameHuStr[v];
  81. end
  82. end
  83. return str or "";
  84. end
  85. function yibinmajiangFlowView:getItemTitle (itemData)
  86. local strDuoGang = "多头";
  87. local duogang =json.decode(app.room.roomInfo:getGameRuleByKey("duogang"));
  88. if duogang == 1 then
  89. strDuoGang = "多头杠";
  90. elseif duogang == 2 then
  91. strDuoGang = "多头";
  92. end
  93. local opType = self:getOperateType(itemData.ot) or "";
  94. local paiType = self:getPaiType(itemData.ht) or "";
  95. local gangType = tonumber(itemData.gf) > 0 and string.format("%s+%s番", strDuoGang, itemData.gf) or "";
  96. return string.format("%s %s %s", opType, paiType, gangType);
  97. end
  98. function yibinmajiangFlowView:initFlowView( data )
  99. local scrollView = self.ui.Items.ScrollView_Detail;
  100. -- scrollView:removeAllChildren();
  101. local result = {};
  102. -- gs: 杠分 hs: 胡分 ht: 胡牌类型(自摸or点炮)可能要修改 gf: 杠番 ls: 萝卜分 ot: 操作类型,胡or 杠等 seat: 本次收费的座位id,多个;分割
  103. for k, v in ipairs(data) do
  104. local obj = {};
  105. obj.title = self:getItemTitle(v);
  106. obj.card = v.oc or 0;
  107. obj.huFen = v.hs;
  108. obj.yuFen = v.gs;
  109. obj.seats = string.split(v.seat, ";");
  110. table.insert(result, obj);
  111. end
  112. for k, v in ipairs(result) do
  113. local ui = self:createItem(v);
  114. scrollView:addChild(ui);
  115. end
  116. local size = scrollView:getContentSize();
  117. size.height = 70 * table.nums(result);
  118. scrollView:setInnerContainerSize(size);
  119. end
  120. function yibinmajiangFlowView:onBtnCloseClicked( )
  121. self:removeFromParent();
  122. self = nil;
  123. end
  124. return yibinmajiangFlowView;