您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字

162 行
4.1 KiB

  1. --[[local CardNode = class("CardNode", function()
  2. return cc.ImageView:create()
  3. end)--]]
  4. local PokerUtil = require("zp_doushisi.luaScript.Views.Room.doushisiPokerUtil")
  5. local DoushisiRoomConfig = require("zp_doushisi.luaScript.Views.Room.doushisiRoomConfig")
  6. local ZPDef = ZPFramework.ZPImport("zp_base.luaScript.ZPDef")
  7. local doushisiGroupCardView = class("doushisiGroupCardView", function ()
  8. local node = cc.Node:create()
  9. return node
  10. end)
  11. function doushisiGroupCardView:ctor(viewId)
  12. self._viewId = viewId
  13. self._CardValue = {}
  14. self._groupCardNode = {}
  15. self.littleCardScale = 0.46
  16. end
  17. function doushisiGroupCardView:addGroupCard(card,nums)
  18. for i = 1, nums do
  19. local mSprite = cc.ImageView:createNode()
  20. mSprite:setScale(self.littleCardScale)
  21. local finalFileName = PokerUtil.pokerPng(card,ZPDef.CardType.CARD_TYPE_GROUP_OUT)
  22. mSprite:loadTextureFromPlist(finalFileName)
  23. mSprite:setVisible(not isShowAni)
  24. --mSprite:setAnchorPoint(cc.p(0,0))
  25. mSprite.value = card
  26. if self._viewId == 2 or self._viewId == 4 then
  27. mSprite:setEulerRotation(cc.vec3(0, 0, 90))
  28. end
  29. if self._viewId == 1 then
  30. self:setEulerRotation(cc.vec3(-36, 18, 13))
  31. elseif self._viewId == 3 then
  32. self:setEulerRotation(cc.vec3(36, 17, -12))
  33. end
  34. local pos = self:getCardPosition()
  35. mSprite:setPosition(pos)
  36. self:addChild(mSprite)
  37. table.insert(self._groupCardNode,mSprite)
  38. table.insert(self._CardValue, card)
  39. end
  40. end
  41. function doushisiGroupCardView:addBaCard(card,nums)
  42. local groupLen = table.nums(self._groupCardNode)
  43. if groupLen > 0 then
  44. local index = 0
  45. local isfind = false
  46. local tempCardValue = {}
  47. local lens = table.nums(self._groupCardNode)
  48. local baIndex = 0
  49. --先寻找要巴的值的起始索引
  50. for i = 1,lens do
  51. local cardT = self._groupCardNode[i]
  52. local nextCard = self._groupCardNode[i+1]
  53. if cardT.value%16 == card%16 and nextCard.value%16 == card%16 then
  54. baIndex = i
  55. break
  56. end
  57. end
  58. --再寻找具体位置
  59. for i = 1,lens do
  60. local cardT = self._groupCardNode[i]
  61. local nextCard = self._groupCardNode[i+1]
  62. cardT:removeFromParent()
  63. if cardT.value%16 == card%16 and not isfind then
  64. if not nextCard or (nextCard and nextCard.value%16 ~= card%16 and i > baIndex) then
  65. index = i+1
  66. isfind = true
  67. end
  68. end
  69. table.insert(tempCardValue,cardT.value)
  70. end
  71. self._groupCardNode = {}
  72. table.insert(tempCardValue,index,card)
  73. for k,v in pairs(tempCardValue) do
  74. self:addGroupCard(v,1)
  75. end
  76. end
  77. end
  78. function doushisiGroupCardView:getCardPosition()
  79. local groupLen = table.nums(self._groupCardNode)
  80. local tarpos = cc.p(0,0)
  81. if groupLen > 0 then
  82. local colNum = DoushisiRoomConfig.OpOutCardNum[self._viewId]
  83. local opcardNum = groupLen
  84. local colMax = math.modf(opcardNum/colNum)
  85. local orderX = 0
  86. local orderY = 0
  87. local offsetX = DoushisiRoomConfig.OpOutCardOffset[self._viewId].x
  88. local offsetY = DoushisiRoomConfig.OpOutCardOffset[self._viewId].y
  89. local offsetSpace = DoushisiRoomConfig.opOutCardSpace[self._viewId]
  90. if self._viewId == 1 then
  91. if colMax > 0 then
  92. orderX = orderX - offsetSpace*colMax
  93. end
  94. orderX = orderX + offsetX*opcardNum
  95. orderY = orderY - (opcardNum%colNum)*offsetY
  96. elseif self._viewId == 2 then
  97. if colMax > 0 then
  98. orderY = orderY - offsetY*colMax
  99. end
  100. orderX = orderX + (opcardNum%colNum)*offsetX
  101. elseif self._viewId == 3 then
  102. if colMax > 0 then
  103. orderX = orderX + offsetSpace*colMax
  104. end
  105. orderX = orderX - offsetX*opcardNum
  106. orderY = orderY - (opcardNum%colNum)*offsetY
  107. elseif self._viewId == 4 then
  108. if colMax > 0 then
  109. orderY = orderY + offsetY*colMax
  110. end
  111. orderX = orderX + (opcardNum%colNum)*offsetX
  112. end
  113. tarpos.x = tarpos.x + orderX
  114. tarpos.y = tarpos.y + orderY
  115. end
  116. return tarpos
  117. end
  118. function doushisiGroupCardView:showAllGroupCard()
  119. for k,v in pairs(self._groupCardNode) do
  120. v:setVisible(true)
  121. end
  122. end
  123. function doushisiGroupCardView:reset()
  124. self._qiPaiValue = {}
  125. for k,v in pairs(self._groupCardNode) do
  126. if not tolua.isnull(v) then
  127. v:removeFromParent()
  128. end
  129. end
  130. self._groupCardNode = {}
  131. end
  132. return doushisiGroupCardView