Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

164 строки
5.2 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local CommonHuCardView = require("mj.luaScript.Common.2d.CommonHuCardView")
  3. local Mahjong3DHuCardView = class("Mahjong3DHuCardView", CommonHuCardView)
  4. function Mahjong3DHuCardView:ctor(viewId)
  5. Mahjong3DHuCardView.super.ctor(self, viewId)
  6. end
  7. -- todo lwq xueliu begin
  8. function Mahjong3DHuCardView:createXueliuHuCard(value, viewId, cardIndex)
  9. -- local Mahjong3DCard = require("mj.luaScript.Common.3d.Mahjong3DCard")
  10. local Mahjong3DCard = require(MJDefine.MJConfig_3d.MAHJONG_CARD)
  11. local card = Mahjong3DCard:new(value, viewId, MJDefine.MJConfig_3d.MJType.Out, cardIndex)
  12. return card
  13. end
  14. function Mahjong3DHuCardView:getXueliuHuCardPosition(mjCard, mjIndex)
  15. local viewId = self:getViewId()
  16. local offsetConfig = MJDefine.MJConfig_3d.OutCardOffsetConfig[viewId]
  17. local startPos = MJDefine.MJConfig_3d.XueliuHuCardStartPos[viewId]
  18. local rowCount = 11
  19. if app.room:getMaxPlayerCount() == 2 then
  20. startPos = MJDefine.MJConfig_3d.XueliuHuCardStartPos2[viewId]
  21. offsetConfig = MJDefine.MJConfig_3d.OutCardOffsetConfig2[viewId]
  22. rowCount = 19
  23. end
  24. local row = math.ceil( mjIndex / rowCount )
  25. local col = mjIndex % rowCount
  26. col = (col == 0) and rowCount or col
  27. local offsetX = offsetConfig[row][col].x
  28. local offsetY = offsetConfig[row][col].y
  29. local x = startPos.x + offsetX
  30. local y = startPos.y + offsetY
  31. return x, y
  32. end
  33. function Mahjong3DHuCardView:refreshXueliuHuZOrder()
  34. if app.room:getMaxPlayerCount() == 2 then
  35. self:refreshXueliuHuZOrder2()
  36. return
  37. end
  38. local viewId = self:getViewId()
  39. for cardIndex, card in ipairs(self._huCardNodes or {}) do
  40. local row = math.ceil( cardIndex / 11 )
  41. local col = cardIndex % 11
  42. col = (col == 0) and 11 or col
  43. local zorder = col
  44. if viewId == 1 then
  45. zorder = (3 - row) * 10 - col
  46. elseif viewId == 2 then
  47. zorder = 6 - col
  48. zorder = zorder > 0 and -zorder or zorder
  49. zorder = zorder - row * 10
  50. elseif viewId == 4 then
  51. zorder = 6 - col
  52. zorder = zorder > 0 and -zorder or zorder
  53. zorder = zorder + row * 10
  54. elseif viewId == 3 then
  55. zorder = col - (row - 3) * 10
  56. end
  57. card:setLocalZOrder(zorder)
  58. end
  59. end
  60. function Mahjong3DHuCardView:refreshXueliuHuZOrder2()
  61. local viewId = self:getViewId()
  62. for cardIndex, card in ipairs(self._huCardNodes or {}) do
  63. local row = math.ceil( cardIndex / 19 )
  64. local col = cardIndex % 19
  65. col = (col == 0) and 19 or col
  66. local zorder = col
  67. if viewId == 2 then
  68. zorder = 10 - col
  69. zorder = zorder > 0 and -zorder or zorder
  70. zorder = zorder - row * 10
  71. elseif viewId == 4 then
  72. zorder = col - 10
  73. zorder = zorder > 0 and -zorder or zorder
  74. zorder = zorder + row * 10
  75. end
  76. card:setLocalZOrder(zorder)
  77. end
  78. end
  79. -- todo lwq xueliu end
  80. function Mahjong3DHuCardView:createCard(info, mjIndex)
  81. local huCard = info.huCard
  82. local huType = info.huType
  83. local viewId = self:getViewId()
  84. local mjType = huCard == 0 and MJDefine.MJConfig_3d.MJType.HuBlack or MJDefine.MJConfig_3d.MJType.Hu
  85. local Mahjong3DCard = require(MJDefine.MJConfig_3d.MAHJONG_CARD)
  86. local mjCard = Mahjong3DCard:new(huCard, viewId, mjType, mjIndex)
  87. if huCard ~= 0 then
  88. self:setHuCardColor(mjCard, huType)
  89. end
  90. return mjCard
  91. end
  92. function Mahjong3DHuCardView:getHuCardScale (mjCard, mjIndex)
  93. if not MJDefine.MJConfig_3d.MJHuScale then
  94. return 1.0
  95. end
  96. local viewId = self:getViewId()
  97. local huScale = MJDefine.MJConfig_3d.MJHuScale[viewId] or 1.0
  98. return huScale
  99. end
  100. function Mahjong3DHuCardView:getHuCardPosition(mjCard, mjIndex)
  101. local viewId = self:getViewId()
  102. local startPos = MJDefine.MJConfig_3d.HuCardStartPos[viewId]
  103. local x = startPos.x + MJDefine.MJConfig_3d.HuCardCoorConfig[viewId][mjIndex].x
  104. local y = startPos.y + MJDefine.MJConfig_3d.HuCardCoorConfig[viewId][mjIndex].y
  105. return x, y
  106. end
  107. function Mahjong3DHuCardView:getHuCards(huCards, isClean)
  108. self._huCards = self._huCards or {};
  109. if isClean then
  110. self._huCards = {};
  111. end
  112. for k, v in ipairs(huCards or {}) do
  113. table.insert(self._huCards, v);
  114. end
  115. self:createHuCards(self._huCards)
  116. end
  117. function Mahjong3DHuCardView:refreshHuCardZOrder(huCardNodes)
  118. local viewId = self:getViewId()
  119. for k, mjCard in ipairs(huCardNodes or {}) do
  120. local col = k % 20 == 0 and 20 or k % 20 -- 列数,从右往左数
  121. local row = math.ceil(k / 20) -- 行数,从下往上
  122. local zorder = col
  123. if viewId == 1 then
  124. zorder = col
  125. elseif viewId == 2 then
  126. zorder = 10 - col
  127. zorder = zorder > 0 and -zorder or zorder
  128. zorder = zorder + (row - 1) * 10
  129. elseif viewId == 4 then
  130. zorder = 10 - col
  131. zorder = zorder > 0 and -zorder or zorder
  132. zorder = zorder - (row - 1) * 10
  133. elseif viewId == 3 then
  134. zorder = 20 - col
  135. end
  136. mjCard:setLocalZOrder(zorder)
  137. end
  138. end
  139. return Mahjong3DHuCardView