local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction") local BaseMahjong3DCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DCard") local Card3D = class("Card3D", BaseMahjong3DCard) function Card3D:ctor(...) Card3D.super.ctor(self, ...) end --- Card3D:setLuoBoVisible 显示萝卜标识 -- @param isVisible 是否显示,为true时,count可不传 -- @param count 萝卜牌数量 function Card3D:setLuoBoVisible(isVisible, count, groupIndex) if self._mjType == MJDefine.MJConfig_3d.MJType.Stand then if self._viewId ~= MJDefine.PlayerViewType.My then return end end local viewId = self:getViewId() local imgFlag = self:getChildByName("img_luobo_flag") if not imgFlag then imgFlag = cc.ImageView:create() self:addChild(imgFlag) end imgFlag:setVisible(isVisible) if not isVisible then imgFlag:setVisible(false) return end local imgPath = string.format("mj_huamajiang/res/zy_fangjian/card/flag_luobo/huamajiang_flag_luobo_%d.png", count) imgFlag:loadTexture(imgPath, 0) imgFlag:setName("img_luobo_flag") local cfg = nil local rotationCfg = nil if self._mjType == MJDefine.MJConfig_3d.MJType.Operate or self._mjType == MJDefine.MJConfig_3d.MJType.OperateBlack then cfg = MJDefine.MJConfig_3d.OpCardLuoBoFlagPos[viewId][groupIndex]; rotationCfg = MJDefine.MJConfig_3d.OpCardLuoBoFlagScale[viewId][groupIndex] elseif self._mjType == MJDefine.MJConfig_3d.MJType.Open then cfg = MJDefine.MJConfig_3d.OpenCardLuoBoFlagPos[viewId][self._cardIndex] rotationCfg = MJDefine.MJConfig_3d.OpenCardLuoBoFlagScale[viewId][self._cardIndex] else cfg = MJDefine.HandCardLuoBoFlagPos[MJDefine.DesktopType.ThreeD][viewId]; end if cfg then imgFlag:setPosition(cc.p(cfg.x, cfg.y)); imgFlag:setScale(cfg.scale); end if rotationCfg then imgFlag:setEulerRotation(cc.vec3(rotationCfg.x, rotationCfg.y, rotationCfg.z)) end end --- -- 刷新多头杠数量 -- @param cardNum -- @return -- function Card3D:refreshCardNum(cardNum, groupIndex) local viewId = self:getViewId() local imgFlag = self:getChildByName("img_cardnum_flag") if not imgFlag then imgFlag = cc.ImageView:create() self:addChild(imgFlag) end imgFlag:setVisible(cardNum > 4) if not (cardNum and cardNum > 4) then return end local imgPath = string.format("mj_huamajiang/res/zy_fangjian/card/flag_gang/huamajiang_flag_gang_%d.png", cardNum) imgFlag:loadTexture(imgPath, 0) imgFlag:setName("img_cardnum_flag") local cfg = nil local rotationCfg = nil if self._mjType == MJDefine.MJConfig_3d.MJType.Out then cfg = MJDefine.OutDuoGangFlagPos[MJDefine.DesktopType.ThreeD][viewId]; cfg.x = cfg.pos.x cfg.y = cfg.pos.y else cfg = MJDefine.MJConfig_3d.OpDuoGangFlagPos[viewId][groupIndex]; rotationCfg = MJDefine.MJConfig_3d.OpDuoGangFlagRotationConfig[viewId][groupIndex] end if cfg then imgFlag:setPosition(cc.p(cfg.x, cfg.y)); imgFlag:setScale(cfg.scale); end if rotationCfg then imgFlag:setEulerRotation(cc.vec3(rotationCfg.x, rotationCfg.y, rotationCfg.z)) end end function Card3D:initBackImage() if self._mjType == MJDefine.MJConfig_3d.MJType.Out and app.room:getMaxPlayerCount() == 2 then if self._cardIndex > 57 then if self._viewId == MJDefine.PlayerViewType.My then self._cardIndex = self._cardIndex - 19 * math.ceil((self._cardIndex - 57) / 19) elseif self._viewId == MJDefine.PlayerViewType.Top then self._cardIndex = self._cardIndex - 57 end local scale = self._viewId == MJDefine.PlayerViewType.Top and 0.98 or 1.02 self:setScale(scale) end local tpl = "mj_3d_outcard2_%s_%s.png" local imgName = string.format( tpl, self._viewType, self._cardIndex) local md5Name = MJFunction.get3dCardMd5ByName(imgName) if not md5Name then logD("[LUA ERROR] Card3D:initBackImage imgName:" .. imgName) return end self:loadTextureFromPlist(md5Name) else if self._mjType == MJDefine.MJConfig_3d.MJType.Out then if self._cardIndex > 33 then self._cardIndex = self._cardIndex - 11 * math.ceil((self._cardIndex - 33) / 11) end elseif self._mjType == MJDefine.MJConfig_3d.MJType.Hu or self._mjType == MJDefine.MJConfig_3d.MJType.HuBlack then if self._cardIndex > 40 then self._cardIndex = self._cardIndex - 20 * math.ceil((self._cardIndex - 40) / 20) end end local imgName = "" if self._mjType == MJDefine.MJConfig_3d.MJType.Stand then -- 本家手牌只有一张牌,cardIndex写死1 local cardIndex = self._viewId == MJDefine.MyViewId and 1 or self._cardIndex local tpl = "mj_3d_handcard_%s_%s.png" imgName = string.format(tpl, self._viewType, cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.Out then local tpl = "mj_3d_outcard_%s_%s.png" imgName = string.format( tpl, self._viewType, self._cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.OutBlack then elseif self._mjType == MJDefine.MJConfig_3d.MJType.Operate then local tpl = "mj_3d_op_%s_fore_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.OperateBlack then local tpl = "mj_3d_op_%s_back_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.Hu then local tpl = "mj_3d_hu_%s_fore_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.HuBlack then local tpl = "mj_3d_hu_%s_back_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex ) elseif self._mjType == MJDefine.MJConfig_3d.MJType.Open then local tpl = "mj_3d_open_%s_fore_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex) elseif self._mjType == MJDefine.MJConfig_3d.MJType.OpenBlack then local tpl = "mj_3d_open_%s_back_%s.png" imgName = string.format(tpl, self._viewType, self._cardIndex) end local md5Name = MJFunction.get3dCardMd5ByName(imgName) if not md5Name then logD("[LUA ERROR] Mahjong3DCard:initBackImage imgName:" .. imgName) return end self:loadTextureFromPlist(md5Name) end end return Card3D