|
- local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine")
- local CommonHuCardView = class("CommonHuCardView", cc.UIView)
-
- function CommonHuCardView:ctor(viewId)
- CommonHuCardView.super.ctor(self)
-
- self._viewId = viewId
-
- self._huCards = {}
-
- self._huCardNodes = {}
- end
-
-
-
- function CommonHuCardView:onEnter()
- self:bindEvent(app.room, MJDefine.MJEvent.OutHuCardFalg, handler(self, self.onLocalOutXueliuHuCard));
-
- end
-
- function CommonHuCardView:getViewId()
- return self._viewId
- end
-
-
- function CommonHuCardView:onOutXueliuHuCard(card, callback)
- self:createXueliuAddCard(card)
- self:refreshXueliuHuZOrder()
- if callback then
- callback()
- end
- end
-
-
- function CommonHuCardView:onLocalOutXueliuHuCard(event)
- if self._viewId ~= 4 then
- return
- end
- self:onOutXueliuHuCard(event.card)
- end
-
-
- function CommonHuCardView:createXueliuHuCards(arg)
- if type(arg)=="number" then
- arg={
- {card=arg}
- }
- end
-
- for k,v in pairs(arg) do
- logD("lwq_test_arg_"..k.."#".."##"..v.card)
- self:createXueliuAddCard(v.card)
- end
-
- self:refreshXueliuHuZOrder()
- end
-
-
- function CommonHuCardView:refreshXueliuHuZOrder()
- local viewId = self:getViewId()
- if viewId == MJDefine.PlayerViewType.Top or viewId == MJDefine.PlayerViewType.Right then
- local count = table.nums(self._huCardNodes)
- for k, v in ipairs(self._huCardNodes or {}) do
- v:setLocalZOrder(count - k)
- end
- elseif viewId == MJDefine.PlayerViewType.Left then
- --[[local count = table.nums(self._huCardNodes)
- for k, v in ipairs(self._huCardNodes or {}) do
- v:setLocalZOrder(count - k)
- end--]]
- else
-
- end
- end
-
- function CommonHuCardView:createXueliuAddCard(value)
- local cardIndex = #self._huCardNodes + 1
-
- local card = self:createXueliuHuCard(value, self._viewId, cardIndex)
- local x, y = self:getXueliuHuCardPosition(card, cardIndex)
- card:setPosition(cc.p(x, y))
- self:addChild(card)
-
- table.insert(self._huCardNodes, card)
-
-
- -- self:refreshHuCardZOrder(self._huCardNodes)
- end
-
- function CommonHuCardView:createXueliuHuCard(value, viewId, mjIndex)
- local CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD)
- local mjCard = CardClass:new(value, viewId, MJDefine.MJConfig_2d.MJType.Out, mjIndex)
- local x, y = self:getXueliuHuCardPosition(mjCard, viewId, mjIndex)
- mjCard:setPosition(cc.p(x, y))
- return mjCard
- end
-
- function CommonHuCardView:getXueliuHuCardPosition(mjCard, mjIndex)
- local x = 0
- local y = 0
- local viewId = self:getViewId()
- local playerCount = app.room:getMaxPlayerCount()
- local mjRowCount = MJDefine.MJConfig_2d.OutCardRowCount[playerCount][viewId]
- local col = mjIndex % mjRowCount
- col = col == 0 and mjRowCount or col
- local row = math.ceil(mjIndex / mjRowCount)
-
- -- local startPos = MJDefine.MJConfig_2d.OutCardStartPos[viewId]
- local startPos = MJDefine.MJConfig_2d.HuXueliuCardStartPos[viewId]
-
- -- local offset = MJDefine.MJConfig_2d.OutCardOffsetConfig[viewId]
- local offset = MJDefine.MJConfig_2d.OutCardOffsetConfig[viewId]
- local cardSize = mjCard:getContentSize()
-
- if playerCount == 2 then
- --[[startPos = MJDefine.MJConfig_2d.OutCardStartPos2[viewId]
- offset = MJDefine.MJConfig_2d.OutCardOffsetConfig2[viewId]--]]
- startPos = MJDefine.MJConfig_2d.HuXueliuCardStartPos2[viewId]
- offset = MJDefine.MJConfig_2d.OutCardOffsetConfig2[viewId]
- end
-
- if viewId == MJDefine.PlayerViewType.My then
- x = startPos.x + (col - 1) * (cardSize.width + offset.x)
- y = startPos.y + (1 - row) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Right then
- x = startPos.x + (row - 1) * (cardSize.width + offset.x)
- y = startPos.y + (col - 1) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Top then
- x = startPos.x + (1 - col) * (cardSize.width + offset.x)
- y = startPos.y + (row - 1) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Left then
- x = startPos.x + (1 - row) * (cardSize.width + offset.x)
- y = startPos.y + (1 - col) * (cardSize.height + offset.y)
- end
-
- return x, y
- end
-
-
-
-
-
-
- function CommonHuCardView:createHuCards(huCards)
- self:removeAllChildren()
- self._huCardNodes = {}
- for mjIndex, mjValue in ipairs(huCards or {}) do
- local mjCard = self:createCard(mjValue, mjIndex)
- local x, y = self:getHuCardPosition(mjCard, mjIndex)
- mjCard:setPosition(cc.p(x, y))
-
- local scale = self:getHuCardScale(mjCard, mjIndex)
- mjCard:setScale(scale)
-
- self:addChild(mjCard)
- table.insert(self._huCardNodes, mjCard)
- end
-
- self:refreshHuCardZOrder(self._huCardNodes)
- end
-
- function CommonHuCardView:createCard(info, mjIndex)
- local huCard = info.huCard
- local huType = info.huType
- local viewId = self:getViewId()
- local mjType = huCard == 0 and MJDefine.MJConfig_2d.MJType.HuBlack or MJDefine.MJConfig_2d.MJType.Hu
- local CardClass = require(MJDefine.MJConfig_2d.MAHJONG_CARD)
- local mjCard = CardClass:new(huCard, viewId, mjType, mjIndex)
- if huCard ~= 0 then
- self:setHuCardColor(mjCard, huType)
- end
- return mjCard
- end
-
- function CommonHuCardView:getHuCardScale (mjCard, mjIndex)
- if not MJDefine.MJConfig_2d.MJHuScale then
- return 1.0
- end
- local viewId = self:getViewId()
- local huScale = MJDefine.MJConfig_2d.MJHuScale[viewId] or 1.0
- return huScale
- end
-
- function CommonHuCardView:getHuCardPosition(mjCard, mjIndex)
- local x = 0
- local y = 0
- local viewId = self:getViewId()
- local startPos = MJDefine.MJConfig_2d.HuCardStartPos[viewId]
- local offset = MJDefine.MJConfig_2d.HuCardOffsetPos[viewId]
- local rowCount = MJDefine.MJConfig_2d.HuCardRowCount[viewId]
- local col = mjIndex % rowCount
- col = col == 0 and rowCount or col
- local row = math.ceil(mjIndex / rowCount)
- local cardSize = mjCard:getContentSize()
- if viewId == MJDefine.PlayerViewType.My then
- x = startPos.x + (1 - col) * (cardSize.width + offset.x)
- y = startPos.y + (row - 1) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Right then
- x = startPos.x + (1 - row) * (cardSize.width + offset.x)
- y = startPos.y + (1 - col) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Top then
- x = startPos.x + (col - 1) * (cardSize.width + offset.x)
- y = startPos.y + (1 - row) * (cardSize.height + offset.y)
- elseif viewId == MJDefine.PlayerViewType.Left then
- x = startPos.x + (row - 1) * (cardSize.width + offset.x)
- y = startPos.y + (col - 1) * (cardSize.height + offset.y)
- end
-
- return x, y
- end
-
- function CommonHuCardView:getHuCards(huCards, isClean)
- self._huCards = self._huCards or {};
-
- if isClean then
- self._huCards = {};
- end
-
- for k, v in ipairs(huCards or {}) do
- table.insert(self._huCards, v);
- end
-
- self:createHuCards(self._huCards)
- end
-
- function CommonHuCardView:refreshHuCardZOrder()
-
- local viewId = self:getViewId()
- local count = table.nums(self._huCardNodes)
- if viewId == MJDefine.PlayerViewType.My or viewId == MJDefine.PlayerViewType.Left then
- for k, v in ipairs(self._huCardNodes or {}) do
- v:setLocalZOrder(count - k)
- end
- end
-
- end
-
- --- CommonHuCardView:setHuCardColor 设置胡牌颜色
- -- @param huType 胡牌类型
- function CommonHuCardView:setHuCardColor(huCard, huType)
- if huCard ~= 0 and huType == MJDefine.MJHuType.Zimo then
- -- 自摸牌,设置颜色显示
- huCard:setColor(cc.c3b(237,236,134));
- end
- end
-
- return CommonHuCardView
|