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.

64 lines
2.3 KiB

  1. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  2. local huamajiangPositionCompnent = require("mj.luaScript.Views.Compnent.MJPositionCompnent")
  3. function huamajiangPositionCompnent.getOutCardPosition(viewId,x,y,mj,num,desktopType,playerCount)
  4. desktopType=desktopType or MJDefine.DesktopType.ThreeD
  5. local MJChangeLinCount = MJDefine.MJChangeLinCount[desktopType][playerCount]
  6. local MJOutChangeOffSet = MJDefine.MJOutChangeOffSet[desktopType]
  7. local MJOutOffSet = MJDefine.MJOutOffSet[desktopType]
  8. --取余计算X坐标 从起始位置开始 默认应该为0 所以要减去1
  9. local n=num%MJChangeLinCount[viewId]-1
  10. --向下取整判断是否换行
  11. local m=math.floor(num/MJChangeLinCount[viewId])
  12. --如果刚好等于0则设置为换行的数
  13. if num%MJChangeLinCount[viewId]==0 then
  14. n=MJChangeLinCount[viewId]-1
  15. m=m-1
  16. end
  17. local m1 = 0
  18. --大于2行牌则叠加
  19. if playerCount == 2 then
  20. m = m%2
  21. m1=math.ceil(num/(MJChangeLinCount[viewId]*2)) - 1
  22. elseif playerCount == 3 or playerCount == 4 then
  23. if viewId==MJDefine.PlayerViewType.My or viewId==MJDefine.PlayerViewType.Top then
  24. m = m%2
  25. m1=math.ceil(num/(MJChangeLinCount[viewId]*2)) - 1
  26. else
  27. m = m%3
  28. m1=math.ceil(num/(MJChangeLinCount[viewId]*3)) - 1
  29. end
  30. end
  31. --根据视图ID 计算坐标
  32. if viewId==MJDefine.PlayerViewType.My then
  33. x=x+(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)*n
  34. y=y-m*(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)
  35. y=y+12*m1
  36. mj:setLocalZOrder(-1)
  37. elseif viewId==MJDefine.PlayerViewType.Left then
  38. x=x-m*(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)-n*MJOutOffSet[viewId].x
  39. y=y-(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*n
  40. y=y+15*m1
  41. mj:setLocalZOrder(n-m)
  42. elseif viewId==MJDefine.PlayerViewType.Right then
  43. x=x+m*(mj:getContentSize().width-MJOutChangeOffSet[viewId].x)-n*MJOutOffSet[viewId].x
  44. y=y+(mj:getContentSize().height-MJOutChangeOffSet[viewId].y)*n
  45. y=y+15*m1
  46. mj:setLocalZOrder(-m-n)
  47. elseif viewId==MJDefine.PlayerViewType.Top then
  48. -- local scale=0.8 --上面的麻将要缩小
  49. mj:setScale(MJDefine.MJ_TOP_SCALE)
  50. x=x-(mj:getContentSize().width*MJDefine.MJ_TOP_SCALE-MJOutChangeOffSet[viewId].x)*n
  51. y=y+m*(mj:getContentSize().height*MJDefine.MJ_TOP_SCALE-MJOutChangeOffSet[viewId].y)
  52. y=y+12*m1
  53. mj:setLocalZOrder(720-y + m1*720)
  54. end
  55. return x,y
  56. end
  57. return huamajiangPositionCompnent