您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

190 行
6.2 KiB

  1. local MJSound = MJFramework.MJImport("mj.luaScript.MJSound")
  2. local CommonOutCardView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.2d.CommonOutCardView")
  3. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  4. local OutCardView2D = class("OutCardView2D", CommonOutCardView)
  5. function OutCardView2D:ctor(...)
  6. OutCardView2D.super.ctor(self, ...)
  7. self.endOutCardViewId = nil
  8. end
  9. --[[function OutCardView2D:getOutCardPosition(mjCard, mjIndex)
  10. local x = 0
  11. local y = 0
  12. local viewId = self:getViewId()
  13. local playerCount = app.room:getMaxPlayerCount()
  14. local mjRowCount = MJDefine.MJConfig_2d.OutCardRowCount[playerCount][viewId]
  15. local col = mjIndex % mjRowCount
  16. col = col == 0 and mjRowCount or col
  17. local row = math.ceil(mjIndex / mjRowCount)
  18. local startPos = MJDefine.MJConfig_2d.OutCardStartPos[viewId]
  19. local offset = MJDefine.MJConfig_2d.OutCardOffsetConfig[viewId]
  20. local cardSize = mjCard:getContentSize()
  21. if playerCount == 2 then
  22. startPos = MJDefine.MJConfig_2d.OutCardStartPos2[viewId]
  23. offset = MJDefine.MJConfig_2d.OutCardOffsetConfig2[viewId]
  24. end
  25. if viewId == MJDefine.PlayerViewType.My then
  26. x = startPos.x + (col - 1) * (cardSize.width + offset.x)
  27. --y = startPos.y + (1 - row) * (cardSize.height + offset.y)
  28. y = startPos.y + (1 - row) * (cardSize.height + offset.y)
  29. elseif viewId == MJDefine.PlayerViewType.Right then
  30. --x = startPos.x + (row - 1) * (cardSize.width + offset.x)
  31. x = startPos.x + (row - 1) * (cardSize.width + offset.x)
  32. y = startPos.y + (col - 1) * (cardSize.height + offset.y)
  33. elseif viewId == MJDefine.PlayerViewType.Top then
  34. x = startPos.x + (1 - col) * (cardSize.width + offset.x)
  35. --y = startPos.y + (row - 1) * (cardSize.height + offset.y)
  36. y = startPos.y + (row - 1) * (cardSize.height + offset.y)
  37. elseif viewId == MJDefine.PlayerViewType.Left then
  38. --x = startPos.x + (1 - row) * (cardSize.width + offset.x)
  39. x = startPos.x + (1 - row) * (cardSize.width + offset.x)
  40. y = startPos.y + (1 - col) * (cardSize.height + offset.y)
  41. end
  42. return x, y
  43. end
  44. function OutCardView2D:refreshZOrder()
  45. local viewId = self:getViewId()
  46. if viewId == MJDefine.PlayerViewType.My or viewId == MJDefine.PlayerViewType.Right then
  47. local count = table.nums(self._outCardNodes)
  48. for k, v in ipairs(self._outCardNodes or {}) do
  49. v:setLocalZOrder(count - k)
  50. end
  51. else
  52. end
  53. end--]]
  54. function OutCardView2D:onOutCard(card, callback)
  55. MJSound.PlayOutCard()
  56. self:addCard(card)
  57. self:refreshZOrder()
  58. if callback then
  59. callback()
  60. end
  61. self:runOutCardAction(card)
  62. end
  63. --出牌动画
  64. function OutCardView2D:runOutCardAction(value,callback)
  65. local outCard=self._outCardNodes[#self._outCardNodes]
  66. local guangan_mj_color = loadUserInfo("mj_guangan_desktop_2d_mjType") or MJDefine.DesktopType.TwoDL
  67. local CardClass
  68. if guangan_mj_color == "2dl" then
  69. CardClass = require("mj_guangan.luaScript.Views.2d.Card_2d_L")
  70. else
  71. CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD)
  72. end
  73. local showCardBg = cc.ImageView:createNode()
  74. showCardBg:loadTexture("mj_guangan/res/zy_fangjian/guanan_outCard_bg.png")
  75. showCardBg:setAutoSize(true)
  76. showCardBg:setScale9Enabled(true)
  77. showCardBg:setSize(cc.size(140,170))
  78. showCardBg:setLocalZOrder(9999)
  79. self:addChild(showCardBg)
  80. local showCard = CardClass:new(value, 4, MJDefine.MJConfig_2d.MJType.Stand, 1)
  81. --local showCard=MJ:new(value,MJDefine.MJType.Stand,MJDefine.MyViewId,self.desktopType)
  82. showCardBg:addChild(showCard)
  83. showCard:setScale(1.2)
  84. showCard:setLocalZOrder(9999)
  85. local showsize = showCardBg:getContentSize()
  86. showCard:setPosition(cc.p(showsize.width/2,showsize.height/2))
  87. --showCard:setScale(MJDefine.MJ_OUT_CARD_SCALE)
  88. showCardPostion = {
  89. [1] = {x = 1015*g_radio_x, y = 423*g_radio_y},
  90. [2] = {x = 641*g_radio_x, y = 571*g_radio_y},
  91. [3] = {x = 265*g_radio_x, y = 423*g_radio_y},
  92. [4] = {x = 640*g_radio_x, y = 210*g_radio_y},
  93. }
  94. showCardBg:setPosition(showCardPostion[self._viewId])
  95. local rotate=0
  96. if self._viewId==MJDefine.PlayerViewType.Left then
  97. rotate=-45
  98. elseif self._viewId==MJDefine.PlayerViewType.Right then
  99. rotate=45
  100. end
  101. local actions={
  102. --cc.ScaleTo:create(MJDefine.MJ_TIME_OUT_CARD_SCALE,1),
  103. cc.DelayTime:create(MJDefine.MJ_TIME_OUT_CARD_WAIT),
  104. --[[cc.Spawn:create(
  105. cc.Spawn:create(
  106. cc.MoveTo:create(MJDefine.MJ_TIME_OUT_CARD,outCard:getPosition()),
  107. cc.ScaleTo:create(MJDefine.MJ_TIME_OUT_CARD,MJDefine.MJ_OUT_CARD_SCALE)
  108. ),
  109. cc.RotateBy:create(MJDefine.MJ_TIME_OUT_CARD,rotate)
  110. ),--]]
  111. cc.CallFunc:create(function()
  112. -- MJSound.PlayOutCard()
  113. if outCard and not tolua.isnull(outCard) then
  114. --outCard:setVisible(true)
  115. end
  116. showCard:setVisible(false)
  117. if callback then callback() end
  118. end),
  119. cc.RemoveSelf:create(),
  120. }
  121. showCardBg:runAction(cc.Sequence:create(actions))
  122. end
  123. --- CommonOutCardView:showOutCardPointer 显示出牌指示箭头
  124. function OutCardView2D:showOutCardPointer(mjValue, pointerPath)
  125. local mjCard = self._outCardNodes[#self._outCardNodes]
  126. if not mjCard then
  127. return
  128. end
  129. if mjCard:getValue() ~= mjValue then
  130. return
  131. end
  132. local acTintto = cc.TintTo:create(1.2,141,144,242)
  133. local acTintto1 = cc.TintTo:create(1.2,255, 255, 255)
  134. mjCard:runAction(cc.RepeatForever:create(cc.Sequence:create(acTintto,acTintto1)))
  135. end
  136. --- CommonOutCardView:clearOutCardPointer 移除出牌箭头
  137. function OutCardView2D:clearOutCardPointer()
  138. for _, v in pairs(self._outCardNodes or {}) do
  139. local children = v:getChildren()
  140. v:setNormalColor()
  141. v:stopAllActions()
  142. for _, child in pairs(children) do
  143. if child:getTag() == TAG_OUTCARD_POINTER then
  144. child:removeFromParent()
  145. end
  146. end
  147. end
  148. end
  149. function OutCardView2D:onSelectCard(event)
  150. if not event then
  151. return
  152. end
  153. local value = event.value;
  154. for k, v in ipairs(self._outCardNodes or {}) do
  155. if (k ~= #self._outCardNodes or self.endOutCardViewId ~= v:getViewId()) then --最后一张出的牌要变成蓝色,不能做其他改变
  156. if ((not value) or value <= 0) then
  157. v:setNormalColor()
  158. else
  159. if v:getValue() == value then
  160. v:setColor(cc.c3b(249,213,115))
  161. else
  162. v:setNormalColor()
  163. end
  164. end
  165. end
  166. end
  167. end
  168. return OutCardView2D