|
- local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine")
- local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
- local MJStatus = {
- Normal = 0,
- Select = 1,
- Disable = 2
- }
- local MJ_HAND_CARD_FLAG_TING = 1001
- local DEF_PAO_FLAG = 9000
- local CommonMahjongCard = class("CommonMahjongCard", function()
- local node = cc.ImageView:create()
- return node
- end)
-
- function CommonMahjongCard:ctor(value, viewId, mjType, mjIndex)
- self:setMahjongColor(cc.c3b(255, 255, 255))
- self:setValue(value)
- self._newValue = string.format("%x", value)
- self:setViewId(viewId)
- self._viewType = self:getViewType(viewId)
- self:setMJType(mjType)
- self:setMJIndex(mjIndex)
-
- self._imgMahjongBg = nil
- self._imgMahjong = nil
-
- self.status = MJStatus.Normal --默认麻将状态
- self:recordPostion()
-
- self:initViews()
- end
-
- function CommonMahjongCard:getViewType(viewId)
- local map = {"right", "top", "left", "mine"}
- return map[viewId]
- end
-
- function CommonMahjongCard:initViews()
- self:initBackImage()
- self:initMahjongImage()
- end
-
- function CommonMahjongCard:setMJIndex(cardIndex)
- self._cardIndex = cardIndex
- end
-
- function CommonMahjongCard:getMJIndex()
- return self._cardIndex
- end
-
- function CommonMahjongCard:initBackImage()
- local viewId = self:getViewId()
- local imgName = ""
- if self._mjType == MJDefine.MJConfig_2d.MJType.Stand then
- imgName = MJDefine.MJConfig_2d.MJStandImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Out then
- imgName = MJDefine.MJConfig_2d.MJOutImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OutBlack then
- imgName = MJDefine.MJConfig_2d.MJOutBlackImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Operate then
- imgName = MJDefine.MJConfig_2d.MJOperateGroupImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OperateBlack then
- imgName = MJDefine.MJConfig_2d.MJOperateBlackImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Hu then
- imgName = MJDefine.MJConfig_2d.MJHuImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.HuBlack then
- imgName = MJDefine.MJConfig_2d.MJOutBlackImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Open then
- imgName = MJDefine.MJConfig_2d.MJOutImage[viewId]
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OpenBlack then
- imgName = MJDefine.MJConfig_2d.MJOutBlackImage[viewId]
- end
- self:loadTextureFromPlist(imgName)
- end
-
- function CommonMahjongCard: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_2d_mahjong_card_%s.png", newValue)
- self._mahjongImage:loadTextureFromPlist(imgName)
-
- local size = self:getContentSize()
- self._mahjongImage:setPosition(cc.p(size.width / 2, size.height / 2))
- end
-
- if self._mjType == MJDefine.MJConfig_2d.MJType.Stand then
- self._mahjongImage:setVisible(self._viewId == MJDefine.MyViewId)
- self:updateHandCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Out then
- self:updateOutCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OutBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Operate then
- self:updateOperateCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OperateBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Hu then
- self:updateHuCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.HuBlack then
- self._mahjongImage:setVisible(false)
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.Open then
- self:updateOpenCardFacePosition()
- elseif self._mjType == MJDefine.MJConfig_2d.MJType.OpenBlack then
- self._mahjongImage:setVisible(false)
- end
-
- self:addChild(self._mahjongImage)
- end
-
- function CommonMahjongCard:setWordImageVisible(isVisible)
- if self._mahjongImage then
- self._mahjongImage:setVisible(isVisible)
- end
- end
-
- function CommonMahjongCard:setOutBackImage()
- self._mjType = MJDefine.MJConfig_2d.MJType.OutBlack
- self:initBackImage()
- if self._mahjongImage then
- self._mahjongImage:setVisible(false)
- end
- end
-
- function CommonMahjongCard:setOperateBackImage()
- self._mjType = MJDefine.MJConfig_2d.MJType.OperateBlack
- self:initBackImage()
- if self._mahjongImage then
- self._mahjongImage:setVisible(false)
- end
- end
-
- function CommonMahjongCard:setValue(value)
- self._value = value
- end
-
- function CommonMahjongCard:getValue()
- return self._value
- end
-
- function CommonMahjongCard:setViewId(viewId)
- self._viewId = viewId
- end
-
- function CommonMahjongCard:getViewId()
- return self._viewId
- end
-
- function CommonMahjongCard:setMJType(mjType)
- local value = self:getValue()
- if value == 0 then
- if mjType == MJDefine.MJConfig_2d.MJType.Open then
- mjType = MJDefine.MJConfig_2d.MJType.OpenBlack
- elseif mjType == MJDefine.MJConfig_2d.MJType.Operate then
- mjType = MJDefine.MJConfig_2d.MJType.OperateBlack
- elseif mjType == MJDefine.MJConfig_2d.MJType.Out then
- mjType = MJDefine.MJConfig_2d.MJType.OutBlack
- end
- end
- self._mjType = mjType
- end
-
- function CommonMahjongCard:getMJType()
- return self._mjType
- end
-
- function CommonMahjongCard:setMahjongColor(color)
- self._color = color
- end
-
- function CommonMahjongCard:getMahjongColor()
- return self._color
- end
-
- function CommonMahjongCard:setNormalColor()
- local color = cc.c3b(255, 255, 255)
- self:setColor(color)
- end
-
- function CommonMahjongCard:setGray()
- local color = cc.c3b(100, 100, 100)
- self:setColor(color)
- end
-
- function CommonMahjongCard:setYellow()
- local color = cc.c3b(255, 255, 0)
- self:setColor(color)
- end
-
- function CommonMahjongCard:setRed()
- local color = cc.c3b(255, 0, 0)
- self:setColor(color)
- end
-
- function CommonMahjongCard:setMahjongOpacity(opacity)
- self._opacity = opacity
- self:setOpacity(opacity)
- end
-
- function CommonMahjongCard:getMahjongOpacity()
- return self._opacity
- end
-
- function CommonMahjongCard:setMahjongBg()
- end
-
- function CommonMahjongCard:setMahjongImage()
- end
-
- function CommonMahjongCard:recordPostion(pos)
- if pos then
- self.initPostion = pos
- else
- self.initPostion = self:getPosition()
- end
- -- self.initPostion.y = initY or 64
- end
-
- function CommonMahjongCard:restorePostion(isAnim)
- -- dump(self.initPostion,"restorePostion")
- if isAnim then
- self:stopAllActions()
- self:runAction(cc.MoveTo:create(0.1, self.initPostion))
- else
- self:setPosition(self.initPostion)
- end
- end
- -- 确保动画结束后回到原来的位置
- function CommonMahjongCard:runSelectAnimation()
- if self.status == MJStatus.Normal then
- local initPos = self.initPostion
- -- local toPos = cc.p(initPos.x, initPos.y + MJ_HAND_CARD_TOUCH_Y)
- local toPos = cc.p(initPos.x, initPos.y + 20)
- self:stopAllActions()
- -- self:setPosition(toPos)
- self:runAction(cc.MoveTo:create(0.1, toPos))
- end
- end
-
- -- 确保动画结束后回到原来的位置
- function CommonMahjongCard:runDeSelectAnimation()
- -- dump(self.initPostion,"runDeSelectAnimation")
- -- if self.status== MJStatus.Select then
- self:stopAllActions()
- -- self:runAction(cc.MoveTo:create(0.1, self.initPostion))
- -- dump(self.initPostion,"runDeSelectAnimation")
- self:setPosition(self.initPostion)
- -- end
- end
-
- function CommonMahjongCard:setStatus(status)
- self.status = status
- if status == MJStatus.Select then--把选中和disable状态颜色区分一下,选中调浅一点
- self:setColor(cc.c3b(220, 220, 220))
- elseif status == MJStatus.Disable then
- self:setColor(cc.c3b(150, 150, 150))
- else
- self:setColor(cc.c3b(255, 255, 255))
- end
- end
-
- function CommonMahjongCard:getStatus()
- return self.status
- end
-
- function CommonMahjongCard:setTing(isTing)
- local node = self:getChildByTag(MJ_HAND_CARD_FLAG_TING)
-
- if not node or tolua.isnull(node) then
- node = cc.Sprite:createWithSpriteFrameName("mj_img_ting_flag.png")
- node:setScale(0.7)
- node:setTag(MJ_HAND_CARD_FLAG_TING)
- node:setPosition(self:getContentSize().width / 2, self:getContentSize().height + 5)
- self:addChild(node)
- end
-
- node:setVisible(isTing and true or false)
- end
-
- function CommonMahjongCard:getTing()
- local tingFlag = self:getChildByTag(MJ_HAND_CARD_FLAG_TING)
- if tingFlag and (not tolua.isnull(tingFlag)) and tingFlag:isVisible() then
- return true
- else
- return false
- end
- end
-
- function CommonMahjongCard:getType( )
- return self._mjType
- end
- ---
- -- 更新手牌麻将字位置
- --
- function CommonMahjongCard:updateHandCardFacePosition()
- local viewId = self:getViewId()
- local pos = self._mahjongImage:getPosition()
- local offset = MJDefine.MJConfig_2d.HandCardFaceOffsetConfig[viewId]
- self._mahjongImage:setPosition(cc.p(pos.x + offset.x, pos.y + offset.y))
- self._mahjongImage:setScale(cc.p(offset.scale, offset.scale))
- self._mahjongImage:setEulerRotation(cc.vec3(0, 0, offset.rotation))
- end
- ---
- -- 更新出牌麻将字位置
- --
- function CommonMahjongCard:updateOutCardFacePosition()
- local viewId = self:getViewId()
- local pos = self._mahjongImage:getPosition()
- local offset = MJDefine.MJConfig_2d.OutCardFaceOffsetConfig[viewId]
- self._mahjongImage:setPosition(cc.p(pos.x + offset.x, pos.y + offset.y))
- self._mahjongImage:setScale(cc.p(offset.scale, offset.scale))
- self._mahjongImage:setEulerRotation(cc.vec3(0, 0, offset.rotation))
- end
- ---
- -- 更新操作牌麻将字位置
- --
- function CommonMahjongCard:updateOperateCardFacePosition()
- local viewId = self:getViewId()
- local pos = self._mahjongImage:getPosition()
- local offset = MJDefine.MJConfig_2d.OpCardFaceOffsetConfig[viewId]
- self._mahjongImage:setPosition(cc.p(pos.x + offset.x, pos.y + offset.y))
- self._mahjongImage:setScale(cc.p(offset.scale, offset.scale))
- self._mahjongImage:setEulerRotation(cc.vec3(0, 0, offset.rotation))
- end
- ---
- -- 更新胡牌区麻将字位置
- --
- function CommonMahjongCard:updateHuCardFacePosition()
- local viewId = self:getViewId()
- local pos = self._mahjongImage:getPosition()
- local offset = MJDefine.MJConfig_2d.HuCardFaceOffsetConfig[viewId]
- self._mahjongImage:setPosition(cc.p(pos.x + offset.x, pos.y + offset.y))
- self._mahjongImage:setScale(cc.p(offset.scale, offset.scale))
- self._mahjongImage:setEulerRotation(cc.vec3(0, 0, offset.rotation))
- end
- ---
- -- 更新摊牌麻将字位置
- --
- function CommonMahjongCard:updateOpenCardFacePosition()
- local viewId = self:getViewId()
- local pos = self._mahjongImage:getPosition()
- local offset = MJDefine.MJConfig_2d.OpenCardFaceOffsetConfig[viewId]
- self._mahjongImage:setPosition(cc.p(pos.x + offset.x, pos.y + offset.y))
- self._mahjongImage:setScale(cc.p(offset.scale, offset.scale))
- self._mahjongImage:setEulerRotation(cc.vec3(0, 0, offset.rotation))
- end
-
- -- 获取麻将花色类型
- function CommonMahjongCard:getMJColorType()
- return math.floor(self:getValue() / 0x10)
- end
-
- --设置被选中
- function CommonMahjongCard:setSelected(s)
- self.selected=s
- end
- --获取选中状态
- function CommonMahjongCard:getSelected()
- return self.selected
- end
- -- 确保动画结束后回到原来的位置
- function CommonMahjongCard:runDeSelectAnimationWithTime(time)
- time = time or 0.1
- if self.status==MJDefine.MJStatus.Select or self.selected==MJDefine.MJStatus.Select then
- self:stopAllActions()
- self:runAction(cc.MoveTo:create(time, self.initPostion))
- end
- end
-
- --设置炮牌标识
- function CommonMahjongCard:setPaoFlag(isPaoCard)
- if isPaoCard and true == isPaoCard then
- if self:getIsPaoPai() then return end--本来就是炮牌,直接return
- local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/room/mj_flag_pao.png")
- flag:setTag(DEF_PAO_FLAG)
- self:addChild(flag)
- if self.desktopType == MJDefine.DesktopType.TwoDGold then
- flag:setPosition(cc.p(60,96))
- else
- flag:setPosition(cc.p(60,96))
- end
- else
- local flag = self:getChildByTag(DEF_PAO_FLAG)
- if flag and (not tolua.isnull(flag)) then
- flag:removeFromParent()
- flag = nil
- end
- end
- end
-
- function CommonMahjongCard:getIsPaoPai()
- local flag = self:getChildByTag(DEF_PAO_FLAG)
- if flag and (not tolua.isnull(flag)) and flag:isVisible() then
- return true
- end
- return false
- end
-
- return CommonMahjongCard
|