|
- local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
- local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
- local CommonMahjongCard = require("mj.luaScript.Common.2d.CommonMahjongCard")
-
- local Mahjong3DCard = class("Mahjong3DCard", CommonMahjongCard)
-
- function Mahjong3DCard:ctor(value, viewId, mjType, mahjongIndex)
- Mahjong3DCard.super.ctor(self, value, viewId, mjType, mahjongIndex)
- end
-
- function Mahjong3DCard:setMJType(mjType)
- local value = self:getValue()
- if value == 0 then
- if mjType == MJDefine.MJConfig_3d.MJType.Open then
- mjType = MJDefine.MJConfig_3d.MJType.OpenBlack
- elseif mjType == MJDefine.MJConfig_3d.MJType.Operate then
- mjType = MJDefine.MJConfig_3d.MJType.OperateBlack
- elseif mjType == MJDefine.MJConfig_3d.MJType.Out then
- mjType = MJDefine.MJConfig_3d.MJType.OutBlack
- end
- end
- self._mjType = mjType
- end
-
- function Mahjong3DCard:initBackImage()
- if self._mjType == MJDefine.MJConfig_3d.MJType.Out and app.room:getMaxPlayerCount() == 2 then
- if self._cardIndex > 57 then
- self._cardIndex = self._cardIndex - 19
- 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
- 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
- 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
-
- function Mahjong3DCard:initMahjongImage()
- local viewId = self:getViewId()
- local newValue = tonumber(self._newValue)
- self._mahjongImage = cc.ImageView:create()
-
- if newValue == 0 then
- self._mahjongImage:setVisible(false)
- else
- local imgName = string.format( "mj_3d_mahjong_card2_%s.png", newValue)
- if self._mjType == MJDefine.MJConfig_3d.MJType.Stand and self._viewId == MJDefine.MyViewId then
- imgName = string.format( "mj_3d_mahjong_card_%s.png", newValue)
- end
-
- local md5Name = MJFunction.get3dCardMd5ByName(imgName)
- if not md5Name then
- logD("[LUA ERROR] Mahjong3DCard:initBackImage imgName:" .. imgName)
- return
- end
- self._mahjongImage:loadTextureFromPlist(md5Name)
- end
-
- if self._mjType == MJDefine.MJConfig_3d.MJType.Stand then
- self._mahjongImage:setVisible(self._viewId == MJDefine.MyViewId)
- self:updateHandCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.Out then
- self:updateOutCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.OutBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.Operate then
- self:updateOperateCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.OperateBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.Hu then
- self:updateHuCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.HuBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.Open then
- -- self._mahjongImage:setVisible(false)
- self:updateOpenCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_3d.MJType.OpenBlack then
- self._mahjongImage:setVisible(false)
- end
-
- self:addChild(self._mahjongImage)
- end
- ---
- -- 更新授牌显示位置
- -- @return
- --
- function Mahjong3DCard:updateHandCardFacePosition()
- local size = self:getContentSize()
- self._mahjongImage:setPosition(cc.p(size.width / 2, size.height / 2 - 4))
- end
- ---
- -- 更新出牌区牌面的显示
- --
- function Mahjong3DCard:updateOutCardFacePosition()
- if self._mjType == MJDefine.MJConfig_3d.MJType.Out and app.room:getMaxPlayerCount() == 2 then
- self:updateOutCardFacePosition2()
- return
- end
-
- local size = self:getContentSize()
- local viewId = self:getViewId()
- local rotationCfg = MJDefine.MJConfig_3d.OutCardRotationConfig[viewId]
- local faceOffsetCfg = MJDefine.MJConfig_3d.OutCardFaceOffsetConfig[viewId]
- local faceRowScaleCfg = MJDefine.MJConfig_3d.OutCardRowFaceScaleConfig[viewId]
- local faceColScaleCfg = MJDefine.MJConfig_3d.OutCardColFaceScaleConfig[viewId]
- local cardIndex = self._cardIndex % 11;
- cardIndex = cardIndex == 0 and 11 or cardIndex
- if rotationCfg then
- local pos = rotationCfg[cardIndex]
- self._mahjongImage:setEulerRotation(cc.vec3(pos.x, pos.y, pos.z))
- end
-
- if faceOffsetCfg then
- local pos = faceOffsetCfg[cardIndex]
- self._mahjongImage:setPosition(cc.p(size.width / 2 + pos.x, size.height / 2 + pos.y))
- end
-
- if faceRowScaleCfg then
- local row = math.ceil(self._cardIndex / 11)
- self._mahjongImage:setScale(faceRowScaleCfg[row])
- end
-
- if faceColScaleCfg then
- local col = cardIndex
- self._mahjongImage:setScale(faceColScaleCfg[col])
- end
- end
-
- function Mahjong3DCard:updateOutCardFacePosition2()
- local size = self:getContentSize()
- local viewId = self:getViewId()
- local rotationCfg = MJDefine.MJConfig_3d.OutCardRotationConfig2[viewId]
- local faceOffsetCfg = MJDefine.MJConfig_3d.OutCardFaceOffsetConfig2[viewId]
- local faceRowScaleCfg = MJDefine.MJConfig_3d.OutCardRowFaceScaleConfig2[viewId]
- local faceColScaleCfg = MJDefine.MJConfig_3d.OutCardColFaceScaleConfig2[viewId]
- local cardIndex = self._cardIndex % 19;
- cardIndex = cardIndex == 0 and 19 or cardIndex
- if rotationCfg then
- local pos = rotationCfg[cardIndex]
- self._mahjongImage:setEulerRotation(cc.vec3(pos.x, pos.y, pos.z))
- end
-
- if faceOffsetCfg then
- local pos = faceOffsetCfg[cardIndex]
- self._mahjongImage:setPosition(cc.p(size.width / 2 + pos.x, size.height / 2 + pos.y))
- end
-
- if faceRowScaleCfg then
- local row = math.ceil(self._cardIndex / 19)
- self._mahjongImage:setScale(faceRowScaleCfg[row])
- end
-
- if faceColScaleCfg then
- local col = cardIndex
- self._mahjongImage:setScale(faceColScaleCfg[col])
- end
- end
- ---
- -- 更新胡牌区牌面的显示
- --
- function Mahjong3DCard:updateHuCardFacePosition()
- local size = self:getContentSize()
- local viewId = self:getViewId()
- local rotationCfg = MJDefine.MJConfig_3d.HuCardRotationConfig[viewId]
- local faceScaleCfg = MJDefine.MJConfig_3d.HuCardColFaceScaleConfig[viewId]
- local faceOffsetCfg = MJDefine.MJConfig_3d.HuCardFaceOffsetConfig[viewId]
- local cardIndex = self._cardIndex
- if rotationCfg then
- local pos = rotationCfg[cardIndex]
- self._mahjongImage:setEulerRotation(cc.vec3(pos.x, pos.y, pos.z))
- end
-
- if faceOffsetCfg then
- local pos = faceOffsetCfg[cardIndex]
- self._mahjongImage:setPosition(cc.p(size.width / 2 + pos.x, size.height / 2 + pos.y))
- end
-
- if faceScaleCfg then
- self._mahjongImage:setScale(faceScaleCfg[cardIndex])
- end
- end
- ---
- -- 更新组合牌牌面的显示
- --
- function Mahjong3DCard:updateOperateCardFacePosition()
- local size = self:getContentSize()
- local viewId = self:getViewId()
- local cardIndex = self._cardIndex
- local rotationCfg = MJDefine.MJConfig_3d.OpCardFaceRotationConfig[viewId]
- local faceScaleCfg = MJDefine.MJConfig_3d.OpCardFaceScaleConfig[viewId]
- local faceOffsetCfg = MJDefine.MJConfig_3d.OpCardFaceOffsetConfig[viewId]
- if faceScaleCfg then
- self._mahjongImage:setScale(faceScaleCfg[cardIndex] or 1.0)
- end
-
- if faceOffsetCfg then
- local pos = faceOffsetCfg[cardIndex] or {x = 0, y = 0}
- self._mahjongImage:setPosition(cc.p(size.width / 2 + pos.x, size.height / 2 + pos.y))
- end
-
- if rotationCfg then
- local pos = rotationCfg[cardIndex] or {x = 0, y = 0, z = 0}
- self._mahjongImage:setEulerRotation(cc.vec3(pos.x, pos.y, pos.z))
- end
- end
-
- function Mahjong3DCard:updateOpenCardFacePosition()
- local size = self:getContentSize()
- local viewId = self:getViewId()
- local cardIndex = self._cardIndex
-
- local rotationCfg = MJDefine.MJConfig_3d.OpenCardFaceRotationConfig[viewId]
- local faceOffsetCfg = MJDefine.MJConfig_3d.OpenCardFaceOffsetConfig[viewId]
- local faceScaleCfg = MJDefine.MJConfig_3d.OpenCardColFaceScaleConfig[viewId]
-
- if rotationCfg then
- local pos = rotationCfg[cardIndex] or {x = 0, y = 0, z = 0}
- self._mahjongImage:setEulerRotation(cc.vec3(pos.x, pos.y, pos.z))
- end
-
- if faceOffsetCfg then
- local pos = faceOffsetCfg[cardIndex] or {x = 0, y = 0}
- self._mahjongImage:setPosition(cc.p(size.width / 2 + pos.x, size.height / 2 + pos.y))
- end
-
- if faceScaleCfg then
- local scale = faceScaleCfg[cardIndex] or 1.0
- self._mahjongImage:setScale(scale)
- end
-
- end
-
- function Mahjong3DCard:setOutBackImage(index)
- self._mjType = MJDefine.MJConfig_3d.MJType.OutBlack
- self:initBackImage()
- if self._mahjongImage then
- self._mahjongImage:setVisible(false)
- end
- end
-
- function Mahjong3DCard:setOperateBackImage(index)
- self._mjType = MJDefine.MJConfig_3d.MJType.OperateBlack
- self:initBackImage()
- if self._mahjongImage then
- self._mahjongImage:setVisible(false)
- end
- end
-
- return Mahjong3DCard
|