require("luaScript.Views.Room.RoomFunctions") local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJRoomView = MJFramework.MJFrameworkClassImprot("mj_xzdd.luaScript.Views.Room.xzddRoomView") local xzdd2rRoomView = class("xzdd2rRoomView", MJRoomView) function xzdd2rRoomView:ctor() xzdd2rRoomView.super.ctor(self) end -- 换牌张数 function xzdd2rRoomView:getSwapCardCount() local gameInfo = json.decode(app.room.roomInfo.strGameInfo) local swapcard = tonumber(gameInfo.swapcard) or 4 print('swapcard->', swapcard) return swapcard end --换三张,服务器会通过0x8122通知换牌(过滤一下数据,换3换4都为4张牌,但换3的第4张牌数值为0) function xzdd2rRoomView:onNoticeSwapCardResponse(response) local function runNoticeSwapCard(onEnd) logD("xzdd2rRoomView:onNoticeSwapCardResponse") local data = response.response self:showSwapCard(true) self.playerHandCards[MJDefine.MyViewId]:initSwapCardTouchEvent() --弹出推荐牌 self.playerHandCards[MJDefine.MyViewId]:resetHandCards() -- 过滤0值 local swapDatas = clone(data.swapCards.Datas) for i = #swapDatas, 1, -1 do if swapDatas[i].card == 0 then table.remove(swapDatas, i) end end self.playerHandCards[MJDefine.MyViewId]:selectCardsByCards(data.swapCards) self.swapCard.Items.Button_sure:setEnabled(true) if onEnd then onEnd() end end logD("xzdd2rRoomView:runNoticeSwapCard") self:addCallBack(runNoticeSwapCard) end function xzdd2rRoomView:showSwapCard(isOpered)--是否已经操作过 xzdd2rRoomView.super.showSwapCard(self, isOpered) local txtTable = { [3] = '选择以下三张 底牌', [4] = '选择以下四张 底牌', } self.swapCard.Items.Text_tip1:setText(txtTable[self:getSwapCardCount()]) end --换三张成功后的信息 function xzdd2rRoomView:onChangeCardInfo(response) local function runChangeCardInfo(onEnd) logD("xzddRoomView:onChangeCardInfo") self:hideSwapCard() local data = response.response self:showSwapDirection(data.swapType) for i,v in pairs(data.swapCards) do for i=1,4 do if v.card ~= 0 then if i == MJDefine.MyViewId and self.playerHandCards[MJDefine.MyViewId] then self.playerHandCards[MJDefine.MyViewId]:onGetCard(nil,tonumber(v.card),true) elseif self.playerHandCards[i] then self.playerHandCards[i]:onGetCard(nil,0,true) end end end end self.playerHandCards[MJDefine.MyViewId]:resetHandCards() for i=1,4 do if self.playerHandCards[i] then self.playerHandCards[i]:deleteSwapCards() end end self.playerHandCards[MJDefine.MyViewId]:removeTouchEventOnly() --两人麻将没有定缺,2D金黄大换三张后不能出牌,这里初始化一下touch事件 self.playerHandCards[MJDefine.MyViewId]:initTouchEvent() for i,v in pairs(data.swapCards) do local handCards = self.playerHandCards[MJDefine.MyViewId]:getHandCardNodes() or {} if v.card ~= 0 then for j,mjCard in pairs(handCards) do if mjCard:getValue() == tonumber(v.card) and mjCard:getSelected() ~= MJDefine.MJStatus.Select then --local mjCard = self.playerHandCards[MJDefine.MyViewId]:getMjByValue(tonumber(v.card)) --if mjCard and mjCard:getSelected() ~= MJDefine.MJStatus.Select then mjCard:setSelected(MJDefine.MJStatus.Select) mjCard:recordPostion() local initPos = mjCard:getPosition() local toPos = cc.p(initPos.x, initPos.y + 25) mjCard:setPosition(toPos) mjCard:runDeSelectAnimationWithTime(1.0) mjCard:runAction(cc.Sequence:create(cc.DelayTime:create(1.0),cc.CallFunc:create(function() mjCard:setSelected(MJDefine.MJStatus.Normal) end))) break end --end end end end --[[self:runAction(cc.Sequence:create(cc.DelayTime:create(1.0),cc.CallFunc:create(function() self.playerHandCards[MJDefine.MyViewId]:initTouchEvent() end)))--]] if onEnd then onEnd() end end logD("xzddRoomView:runChangeCardInfo--------") self:addCallBack(runChangeCardInfo) end -- 强制更改为对家 function xzdd2rRoomView:showSwapDirection(dir) if dir then dir = 2 end xzdd2rRoomView.super.showSwapDirection(self, dir) end return xzdd2rRoomView