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.

165 line
6.2 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local MJPositionCompnent={}
  3. --麻将组内坐标计算
  4. function MJPositionCompnent.getIntragroupPosition(viewId,mj,i,num,desktopType)
  5. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  6. local MJGroupOffSet=MJDefine.MJGroupOffSet[desktopType]
  7. local mjWidth=mj:getContentSize().width
  8. local mjHeight=mj:getContentSize().height
  9. local y=mjHeight/2
  10. local x=mjWidth/2
  11. --根据视图ID 计算坐标
  12. if viewId==MJDefine.PlayerViewType.My then
  13. x=num*(mjWidth-MJGroupOffSet[viewId].x)+mjWidth/2
  14. -- width=width+mjWidth
  15. -- height=mj:getContentSize().height
  16. elseif viewId==MJDefine.PlayerViewType.Left then
  17. x=x-num*MJGroupOffSet[viewId].x
  18. y=y+(mjHeight-MJGroupOffSet[viewId].y)*(3-i)
  19. -- width=mjWidth
  20. -- height=height+mjHeight
  21. -- if i<3 then
  22. -- height=height-MJDefine.MJGroupOffSet[self.viewId].y
  23. -- end
  24. elseif viewId==MJDefine.PlayerViewType.Right then
  25. x=x-num*MJGroupOffSet[viewId].x
  26. y=y+(mjHeight-MJGroupOffSet[viewId].y)*num
  27. -- width=mjWidth
  28. -- height=height+mjHeight
  29. -- if i<3 then
  30. -- height=height-MJDefine.MJGroupOffSet[self.viewId].y
  31. -- end
  32. mj:setLocalZOrder(3-i)
  33. elseif viewId==MJDefine.PlayerViewType.Top then
  34. x=num*(mjWidth-MJGroupOffSet[viewId].x)+mjWidth/2
  35. -- width=width+mjWidth
  36. -- height=mj:getContentSize().height
  37. end
  38. return x,y
  39. end
  40. function MJPositionCompnent.getGroupPosition(viewId,x,y,group,desktopType)
  41. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  42. -- local MJGroupStartOffSet = MJDefine.MJGroupStartOffSet[desktopType]
  43. local MJGroupMarginOffSet = MJDefine.MJGroupMarginOffSet[desktopType]
  44. -- group:setPosition(cc.p(x+MJGroupStartOffSet[self.viewId].x,y+MJGroupStartOffSet[self.viewId].y))
  45. --根据视图ID 计算坐标
  46. if viewId==MJDefine.PlayerViewType.My then
  47. x=x+group:getContentSize().width+MJGroupMarginOffSet[viewId].x
  48. elseif viewId==MJDefine.PlayerViewType.Left then
  49. x=x-MJGroupMarginOffSet[viewId].x
  50. y=y-group:getContentSize().height-MJGroupMarginOffSet[viewId].y
  51. elseif viewId==MJDefine.PlayerViewType.Right then
  52. x=x-MJGroupMarginOffSet[viewId].x
  53. y=y+group:getContentSize().height+MJGroupMarginOffSet[viewId].y
  54. elseif viewId==MJDefine.PlayerViewType.Top then
  55. x=x-group:getContentSize().width-MJGroupMarginOffSet[viewId].x
  56. end
  57. return x,y
  58. end
  59. function MJPositionCompnent.getOutCardPosition(viewId,x,y,mj,num,desktopType,playerCount)
  60. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  61. local MJChangeLinCount = MJDefine.MJChangeLinCount[desktopType][playerCount]
  62. local MJOutChangeOffSet = MJDefine.MJOutChangeOffSet[desktopType]
  63. local MJOutOffSet = MJDefine.MJOutOffSet[desktopType]
  64. --取余计算X坐标 从起始位置开始 默认应该为0 所以要减去1
  65. local n=num%MJChangeLinCount[viewId]-1
  66. --向下取整判断是否换行
  67. local m=math.floor(num/MJChangeLinCount[viewId])
  68. --如果刚好等于0则设置为换行的数
  69. if num%MJChangeLinCount[viewId]==0 then
  70. n=MJChangeLinCount[viewId]-1
  71. m=m-1
  72. end
  73. --根据视图ID 计算坐标
  74. if viewId==MJDefine.PlayerViewType.My then
  75. x=x+(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)*n
  76. y=y-m*(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)
  77. mj:setLocalZOrder(-1)
  78. elseif viewId==MJDefine.PlayerViewType.Left then
  79. x=x-m*(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)-n*MJOutOffSet[viewId].x
  80. y=y-(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*n
  81. mj:setLocalZOrder(n-m)
  82. elseif viewId==MJDefine.PlayerViewType.Right then
  83. x=x+m*(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)-n*MJOutOffSet[viewId].x
  84. y=y+(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*n
  85. mj:setLocalZOrder(-m-n)
  86. elseif viewId==MJDefine.PlayerViewType.Top then
  87. -- local scale=0.8 --上面的麻将要缩小
  88. mj:setScale(MJDefine.MJ_TOP_SCALE)
  89. x=x-(mj:getContentSize().width*MJDefine.MJ_TOP_SCALE-MJOutChangeOffSet[viewId].x)*n
  90. y=y+m*(mj:getContentSize().height*MJDefine.MJ_TOP_SCALE-MJOutChangeOffSet[viewId].y)
  91. mj:setLocalZOrder(720-y)
  92. end
  93. return x,y
  94. end
  95. function MJPositionCompnent.getOpenCardPosition(viewId,x,y,mj,num,desktopType)
  96. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  97. local MJOutChangeOffSet=MJDefine.MJOutChangeOffSet[desktopType]
  98. local MJHandCardLeftOffsetX=MJDefine.MJHandCardLeftOffsetX[desktopType]
  99. local MJGroupWithMJMargin=MJDefine.MJGroupWithMJMargin[desktopType]
  100. -- local x=initX
  101. -- local y=initY
  102. --根据视图ID 计算坐标
  103. if viewId==MJDefine.PlayerViewType.My then
  104. x=x+(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)*num
  105. elseif viewId==MJDefine.PlayerViewType.Left then
  106. if desktopType==MJDefine.DesktopType.TwoD then
  107. x=x-MJGroupWithMJMargin[viewId].x
  108. end
  109. x=x-MJHandCardLeftOffsetX*num
  110. y=y-(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*num
  111. elseif viewId==MJDefine.PlayerViewType.Right then
  112. if desktopType==MJDefine.DesktopType.TwoD then
  113. x=x-MJGroupWithMJMargin[viewId].x
  114. end
  115. x=x-MJHandCardLeftOffsetX*num
  116. y=y+(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*num
  117. mj:setLocalZOrder(720-y)
  118. elseif viewId==MJDefine.PlayerViewType.Top then
  119. -- local scale=0.8 --上面的麻将要缩小
  120. mj:setScale(MJDefine.MJ_TOP_SCALE)
  121. x=x-(mj:getContentSize().width*MJDefine.MJ_TOP_SCALE-MJOutChangeOffSet[viewId].x)*num
  122. end
  123. return x,y
  124. end
  125. function MJPositionCompnent.getHandCardPosition(viewId,x,y,mj,num,desktopType)
  126. -- local x=initX
  127. -- local y=initY
  128. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  129. local MJHandCardLeftOffsetX=MJDefine.MJHandCardLeftOffsetX[desktopType]
  130. local MJHandCardRightOffsetX=MJDefine.MJHandCardRightOffsetX[desktopType]
  131. local MJ_HAND_CARD_LEFT_PADDING_HEIGHT = MJDefine.MJ_HAND_CARD_LEFT_PADDING_HEIGHT[desktopType]
  132. --根据视图ID 计算坐标
  133. if viewId==MJDefine.PlayerViewType.My then
  134. x=x+num*mj:getContentSize().width
  135. elseif viewId==MJDefine.PlayerViewType.Left then
  136. x=x-MJHandCardLeftOffsetX*num
  137. y=y-MJ_HAND_CARD_LEFT_PADDING_HEIGHT*num
  138. mj:setLocalZOrder(num)
  139. elseif viewId==MJDefine.PlayerViewType.Right then
  140. x=x-MJHandCardRightOffsetX*num
  141. y=y+MJ_HAND_CARD_LEFT_PADDING_HEIGHT*num
  142. mj:setLocalZOrder(MJDefine.MJ_MAX_ZORDER-num)
  143. elseif viewId==MJDefine.PlayerViewType.Top then
  144. x=x-mj:getContentSize().width*num+MJDefine.MJ_HAND_CARD_TOP_OFFSET_X*num
  145. end
  146. return x,y
  147. end
  148. return MJPositionCompnent