--[[local CardNode = class("CardNode", function() return cc.ImageView:create() end)--]] local PokerUtil = require("zp_doushisi.luaScript.Views.Room.doushisiPokerUtil") local DoushisiRoomConfig = require("zp_doushisi.luaScript.Views.Room.doushisiRoomConfig") local ZPDef = ZPFramework.ZPImport("zp_base.luaScript.ZPDef") local doushisiGroupCardView = class("doushisiGroupCardView", function () local node = cc.Node:create() return node end) function doushisiGroupCardView:ctor(viewId) self._viewId = viewId self._CardValue = {} self._groupCardNode = {} self.littleCardScale = 0.46 end function doushisiGroupCardView:addGroupCard(card,nums) for i = 1, nums do local mSprite = cc.ImageView:createNode() mSprite:setScale(self.littleCardScale) local finalFileName = PokerUtil.pokerPng(card,ZPDef.CardType.CARD_TYPE_GROUP_OUT) mSprite:loadTextureFromPlist(finalFileName) mSprite:setVisible(not isShowAni) --mSprite:setAnchorPoint(cc.p(0,0)) mSprite.value = card if self._viewId == 2 or self._viewId == 4 then mSprite:setEulerRotation(cc.vec3(0, 0, 90)) end if self._viewId == 1 then self:setEulerRotation(cc.vec3(-36, 18, 13)) elseif self._viewId == 3 then self:setEulerRotation(cc.vec3(36, 17, -12)) end local pos = self:getCardPosition() mSprite:setPosition(pos) self:addChild(mSprite) table.insert(self._groupCardNode,mSprite) table.insert(self._CardValue, card) end end function doushisiGroupCardView:addBaCard(card,nums) local groupLen = table.nums(self._groupCardNode) if groupLen > 0 then local index = 0 local isfind = false local tempCardValue = {} local lens = table.nums(self._groupCardNode) local baIndex = 0 --先寻找要巴的值的起始索引 for i = 1,lens do local cardT = self._groupCardNode[i] local nextCard = self._groupCardNode[i+1] if cardT.value%16 == card%16 and nextCard.value%16 == card%16 then baIndex = i break end end --再寻找具体位置 for i = 1,lens do local cardT = self._groupCardNode[i] local nextCard = self._groupCardNode[i+1] cardT:removeFromParent() if cardT.value%16 == card%16 and not isfind then if not nextCard or (nextCard and nextCard.value%16 ~= card%16 and i > baIndex) then index = i+1 isfind = true end end table.insert(tempCardValue,cardT.value) end self._groupCardNode = {} table.insert(tempCardValue,index,card) for k,v in pairs(tempCardValue) do self:addGroupCard(v,1) end end end function doushisiGroupCardView:getCardPosition() local groupLen = table.nums(self._groupCardNode) local tarpos = cc.p(0,0) if groupLen > 0 then local colNum = DoushisiRoomConfig.OpOutCardNum[self._viewId] local opcardNum = groupLen local colMax = math.modf(opcardNum/colNum) local orderX = 0 local orderY = 0 local offsetX = DoushisiRoomConfig.OpOutCardOffset[self._viewId].x local offsetY = DoushisiRoomConfig.OpOutCardOffset[self._viewId].y local offsetSpace = DoushisiRoomConfig.opOutCardSpace[self._viewId] if self._viewId == 1 then if colMax > 0 then orderX = orderX - offsetSpace*colMax end orderX = orderX + offsetX*opcardNum orderY = orderY - (opcardNum%colNum)*offsetY elseif self._viewId == 2 then if colMax > 0 then orderY = orderY - offsetY*colMax end orderX = orderX + (opcardNum%colNum)*offsetX elseif self._viewId == 3 then if colMax > 0 then orderX = orderX + offsetSpace*colMax end orderX = orderX - offsetX*opcardNum orderY = orderY - (opcardNum%colNum)*offsetY elseif self._viewId == 4 then if colMax > 0 then orderY = orderY + offsetY*colMax end orderX = orderX + (opcardNum%colNum)*offsetX end tarpos.x = tarpos.x + orderX tarpos.y = tarpos.y + orderY end return tarpos end function doushisiGroupCardView:showAllGroupCard() for k,v in pairs(self._groupCardNode) do v:setVisible(true) end end function doushisiGroupCardView:reset() self._qiPaiValue = {} for k,v in pairs(self._groupCardNode) do if not tolua.isnull(v) then v:removeFromParent() end end self._groupCardNode = {} end return doushisiGroupCardView