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.

88 lines
3.0 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJSound=MJFramework.MJImport("mj.luaScript.MJSound")
  3. local CommonOutCardView = require("mj.luaScript.Common.2d.CommonOutCardView")
  4. local Mahjong3DOutCardView = class("Mahjong3DOutCardView", CommonOutCardView)
  5. function Mahjong3DOutCardView:ctor(viewId)
  6. Mahjong3DOutCardView.super.ctor(self, viewId)
  7. end
  8. function Mahjong3DOutCardView:createCard(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 Mahjong3DOutCardView:getOutCardPosition(mjCard, mjIndex)
  15. local viewId = self:getViewId()
  16. local offsetConfig = MJDefine.MJConfig_3d.OutCardOffsetConfig[viewId]
  17. local startPos = MJDefine.MJConfig_3d.OutCardStartPos[viewId]
  18. local rowCount = 11
  19. if app.room:getMaxPlayerCount() == 2 then
  20. startPos = MJDefine.MJConfig_3d.OutCardStartPos2[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 Mahjong3DOutCardView:refreshZOrder()
  34. if app.room:getMaxPlayerCount() == 2 then
  35. self:refreshZOrder2()
  36. return
  37. end
  38. local viewId = self:getViewId()
  39. for cardIndex, card in ipairs(self._outCardNodes 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 Mahjong3DOutCardView:refreshZOrder2()
  61. local viewId = self:getViewId()
  62. for cardIndex, card in ipairs(self._outCardNodes 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. return Mahjong3DOutCardView