local MJ = MJFramework.MJImport("mj.luaScript.Views.Game.MJ") local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJPositionCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJPositionCompnent") local MJChi = class("MJChi",function() local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255)) -------- node:setAnchorPoint(cc.p(0.5,0.5)) node:ignoreAnchorPointForPosition(false) return node end) function MJChi:ctor(values,viewId,desktopType) self.viewId=viewId or MJDefine.PlayerViewType.My self.desktopType = desktopType self.mjs={} desktopType=desktopType or MJDefine.DesktopType.ThreeD local MJGroupOffSet=MJDefine.MJGroupOffSet[desktopType] -- local x=0 -- local y=0 --计算整个组牌的宽高 local width=0 local height=0 for i=1,3 do if values[i] then local mj=MJ:new(values[i],MJDefine.MJType.Operate,self.viewId,desktopType) self:addChild(mj) local mjWidth=mj:getContentSize().width local mjHeight=mj:getContentSize().height -- y=mjHeight/2 -- x=mjWidth/2 --根据视图ID 计算坐标 if self.viewId==MJDefine.PlayerViewType.My then -- x=#self.mjs*(mjWidth-MJDefine.MJGroupOffSet[self.viewId].x)+mjWidth/2 width=width+mjWidth height=mj:getContentSize().height elseif self.viewId==MJDefine.PlayerViewType.Left then -- x=x-#self.mjs*MJDefine.MJGroupOffSet[self.viewId].x -- y=y+(mjHeight-MJDefine.MJGroupOffSet[self.viewId].y)*(3-i) width=mjWidth height=height+mjHeight if i<3 then height=height-MJGroupOffSet[self.viewId].y end elseif self.viewId==MJDefine.PlayerViewType.Right then -- x=x-#self.mjs*MJDefine.MJGroupOffSet[self.viewId].x -- y=y+(mjHeight-MJDefine.MJGroupOffSet[self.viewId].y)*#self.mjs width=mjWidth height=height+mjHeight if i<3 then height=height-MJGroupOffSet[self.viewId].y end mj:setLocalZOrder(3-i) elseif self.viewId==MJDefine.PlayerViewType.Top then -- local scale=1--0.8 --上面的麻将要缩小 -- mj:setScale(scale) -- x=x*scale -- y=y*scale -- x=#self.mjs*(mjWidth*scale-MJDefine.MJGroupOffSet[self.viewId].x)+mjWidth*scale/2 width=width+mjWidth height=mj:getContentSize().height end local x,y=MJPositionCompnent.getIntragroupPosition(self.viewId,mj,i,#self.mjs,desktopType) mj:setPosition(x,y) table.insert(self.mjs,mj) end end self:setContentSize(cc.size(width,height)) end function MJChi:setDirection(viewId,fromViewId)--原图方向朝上 if not viewId then return end if not fromViewId then return end if viewId == fromViewId then return end local arrowDir = { [MJDefine.PlayerViewType.Right] = 270, [MJDefine.PlayerViewType.Top] = 0, [MJDefine.PlayerViewType.Left] = 90, [MJDefine.PlayerViewType.My] = 180, } if fromViewId and arrowDir[fromViewId] then local csize = self:getContentSize() local imgPos2d = { [MJDefine.PlayerViewType.Right] = cc.p(csize.width+13,csize.height/2+8), [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-10), [MJDefine.PlayerViewType.Left] = cc.p(0-13,csize.height/2+8), [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17), } local imgPos2dGold = { [MJDefine.PlayerViewType.Right] = cc.p(csize.width+15,csize.height/2+8), [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-10), [MJDefine.PlayerViewType.Left] = cc.p(0-13,csize.height/2+8), [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17), } local imgPos3d = { [MJDefine.PlayerViewType.Right] = cc.p(csize.width+2,csize.height/2+8), [MJDefine.PlayerViewType.Top] = cc.p(csize.width/2-3,0-8), [MJDefine.PlayerViewType.Left] = cc.p(0-15,csize.height/2+11), [MJDefine.PlayerViewType.My] = cc.p(csize.width/2-3,csize.height+17), } local arrowImg = cc.ImageView:createNode() arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png"); arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId])) if self.desktopType == "2d" then --2d墨绿 if viewId == MJDefine.PlayerViewType.Left then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Top then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Right then arrowImg:setScale(0.8) end arrowImg:setPosition(imgPos2d[viewId]) elseif self.desktopType == "2dGold" then --2d金黄 if viewId == MJDefine.PlayerViewType.Left then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Top then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Right then arrowImg:setScale(0.8) end arrowImg:setPosition(imgPos2dGold[viewId]) else --3d if viewId == MJDefine.PlayerViewType.Left then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Top then arrowImg:setScale(0.8) elseif viewId == MJDefine.PlayerViewType.Right then arrowImg:setScale(0.8) end arrowImg:setPosition(imgPos3d[viewId]) end self:addChild(arrowImg,2,2) end end return MJChi