local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local CommonHuCardView = require("mj.luaScript.Common.2d.CommonHuCardView") local Mahjong3DHuCardView = class("Mahjong3DHuCardView", CommonHuCardView) function Mahjong3DHuCardView:ctor(viewId) Mahjong3DHuCardView.super.ctor(self, viewId) end -- todo lwq xueliu begin function Mahjong3DHuCardView:createXueliuHuCard(value, viewId, cardIndex) -- local Mahjong3DCard = require("mj.luaScript.Common.3d.Mahjong3DCard") local Mahjong3DCard = require(MJDefine.MJConfig_3d.MAHJONG_CARD) local card = Mahjong3DCard:new(value, viewId, MJDefine.MJConfig_3d.MJType.Out, cardIndex) return card end function Mahjong3DHuCardView:getXueliuHuCardPosition(mjCard, mjIndex) local viewId = self:getViewId() local offsetConfig = MJDefine.MJConfig_3d.OutCardOffsetConfig[viewId] local startPos = MJDefine.MJConfig_3d.XueliuHuCardStartPos[viewId] local rowCount = 11 if app.room:getMaxPlayerCount() == 2 then startPos = MJDefine.MJConfig_3d.XueliuHuCardStartPos2[viewId] offsetConfig = MJDefine.MJConfig_3d.OutCardOffsetConfig2[viewId] rowCount = 19 end local row = math.ceil( mjIndex / rowCount ) local col = mjIndex % rowCount col = (col == 0) and rowCount or col local offsetX = offsetConfig[row][col].x local offsetY = offsetConfig[row][col].y local x = startPos.x + offsetX local y = startPos.y + offsetY return x, y end function Mahjong3DHuCardView:refreshXueliuHuZOrder() if app.room:getMaxPlayerCount() == 2 then self:refreshXueliuHuZOrder2() return end local viewId = self:getViewId() for cardIndex, card in ipairs(self._huCardNodes or {}) do local row = math.ceil( cardIndex / 11 ) local col = cardIndex % 11 col = (col == 0) and 11 or col local zorder = col if viewId == 1 then zorder = (3 - row) * 10 - col elseif viewId == 2 then zorder = 6 - col zorder = zorder > 0 and -zorder or zorder zorder = zorder - row * 10 elseif viewId == 4 then zorder = 6 - col zorder = zorder > 0 and -zorder or zorder zorder = zorder + row * 10 elseif viewId == 3 then zorder = col - (row - 3) * 10 end card:setLocalZOrder(zorder) end end function Mahjong3DHuCardView:refreshXueliuHuZOrder2() local viewId = self:getViewId() for cardIndex, card in ipairs(self._huCardNodes or {}) do local row = math.ceil( cardIndex / 19 ) local col = cardIndex % 19 col = (col == 0) and 19 or col local zorder = col if viewId == 2 then zorder = 10 - col zorder = zorder > 0 and -zorder or zorder zorder = zorder - row * 10 elseif viewId == 4 then zorder = col - 10 zorder = zorder > 0 and -zorder or zorder zorder = zorder + row * 10 end card:setLocalZOrder(zorder) end end -- todo lwq xueliu end function Mahjong3DHuCardView:createCard(info, mjIndex) local huCard = info.huCard local huType = info.huType local viewId = self:getViewId() local mjType = huCard == 0 and MJDefine.MJConfig_3d.MJType.HuBlack or MJDefine.MJConfig_3d.MJType.Hu local Mahjong3DCard = require(MJDefine.MJConfig_3d.MAHJONG_CARD) local mjCard = Mahjong3DCard:new(huCard, viewId, mjType, mjIndex) if huCard ~= 0 then self:setHuCardColor(mjCard, huType) end return mjCard end function Mahjong3DHuCardView:getHuCardScale (mjCard, mjIndex) if not MJDefine.MJConfig_3d.MJHuScale then return 1.0 end local viewId = self:getViewId() local huScale = MJDefine.MJConfig_3d.MJHuScale[viewId] or 1.0 return huScale end function Mahjong3DHuCardView:getHuCardPosition(mjCard, mjIndex) local viewId = self:getViewId() local startPos = MJDefine.MJConfig_3d.HuCardStartPos[viewId] local x = startPos.x + MJDefine.MJConfig_3d.HuCardCoorConfig[viewId][mjIndex].x local y = startPos.y + MJDefine.MJConfig_3d.HuCardCoorConfig[viewId][mjIndex].y return x, y end function Mahjong3DHuCardView: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 Mahjong3DHuCardView:refreshHuCardZOrder(huCardNodes) local viewId = self:getViewId() for k, mjCard in ipairs(huCardNodes or {}) do local col = k % 20 == 0 and 20 or k % 20 -- 列数,从右往左数 local row = math.ceil(k / 20) -- 行数,从下往上 local zorder = col if viewId == 1 then zorder = col elseif viewId == 2 then zorder = 10 - col zorder = zorder > 0 and -zorder or zorder zorder = zorder + (row - 1) * 10 elseif viewId == 4 then zorder = 10 - col zorder = zorder > 0 and -zorder or zorder zorder = zorder - (row - 1) * 10 elseif viewId == 3 then zorder = 20 - col end mjCard:setLocalZOrder(zorder) end end return Mahjong3DHuCardView