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.

148 lines
4.9 KiB

  1. local MJ = MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
  2. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  3. local MJPositionCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJPositionCompnent")
  4. local MJChi = class("MJChi",function()
  5. local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255)) --------
  6. node:setAnchorPoint(cc.p(0.5,0.5))
  7. node:ignoreAnchorPointForPosition(false)
  8. return node
  9. end)
  10. function MJChi:ctor(values,viewId,desktopType)
  11. self.viewId=viewId or MJDefine.PlayerViewType.My
  12. self.desktopType = desktopType
  13. self.mjs={}
  14. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  15. local MJGroupOffSet=MJDefine.MJGroupOffSet[desktopType]
  16. -- local x=0
  17. -- local y=0
  18. --计算整个组牌的宽高
  19. local width=0
  20. local height=0
  21. for i=1,3 do
  22. if values[i] then
  23. local mj=MJ:new(values[i],MJDefine.MJType.Operate,self.viewId,desktopType)
  24. self:addChild(mj)
  25. local mjWidth=mj:getContentSize().width
  26. local mjHeight=mj:getContentSize().height
  27. -- y=mjHeight/2
  28. -- x=mjWidth/2
  29. --根据视图ID 计算坐标
  30. if self.viewId==MJDefine.PlayerViewType.My then
  31. -- x=#self.mjs*(mjWidth-MJDefine.MJGroupOffSet[self.viewId].x)+mjWidth/2
  32. width=width+mjWidth
  33. height=mj:getContentSize().height
  34. elseif self.viewId==MJDefine.PlayerViewType.Left then
  35. -- x=x-#self.mjs*MJDefine.MJGroupOffSet[self.viewId].x
  36. -- y=y+(mjHeight-MJDefine.MJGroupOffSet[self.viewId].y)*(3-i)
  37. width=mjWidth
  38. height=height+mjHeight
  39. if i<3 then
  40. height=height-MJGroupOffSet[self.viewId].y
  41. end
  42. elseif self.viewId==MJDefine.PlayerViewType.Right then
  43. -- x=x-#self.mjs*MJDefine.MJGroupOffSet[self.viewId].x
  44. -- y=y+(mjHeight-MJDefine.MJGroupOffSet[self.viewId].y)*#self.mjs
  45. width=mjWidth
  46. height=height+mjHeight
  47. if i<3 then
  48. height=height-MJGroupOffSet[self.viewId].y
  49. end
  50. mj:setLocalZOrder(3-i)
  51. elseif self.viewId==MJDefine.PlayerViewType.Top then
  52. -- local scale=1--0.8 --上面的麻将要缩小
  53. -- mj:setScale(scale)
  54. -- x=x*scale
  55. -- y=y*scale
  56. -- x=#self.mjs*(mjWidth*scale-MJDefine.MJGroupOffSet[self.viewId].x)+mjWidth*scale/2
  57. width=width+mjWidth
  58. height=mj:getContentSize().height
  59. end
  60. local x,y=MJPositionCompnent.getIntragroupPosition(self.viewId,mj,i,#self.mjs,desktopType)
  61. mj:setPosition(x,y)
  62. table.insert(self.mjs,mj)
  63. end
  64. end
  65. self:setContentSize(cc.size(width,height))
  66. end
  67. function MJChi:setDirection(viewId,fromViewId)--原图方向朝上
  68. if not viewId then return end
  69. if not fromViewId then return end
  70. if viewId == fromViewId then return end
  71. local arrowDir = {
  72. [MJDefine.PlayerViewType.Right] = 270,
  73. [MJDefine.PlayerViewType.Top] = 0,
  74. [MJDefine.PlayerViewType.Left] = 90,
  75. [MJDefine.PlayerViewType.My] = 180,
  76. }
  77. if fromViewId and arrowDir[fromViewId] then
  78. local csize = self:getContentSize()
  79. local imgPos2d = {
  80. [MJDefine.PlayerViewType.Right] = cc.p(csize.width+13,csize.height/2+8),
  81. [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-10),
  82. [MJDefine.PlayerViewType.Left] = cc.p(0-13,csize.height/2+8),
  83. [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17),
  84. }
  85. local imgPos2dGold = {
  86. [MJDefine.PlayerViewType.Right] = cc.p(csize.width+15,csize.height/2+8),
  87. [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-10),
  88. [MJDefine.PlayerViewType.Left] = cc.p(0-13,csize.height/2+8),
  89. [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17),
  90. }
  91. local imgPos3d = {
  92. [MJDefine.PlayerViewType.Right] = cc.p(csize.width+2,csize.height/2+8),
  93. [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-8),
  94. [MJDefine.PlayerViewType.Left] = cc.p(0-15,csize.height/2+11),
  95. [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17),
  96. }
  97. local arrowImg = cc.ImageView:createNode()
  98. arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png");
  99. arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId]))
  100. if self.desktopType == "2d" then
  101. --2d墨绿
  102. if viewId == MJDefine.PlayerViewType.Left then
  103. arrowImg:setScale(0.8)
  104. elseif viewId == MJDefine.PlayerViewType.Top then
  105. arrowImg:setScale(0.8)
  106. elseif viewId == MJDefine.PlayerViewType.Right then
  107. arrowImg:setScale(0.8)
  108. end
  109. arrowImg:setPosition(imgPos2d[viewId])
  110. elseif self.desktopType == "2dGold" then
  111. --2d金黄
  112. if viewId == MJDefine.PlayerViewType.Left then
  113. arrowImg:setScale(0.8)
  114. elseif viewId == MJDefine.PlayerViewType.Top then
  115. arrowImg:setScale(0.8)
  116. elseif viewId == MJDefine.PlayerViewType.Right then
  117. arrowImg:setScale(0.8)
  118. end
  119. arrowImg:setPosition(imgPos2dGold[viewId])
  120. else
  121. --3d
  122. if viewId == MJDefine.PlayerViewType.Left then
  123. arrowImg:setScale(0.8)
  124. elseif viewId == MJDefine.PlayerViewType.Top then
  125. arrowImg:setScale(0.8)
  126. elseif viewId == MJDefine.PlayerViewType.Right then
  127. arrowImg:setScale(0.8)
  128. end
  129. arrowImg:setPosition(imgPos3d[viewId])
  130. end
  131. self:addChild(arrowImg,2,2)
  132. end
  133. end
  134. return MJChi