25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.1 KiB

  1. require("luaScript.Views.Room.RoomFunctions")
  2. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  3. local MJRoomView = MJFramework.MJFrameworkClassImprot("mj_xzdd.luaScript.Views.Room.xzddRoomView")
  4. local xzdd2rRoomView = class("xzdd2rRoomView", MJRoomView)
  5. function xzdd2rRoomView:ctor()
  6. xzdd2rRoomView.super.ctor(self)
  7. end
  8. -- 换牌张数
  9. function xzdd2rRoomView:getSwapCardCount()
  10. local gameInfo = json.decode(app.room.roomInfo.strGameInfo)
  11. local swapcard = tonumber(gameInfo.swapcard) or 4
  12. print('swapcard->', swapcard)
  13. return swapcard
  14. end
  15. --换三张,服务器会通过0x8122通知换牌(过滤一下数据,换3换4都为4张牌,但换3的第4张牌数值为0)
  16. function xzdd2rRoomView:onNoticeSwapCardResponse(response)
  17. local function runNoticeSwapCard(onEnd)
  18. logD("xzdd2rRoomView:onNoticeSwapCardResponse")
  19. local data = response.response
  20. self:showSwapCard(true)
  21. self.playerHandCards[MJDefine.MyViewId]:initSwapCardTouchEvent()
  22. --弹出推荐牌
  23. self.playerHandCards[MJDefine.MyViewId]:resetHandCards()
  24. -- 过滤0值
  25. local swapDatas = clone(data.swapCards.Datas)
  26. for i = #swapDatas, 1, -1 do
  27. if swapDatas[i].card == 0 then
  28. table.remove(swapDatas, i)
  29. end
  30. end
  31. self.playerHandCards[MJDefine.MyViewId]:selectCardsByCards(data.swapCards)
  32. self.swapCard.Items.Button_sure:setEnabled(true)
  33. if onEnd then
  34. onEnd()
  35. end
  36. end
  37. logD("xzdd2rRoomView:runNoticeSwapCard")
  38. self:addCallBack(runNoticeSwapCard)
  39. end
  40. function xzdd2rRoomView:showSwapCard(isOpered)--是否已经操作过
  41. xzdd2rRoomView.super.showSwapCard(self, isOpered)
  42. local txtTable = {
  43. [3] = '选择以下三张 底牌',
  44. [4] = '选择以下四张 底牌',
  45. }
  46. self.swapCard.Items.Text_tip1:setText(txtTable[self:getSwapCardCount()])
  47. end
  48. --换三张成功后的信息
  49. function xzdd2rRoomView:onChangeCardInfo(response)
  50. local function runChangeCardInfo(onEnd)
  51. logD("xzddRoomView:onChangeCardInfo")
  52. self:hideSwapCard()
  53. local data = response.response
  54. self:showSwapDirection(data.swapType)
  55. for i,v in pairs(data.swapCards) do
  56. for i=1,4 do
  57. if v.card ~= 0 then
  58. if i == MJDefine.MyViewId and self.playerHandCards[MJDefine.MyViewId] then
  59. self.playerHandCards[MJDefine.MyViewId]:onGetCard(nil,tonumber(v.card),true)
  60. elseif self.playerHandCards[i] then
  61. self.playerHandCards[i]:onGetCard(nil,0,true)
  62. end
  63. end
  64. end
  65. end
  66. self.playerHandCards[MJDefine.MyViewId]:resetHandCards()
  67. for i=1,4 do
  68. if self.playerHandCards[i] then
  69. self.playerHandCards[i]:deleteSwapCards()
  70. end
  71. end
  72. self.playerHandCards[MJDefine.MyViewId]:removeTouchEventOnly()
  73. --两人麻将没有定缺,2D金黄大换三张后不能出牌,这里初始化一下touch事件
  74. self.playerHandCards[MJDefine.MyViewId]:initTouchEvent()
  75. for i,v in pairs(data.swapCards) do
  76. local handCards = self.playerHandCards[MJDefine.MyViewId]:getHandCardNodes() or {}
  77. if v.card ~= 0 then
  78. for j,mjCard in pairs(handCards) do
  79. if mjCard:getValue() == tonumber(v.card) and mjCard:getSelected() ~= MJDefine.MJStatus.Select then
  80. --local mjCard = self.playerHandCards[MJDefine.MyViewId]:getMjByValue(tonumber(v.card))
  81. --if mjCard and mjCard:getSelected() ~= MJDefine.MJStatus.Select then
  82. mjCard:setSelected(MJDefine.MJStatus.Select)
  83. mjCard:recordPostion()
  84. local initPos = mjCard:getPosition()
  85. local toPos = cc.p(initPos.x, initPos.y + 25)
  86. mjCard:setPosition(toPos)
  87. mjCard:runDeSelectAnimationWithTime(1.0)
  88. mjCard:runAction(cc.Sequence:create(cc.DelayTime:create(1.0),cc.CallFunc:create(function()
  89. mjCard:setSelected(MJDefine.MJStatus.Normal)
  90. end)))
  91. break
  92. end
  93. --end
  94. end
  95. end
  96. end
  97. --[[self:runAction(cc.Sequence:create(cc.DelayTime:create(1.0),cc.CallFunc:create(function()
  98. self.playerHandCards[MJDefine.MyViewId]:initTouchEvent()
  99. end)))--]]
  100. if onEnd then
  101. onEnd()
  102. end
  103. end
  104. logD("xzddRoomView:runChangeCardInfo--------")
  105. self:addCallBack(runChangeCardInfo)
  106. end
  107. -- 强制更改为对家
  108. function xzdd2rRoomView:showSwapDirection(dir)
  109. if dir then
  110. dir = 2
  111. end
  112. xzdd2rRoomView.super.showSwapDirection(self, dir)
  113. end
  114. return xzdd2rRoomView