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.

105 lines
2.8 KiB

  1. local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJMessage = MJFramework.MJImport("mj.luaScript.Protocol.MJMessage")
  3. local MJSound = MJFramework.MJImport("mj.luaScript.MJSound")
  4. local Mahjong3DHandCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DHandCard")
  5. local HandCard3D = class("HandCard3D", Mahjong3DHandCard)
  6. function HandCard3D:ctor(...)
  7. HandCard3D.super.ctor(self, ...)
  8. end
  9. --- HandCard3D:onAfterCreateHandcards 创建手牌之后的处理
  10. function HandCard3D:onAfterCreateHandcards()
  11. HandCard3D.super.onAfterCreateHandcards(self)
  12. end
  13. function HandCard3D:onAfterCreateOpenHandcards()
  14. HandCard3D.super.onAfterCreateOpenHandcards(self)
  15. end
  16. -- 重写排序,让听用牌放在最左边
  17. function HandCard3D:sortHandCards()
  18. -- 拆分
  19. local temp = {}
  20. local tCard = {}
  21. local nCard = {}
  22. local qCard = {}
  23. for i, v in ipairs(self._handCardNodes) do
  24. if v:getIsTingYongCard() then
  25. table.insert(tCard, v)
  26. elseif v:getIsDingQueCard() or (v:getMJColorType() == self.queType) then
  27. table.insert(qCard, v)
  28. else
  29. table.insert(nCard, v)
  30. end
  31. end
  32. -- 按牌值顺序排序
  33. local function sortFun(c1, c2)
  34. return c1:getValue() < c2:getValue()
  35. end
  36. table.sort(tCard, sortFun)
  37. table.sort(nCard, sortFun)
  38. table.sort(qCard, sortFun)
  39. -- 添加到大表temp里面
  40. for i, v in ipairs(tCard) do
  41. table.insert(temp, v)
  42. end
  43. for i, v in ipairs(nCard) do
  44. table.insert(temp, v)
  45. end
  46. for i, v in ipairs(qCard) do
  47. table.insert(temp, v)
  48. end
  49. self._handCardNodes = temp
  50. end
  51. --发送出牌消息
  52. function HandCard3D:sendOutCard()
  53. app.room:dispatchEvent({name = MJDefine.MJEvent.checkIsNeedSendGuo})
  54. HandCard3D.super.sendOutCard(self)
  55. end
  56. --判断是否符合换三张规则
  57. function HandCard3D:checkIsInSwapRule()
  58. local roomInfo=app.room.roomInfo
  59. local gameInfo=json.decode(roomInfo.strGameInfo)
  60. logD("HandCard3D:gameInfo.swapcolourcard "..gameInfo.swapcolourcard)
  61. local selectNums = #self._selectCards
  62. logD("HandCard3D:checkIsInSwapRule1 "..selectNums)
  63. if selectNums ~= 3 then
  64. return false
  65. end
  66. --如果勾选了可换不同花色则不需要花色判断 只判断数量
  67. if tonumber(gameInfo.swapcolourcard)==1 and selectNums == 3 then
  68. return true
  69. end
  70. if not gameInfo.swapcolourcard or tonumber(gameInfo.swapcolourcard)==0 then
  71. local huase = self._selectCards[1]:getMJColorType()
  72. logD("HandCard3D:checkIsInSwapRule2 "..huase)
  73. for i,v in pairs(self._selectCards) do
  74. local tHuase = v:getMJColorType()
  75. logD("HandCard3D:checkIsInSwapRule3 "..tHuase)
  76. if tHuase ~= huase then
  77. return false
  78. end
  79. end
  80. logD("HandCard3D:checkIsInSwapRule4 ")
  81. return true
  82. end
  83. end
  84. return HandCard3D