local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") local CommonOutCardView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.2d.CommonOutCardView") local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local OutCardView2D = class("OutCardView2D", CommonOutCardView) function OutCardView2D:ctor(...) OutCardView2D.super.ctor(self, ...) self.endOutCardViewId = nil end --[[function OutCardView2D:getOutCardPosition(mjCard, mjIndex) local x = 0 local y = 0 local viewId = self:getViewId() local playerCount = app.room:getMaxPlayerCount() local mjRowCount = MJDefine.MJConfig_2d.OutCardRowCount[playerCount][viewId] local col = mjIndex % mjRowCount col = col == 0 and mjRowCount or col local row = math.ceil(mjIndex / mjRowCount) local startPos = MJDefine.MJConfig_2d.OutCardStartPos[viewId] local offset = MJDefine.MJConfig_2d.OutCardOffsetConfig[viewId] local cardSize = mjCard:getContentSize() if playerCount == 2 then startPos = MJDefine.MJConfig_2d.OutCardStartPos2[viewId] offset = MJDefine.MJConfig_2d.OutCardOffsetConfig2[viewId] end if viewId == MJDefine.PlayerViewType.My then x = startPos.x + (col - 1) * (cardSize.width + offset.x) --y = startPos.y + (1 - row) * (cardSize.height + offset.y) y = startPos.y + (1 - row) * (cardSize.height + offset.y) elseif viewId == MJDefine.PlayerViewType.Right then --x = startPos.x + (row - 1) * (cardSize.width + offset.x) x = startPos.x + (row - 1) * (cardSize.width + offset.x) y = startPos.y + (col - 1) * (cardSize.height + offset.y) elseif viewId == MJDefine.PlayerViewType.Top then x = startPos.x + (1 - col) * (cardSize.width + offset.x) --y = startPos.y + (row - 1) * (cardSize.height + offset.y) y = startPos.y + (row - 1) * (cardSize.height + offset.y) elseif viewId == MJDefine.PlayerViewType.Left then --x = startPos.x + (1 - row) * (cardSize.width + offset.x) x = startPos.x + (1 - row) * (cardSize.width + offset.x) y = startPos.y + (1 - col) * (cardSize.height + offset.y) end return x, y end function OutCardView2D:refreshZOrder() local viewId = self:getViewId() if viewId == MJDefine.PlayerViewType.My or viewId == MJDefine.PlayerViewType.Right then local count = table.nums(self._outCardNodes) for k, v in ipairs(self._outCardNodes or {}) do v:setLocalZOrder(count - k) end else end end--]] function OutCardView2D:onOutCard(card, callback) MJSound.PlayOutCard() self:addCard(card) self:refreshZOrder() if callback then callback() end self:runOutCardAction(card) end --出牌动画 function OutCardView2D:runOutCardAction(value,callback) local outCard=self._outCardNodes[#self._outCardNodes] local guangan_mj_color = loadUserInfo("mj_guangan_desktop_2d_mjType") or MJDefine.DesktopType.TwoDL local CardClass if guangan_mj_color == "2dl" then CardClass = require("mj_guangan.luaScript.Views.2d.Card_2d_L") else CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD) end local showCardBg = cc.ImageView:createNode() showCardBg:loadTexture("mj_guangan/res/zy_fangjian/guanan_outCard_bg.png") showCardBg:setAutoSize(true) showCardBg:setScale9Enabled(true) showCardBg:setSize(cc.size(140,170)) showCardBg:setLocalZOrder(9999) self:addChild(showCardBg) local showCard = CardClass:new(value, 4, MJDefine.MJConfig_2d.MJType.Stand, 1) --local showCard=MJ:new(value,MJDefine.MJType.Stand,MJDefine.MyViewId,self.desktopType) showCardBg:addChild(showCard) showCard:setScale(1.2) showCard:setLocalZOrder(9999) local showsize = showCardBg:getContentSize() showCard:setPosition(cc.p(showsize.width/2,showsize.height/2)) --showCard:setScale(MJDefine.MJ_OUT_CARD_SCALE) showCardPostion = { [1] = {x = 1015*g_radio_x, y = 423*g_radio_y}, [2] = {x = 641*g_radio_x, y = 571*g_radio_y}, [3] = {x = 265*g_radio_x, y = 423*g_radio_y}, [4] = {x = 640*g_radio_x, y = 210*g_radio_y}, } showCardBg:setPosition(showCardPostion[self._viewId]) local rotate=0 if self._viewId==MJDefine.PlayerViewType.Left then rotate=-45 elseif self._viewId==MJDefine.PlayerViewType.Right then rotate=45 end local actions={ --cc.ScaleTo:create(MJDefine.MJ_TIME_OUT_CARD_SCALE,1), cc.DelayTime:create(MJDefine.MJ_TIME_OUT_CARD_WAIT), --[[cc.Spawn:create( cc.Spawn:create( cc.MoveTo:create(MJDefine.MJ_TIME_OUT_CARD,outCard:getPosition()), cc.ScaleTo:create(MJDefine.MJ_TIME_OUT_CARD,MJDefine.MJ_OUT_CARD_SCALE) ), cc.RotateBy:create(MJDefine.MJ_TIME_OUT_CARD,rotate) ),--]] cc.CallFunc:create(function() -- MJSound.PlayOutCard() if outCard and not tolua.isnull(outCard) then --outCard:setVisible(true) end showCard:setVisible(false) if callback then callback() end end), cc.RemoveSelf:create(), } showCardBg:runAction(cc.Sequence:create(actions)) end --- CommonOutCardView:showOutCardPointer 显示出牌指示箭头 function OutCardView2D:showOutCardPointer(mjValue, pointerPath) local mjCard = self._outCardNodes[#self._outCardNodes] if not mjCard then return end if mjCard:getValue() ~= mjValue then return end local acTintto = cc.TintTo:create(1.2,141,144,242) local acTintto1 = cc.TintTo:create(1.2,255, 255, 255) mjCard:runAction(cc.RepeatForever:create(cc.Sequence:create(acTintto,acTintto1))) end --- CommonOutCardView:clearOutCardPointer 移除出牌箭头 function OutCardView2D:clearOutCardPointer() for _, v in pairs(self._outCardNodes or {}) do local children = v:getChildren() v:setNormalColor() v:stopAllActions() for _, child in pairs(children) do if child:getTag() == TAG_OUTCARD_POINTER then child:removeFromParent() end end end end function OutCardView2D:onSelectCard(event) if not event then return end local value = event.value; for k, v in ipairs(self._outCardNodes or {}) do if (k ~= #self._outCardNodes or self.endOutCardViewId ~= v:getViewId()) then --最后一张出的牌要变成蓝色,不能做其他改变 if ((not value) or value <= 0) then v:setNormalColor() else if v:getValue() == value then v:setColor(cc.c3b(249,213,115)) else v:setNormalColor() end end end end end return OutCardView2D