Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

145 wiersze
4.4 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. function HandCard3D:createGroup(values, showType, viewId, groupIndex)
  10. local group = nil
  11. if showType and showType <= 5 then
  12. if showType == MJDefine.MJGroupType.MAnGang then
  13. group = require(MJDefine.MJConfig_3d.GROUP_MAGANG):new(values, viewId, groupIndex)
  14. else
  15. group = HandCard3D.super.createGroup(self, values, showType, viewId, groupIndex)
  16. end
  17. end
  18. if group and viewId == MJDefine.MyViewId then
  19. group:setLocalZOrder(4 - groupIndex)
  20. end
  21. return group
  22. end
  23. function HandCard3D:createGroupCards(arg, fromViewId)
  24. for _, v in pairs(arg) do
  25. if not fromViewId then
  26. fromViewId = v.fromViewId
  27. end
  28. local startPos = MJDefine.MJConfig_3d.HandCardStartPos[self._viewId]
  29. local group = self:createGroup(v.values, v.showType, self._viewId, table.nums(self._groupNodes) + 1)
  30. if group then
  31. local x = startPos.x + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][#self._groupNodes + 1].x
  32. local y = startPos.y + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][#self._groupNodes + 1].y
  33. if group and (v.opType == MJDefine.MJOperateType.OPREATE_PENG
  34. or v.opType == MJDefine.MJOperateType.OPREATE_ZHIGANG
  35. or v.opType == MJDefine.MJOperateType.OPREATE_BAGANG) then
  36. --设置吃碰杠来源
  37. group:setDirection(self._viewId,fromViewId)
  38. end
  39. group.opType = v.opType
  40. group:setPosition(cc.p(x, y))
  41. group:customRefresh(v)
  42. self:addChild(group)
  43. table.insert(self._groupNodes, group)
  44. end
  45. end
  46. self:refreshGroupZOrder()
  47. end
  48. function HandCard3D:sortHandCards()
  49. table.sort(
  50. self._handCardNodes,
  51. function(c1, c2)
  52. if c1:getValue() == 0x41 and c2:getValue() == 0x41 then
  53. return false
  54. elseif c1:getValue() == 0x41 then
  55. return true
  56. elseif c2:getValue() == 0x41 then
  57. return false
  58. else
  59. return c1:getValue() < c2:getValue()
  60. end
  61. end
  62. )
  63. end
  64. function HandCard3D:buGang(card, cardNum)
  65. local oldGroup = self:getGroup(card, {MJDefine.MJOperateType.OPREATE_BAGANG, MJDefine.MJOperateType.OPREATE_ZHIGANG, MJDefine.MJOperateType.OPREATE_ANGANG});
  66. if oldGroup then
  67. local cards = oldGroup:getCards();
  68. if cards and cards[4] then
  69. oldGroup:setCardNum(cardNum)
  70. oldGroup:customRefresh()
  71. end
  72. return ;
  73. else
  74. oldGroup=self:getGroup(card,{MJDefine.MJOperateType.OPREATE_PENG})
  75. end
  76. if not oldGroup then
  77. return
  78. end
  79. local fromViewId = oldGroup.fromViewId
  80. -- 杠牌对家,换成第四张
  81. --[[
  82. if app.room:getMaxPlayerCount() == 2 and fromViewId ~= 0 then
  83. fromViewId = 4
  84. end
  85. if app.room:getMaxPlayerCount() == 4 and fromViewId == 2 then
  86. fromViewId = 4
  87. end
  88. ]]
  89. local index = table.indexOf(self._groupNodes, oldGroup)
  90. table.remove(self._groupNodes, index)
  91. oldGroup:removeFromParent()
  92. local newGroup = self:createGroup({card, card, card, card}, MJDefine.MJGroupType.Gang, self._viewId,index)
  93. if not newGroup then
  94. return
  95. end
  96. newGroup.fromViewId = fromViewId
  97. newGroup.opType = MJDefine.MJOperateType.OPREATE_BAGANG
  98. table.insert(self._groupNodes, index, newGroup)
  99. local startPos = MJDefine.MJConfig_3d.HandCardStartPos[self._viewId]
  100. local x = startPos.x + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][index].x
  101. local y = startPos.y + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][index].y
  102. newGroup:setPosition(cc.p(x, y))
  103. newGroup:customRefresh(newGroup)
  104. self:addChild(newGroup)
  105. self:refreshGroupZOrder()
  106. end
  107. function HandCard3D:pushTing()
  108. self:clearAllTing()
  109. local tings = app.room.roomInfo.tings
  110. if tings then
  111. for value, v in pairs(tings) do
  112. for _, mj in pairs(self._handCardNodes) do
  113. if mj:getValue() == value then
  114. mj:setTing(true)
  115. end
  116. end
  117. end
  118. end
  119. end
  120. return HandCard3D