|
- local MJRoomToolView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomToolView")
- local MJRoomMessageView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomMessageView")
- local MJRoomPlayerView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomPlayerView")
- local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
- local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
- local MJHandCardView=MJFramework.MJImport("mj.luaScript.Views.Game.MJHandCardView")
- local MJRoomDirection=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDirection")
- local MJWanFa=MJFramework.MJImport("luaScript.SubGameDefine.MaJiang.MJWanFa")
- local MJAnimationCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJAnimationCompnent")
- local MJSound=MJFramework.MJImport("mj.luaScript.MJSound")
-
- local MJRoomReplayView=MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomReplayView")
- local xzddRoomReplayView = class("xzddRoomReplayView", MJRoomReplayView)
-
- function xzddRoomReplayView:ctor(data)
- xzddRoomReplayView.super.ctor(self,data)
- -- --玩家牌局面板
- -- self.playerHandCards={}
- -- self.data=data
- -- app:changeGameProtocol(app.gameId,1)
- end
-
- function xzddRoomReplayView:loadUI()
- local ui = loadUI("mj_xzdd/res/ui_fangjian/mj_xzdd_roomView.ui")
- self.ui = ui;
- self:addChild(ui);
- end
-
- function xzddRoomReplayView:onEnter()
- xzddRoomReplayView.super.onEnter(self)
- self:initLogo()
- self:doSound()
- self:setCheckDefault()
- self:initSwapLayer()
- self.huOrder = 0
-
- end
-
- function xzddRoomReplayView:initLogo()
- self.ui.Items.ImageView_Logo:setVisible(false)
- end
-
- -- 重写父类,分数要除10
- function xzddRoomReplayView:updateRoomData()
- local data=self.data--=MJDefine.TestData
- -- self.data=data
- app.room:initRoomInfo()
- local roomInfo=app.room.roomInfo
-
- roomInfo.nMaxPlayCount = table.nums(data.user)
- roomInfo.nShowTableId = data.roomid or data.roomNum
- roomInfo.strGameInfo=json.encode(data.ext)
- roomInfo.nGameStartCount=data.turn
- roomInfo.nTotalGameNum=data.totalCount or data.nbound or 0
- local dipai=MJFunction.convertToCards(data.dipai)
- roomInfo.nLeaveCardNum=#dipai
- roomInfo.stopFlag=data.flag
- roomInfo.gameId = data.gameid
-
- --用户信息
- roomInfo.memberList={}
- for k,v in pairs(data.user) do
- local nUserId=tonumber(k)
- if not roomInfo.memberList[nUserId] then
- roomInfo.memberList[nUserId] = {}
- end
- roomInfo.memberList[nUserId].nUserId = nUserId
- roomInfo.memberList[nUserId].nSeatId = v.seatid
- -- self.roomInfo.memberList[v.nUserId].nPlayerFlag = v.nPlayerFlag
- local userInfo=app.playerInfoManager:getPlayerInfo(nUserId)
- userInfo.nickname = userInfo.name
- userInfo.headimgurl = userInfo.head
- roomInfo.memberList[nUserId].userInfo = json.encode(userInfo)--v.userInfo
- -- self.roomInfo.memberList[v.nUserId].nTurnScore = v.nTurnScore
- roomInfo.memberList[nUserId].nTotalMoney = app.room:isUseDivision10() and data.score[k] / 10 or data.score[k]
- -- self.roomInfo.memberList[v.nUserId].nTingStatus = v.nTingStatus
- -- self.roomInfo.memberList[v.nUserId].gruoupCards = v.gruoupCards
- -- self.roomInfo.memberList[v.nUserId].outCards = v.outCards
-
- local tempCards=MJFunction.convertToCards(v.hand)
- local handCards={}
- for k,v in pairs(tempCards) do
- if tonumber(v) then
- table.insert(handCards,{card=tonumber(v)})
- end
- end
- roomInfo.memberList[nUserId].handCards = handCards
- -- roomInfo.memberList[nUserId].nOnlineStatus = v.nOnlineStatus
- -- roomInfo.memberList[nUserId].nDisbandStatus = v.nDisbandStatus
-
-
- -- self.dismissInfo[nUserId] = v.nDisbandStatus
- --这里只记录,暂时没用到。可能战绩回放的时候是需要用的
- -- local cardData = self:serverCardToMyCard(v.handCard)
- -- self.roomInfo.memberList[v.nUserId].cardList = {}
- -- self.roomInfo.memberList[v.nUserId].cardList = cardData
- end
- roomInfo.nBankSeatId=roomInfo.memberList[tonumber(data.ext.banker)].nSeatId
- app.room:updateUserSeateShowId()
-
- self:parseData()
- end
-
-
- function xzddRoomReplayView:parseData()
- self.piaotimes = 0--记录有几次飘操作,为了飘完后删除飘字
- local data = self.data
- --战报解析
- self.reports={}
- local ops=string.split(data.ops,"|")
- for k,v in pairs(ops) do
- local op=string.split(v,",")
- local nUserId=tonumber(op[1])
- local opType=op[2]
- local opStr = op[3]
-
-
- if opType == "ShowAction" then
- local opList = {}
- if nUserId==0 then
- local temp = string.split(opStr, ";")
- for k,v in pairs(temp) do
- local temp2 = string.split(v, " ")
- local userId = tonumber(temp2[1])
- table.remove(temp2,1)
- local operates = temp2
- table.insert(opList,{nUserId = userId,operates = self:margeOperates(operates) })
- end
- else
- local operates = string.split(opStr, " ")
- table.insert(opList,{nUserId = nUserId,operates = self:margeOperates(operates) })
- end
- table.insert(self.reports,{opType=opType,opList=opList})
- elseif opType == "HuanPai" then
- self.huanPai = self.huanPai or {}
- local huanCards = {}
- local tCards = string.split(opStr, "_")
- for i,v in pairs(tCards) do
- if v and tonumber(v) then
- table.insert(huanCards,tonumber(v))
- end
- end
- table.insert(self.huanPai,{nUserId=nUserId,opType="HuanPai",cards = huanCards })
- local op=string.split(ops[k+1],",")
- local opType=op[2]
- if opType ~= "HuanPai" then
- table.insert(self.reports,{huanPaiInfo=self.huanPai,opType="HuanPai" })
- end
- elseif opType == "HuanPaiType" then
- local temp = string.split(opStr, "_")
- local huanPaiType = tonumber(temp[1])
- table.insert(self.reports,{nUserId=nUserId,opType=opType,huanPaiType = huanPaiType })
- elseif opType == "HuanPaiDone" then
- self.huanPaiDone = self.huanPaiDone or {}
- local huanCards = {}
- local tCards = string.split(opStr, "_")
- for i,v in pairs(tCards) do
- if v and tonumber(v) then
- table.insert(huanCards,tonumber(v))
- end
- end
- table.insert(self.huanPaiDone,{nUserId=nUserId,opType="HuanPaiDone",cards = huanCards })
- local op=string.split(ops[k+1],",")
- local opType=op[2]
- if opType ~= "HuanPaiDone" then
- table.insert(self.reports,{huanPaiInfo=self.huanPaiDone,opType="HuanPaiDone" })
- end
- elseif opType == "SelectedQue" then
- local opList = {}
- local temp2 = {}
- table.insert(temp2,tonumber(0))
- table.insert(temp2,tonumber(1))
- table.insert(temp2,tonumber(2))
- table.insert(opList,{nUserId = nUserId,operates = self:margeOperates(temp2) })
- table.insert(self.reports,{opType="ShowDingQueOpt",opList=opList})
- table.insert(self.reports,{nUserId=nUserId,opType="SubmitOp",submitOp = tonumber(opStr) })
-
- local tCards = string.split(opStr, "_")
- local card,redNum = nil,0
- if tCards[1] then card = tonumber(tCards[1]) end
- if tCards[2] then redNum = tonumber(tCards[2]) end
- table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card,redNum=redNum})
- elseif opType == "BaoJiao" then
- local opList = {}
- local temp2 = {}
- table.insert(temp2,tonumber(1))
- --table.insert(temp2,tonumber(2))
- table.insert(opList,{nUserId = nUserId,operates = self:margeOperates(temp2) })
- table.insert(self.reports,{opType="ShowBaoOpt",opList=opList})
- table.insert(self.reports,{nUserId=nUserId,opType="SubmitOp",submitOp = tonumber(opStr) })
-
- local tCards = string.split(opStr, "_")
- local card,redNum = nil,0
- if tCards[1] then card = tonumber(tCards[1]) end
- if tCards[2] then redNum = tonumber(tCards[2]) end
- table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card,redNum=redNum})
- elseif opType == "SubmitOp" then --提交的操作
- local temp = string.split(opStr, "_")
- local submitOp = tonumber(temp[1])
- table.insert(self.reports,{nUserId=nUserId,opType=opType,submitOp = submitOp })
- elseif opType == "PiaoOpt" then
- self.piaotimes = self.piaotimes + 1
- local ops = string.split(opStr, "_")
- local piaostate = tonumber(ops[1])
- table.insert(self.reports,{nUserId=nUserId,opType=opType,piaostate = piaostate })
- elseif "DisCard"~=opType then
- local tCards = string.split(opStr, "_")
- local card,redNum = nil,0
- if tCards[1] then card = tonumber(tCards[1]) end
- if tCards[2] then redNum = tonumber(tCards[2]) end
- table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card,redNum=redNum})
- end
- end
- if self.data.ext.luoboCards then
- local luoboCards=MJFunction.convertToCards(self.data.ext.luoboCards)
- if #luoboCards > 0 then
- table.insert(self.reports,{opType="BaLuoBo"})
- end
- end
- end
-
- --合并操作 只显示一个杠
- function xzddRoomReplayView:margeOperates(operates)
- local ops = {}
- local isGang = false
- for k,v in pairs(operates) do
- local op = tonumber(v)
- if (op==MJDefine.MJOperateType.OPREATE_ZHIGANG)
- or (op==MJDefine.MJOperateType.OPREATE_BAGANG)
- or (op==MJDefine.MJOperateType.OPREATE_ANGANG) then
- if not isGang then
- table.insert(ops,op)
- isGang = true
- end
- else
- table.insert(ops,op)
- end
- end
- return ops
- end
-
-
- function xzddRoomReplayView:startGame()
- self:onGameStartResponse()
-
- --设置为回放模式
- for k,v in pairs(self.playerHandCards) do
- v:setReplay(true)
- end
-
- self:setIsReplay(true)
- app.room.roomInfo.laizi = tonum(self.data.ext.laizi)
- self:onGameSendCardResponse()
- self.playerHandCards[MJDefine.MyViewId]:removeTouchEvent()
-
- end
-
- function xzddRoomReplayView:initHanders()
- xzddRoomReplayView.super.initHanders(self)
- self.handers ["BaoPai"] = handler(self,self.onBaoPaiRes)
- self.handers ["SelectedQue"] = handler(self,self.onSelectedQueRes)
- self.handers ["DianPao"] = handler(self,self.onDianPao)
- self.handers ["DianPaoHu"] = handler(self,self.onPlayerHu)
- self.handers ["QiangGangHu"] = handler(self,self.onPlayerHu)
- self.handers ["ZiMoHu"] = handler(self,self.onPlayerHu)
- self.handers ["ShowAction"] = handler(self,self.onShowOperates)
- self.handers ["ShowBaoOpt"] = handler(self,self.onShowBaoOpt)
- self.handers ["SubmitOp"] = handler(self,self.onSubmitOperate)
- self.handers ["ActionWait"] = handler(self,self.onActionWait)
- self.handers ["BaLuoBo"]=handler(self,self.onBaLuoBo)
- self.handers ["ShowDingQueOpt"]=handler(self,self.onSelectedQueOpt)
- self.handers ["HuanPaiType"]=handler(self,self.onHuanPaiType)
- --self.handers ["HuanPaiType"]=handler(self,self.onHuanPaiType)
- self.handers ["HuanPaiDone"]=handler(self,self.onHuanPaiDone)
- self.handers ["HuanPai"]=handler(self,self.onHuanPai)
- end
-
- function xzddRoomReplayView:onActionWait(data)
- local response = {
- nUserId = data.nUserId,
- opType = data.card,
- }
- self:onWaitOperate({response = response})
- end
-
- function xzddRoomReplayView:onSubmitOperate(data)
- local viewId = app.room:getViewIdByUserId(data.nUserId)
- local Layout_Operate = self.playerHandCards[viewId].ui.Items.Layout_Operate
- local btn = Layout_Operate:getChildByTag(data.submitOp)
- if btn then
- local hand = cc.Sprite:create("mj/res/ui/zy_fangjian/mj_room_hand.png")
- btn:addChild(hand)
- local size = btn:getContentSize()
- hand:setPosition(cc.p(size.width/2+20,size.height/2-20))
- local action = cc.Sequence:create(cc.MoveBy:create(0.5,cc.p(-10,10)),cc.MoveBy:create(0.5,cc.p(10,-10)))
- hand:runAction(cc.RepeatForever:create(action))
-
- -- if data.submitOp == MJDefine.MJOperateType.OPREATE_CANCEL then
- btn:runAction(cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function()
- self.playerHandCards[viewId]:hideOperate()
- end)))
- -- end
- end
- end
-
- function xzddRoomReplayView:onShowOperates(data)
- local opList = data.opList
- for k,v in pairs(opList) do
- local nUserId = v.nUserId
- local operates = v.operates
- local viewId=app.room:getViewIdByUserId(nUserId)
-
- local Layout_Operate = self.playerHandCards[viewId].ui.Items.Layout_Operate
- Layout_Operate:removeAllChildren()
- Layout_Operate:setVisible(true)
- local x=Layout_Operate:getContentSize().width
- if viewId==MJDefine.PlayerViewType.Left then
- x = 0
- end
- table.insert(operates,1,MJDefine.MJOperateType.OPREATE_CANCEL)
- local y=Layout_Operate:getContentSize().height/2
-
-
- local function createOperate(op,isLeft)
- local btnOperate=cc.Button:createNode()
- btnOperate:setDefaults()
- btnOperate:setText("")
- btnOperate:loadTextureNormal(MJDefine.MJOperateImage[op])
- if isLeft then
- x = x + MJDefine.MJ_OPERATE_PADDING
- else
- x = x -MJDefine.MJ_OPERATE_PADDING
- end
- btnOperate:setPosition(cc.p(x,y))
- btnOperate:setTag(op)
- Layout_Operate:addChild(btnOperate)
- end
-
-
- if viewId==MJDefine.PlayerViewType.Left then
- for i = #operates,1,-1 do
- local op = tonumber(operates[i])
- createOperate(op,true)
- end
- else
- for _,strOp in pairs(operates) do
- local op = tonumber(strOp)
- createOperate(op,false)
- end
- end
- -- self.playerHandCards[viewId]:
- if viewId~=MJDefine.MyViewId then
-
- local node = self.playerView.allNodes[viewId]
- local pos = cc.pAdd(node.player:getPosition(),cc.p(38,66))
- if viewId==MJDefine.PlayerViewType.Left then
- Layout_Operate:setAnchorPoint(cc.p(0,0.5))
- elseif viewId==MJDefine.PlayerViewType.Right then
- pos.x = pos.x-100
- elseif viewId==MJDefine.PlayerViewType.Top then
- Layout_Operate:setAnchorPoint(cc.p(1,1))
- pos.y = pos.y-33*2
- end
- if viewId==MJDefine.PlayerViewType.Left or viewId==MJDefine.PlayerViewType.Right then
- pos.y = pos.y-104
- end
-
- Layout_Operate:setPosition(pos)
- Layout_Operate:setScale(0.7)
- end
- end
- end
-
- function xzddRoomReplayView:onShowBaoOpt(data)
- local opList = data.opList
- for k,v in pairs(opList) do
- local nUserId = v.nUserId
- local operates = v.operates
- local viewId=app.room:getViewIdByUserId(nUserId)
-
- local Layout_Operate = self.playerHandCards[viewId].ui.Items.Layout_Operate
- Layout_Operate:removeAllChildren()
- Layout_Operate:setVisible(true)
- local x=Layout_Operate:getContentSize().width
- if viewId==MJDefine.PlayerViewType.Left then
- x = 0
- end
- table.insert(operates,1,MJDefine.MJOperateType.OPREATE_CANCEL)
- local y=Layout_Operate:getContentSize().height/2
-
- local TOperateImage = {
- [0]="mj/res/ui/zy_fangjian/operate/mj_btn_guo.png",
- [1]="mj/res/ui/zy_fangjian/operate/mj_btn_bao1.png",
- --[2]="mj/res/ui/zy_fangjian/operate/mj_btn_bozimo.png",
- }
- local function createOperate(op,isLeft)
- local btnOperate=cc.Button:createNode()
- btnOperate:setDefaults()
- btnOperate:setText("")
- btnOperate:loadTextureNormal(TOperateImage[op])
- if isLeft then
- x = x + MJDefine.MJ_OPERATE_PADDING
- else
- x = x -MJDefine.MJ_OPERATE_PADDING
- end
- btnOperate:setPosition(cc.p(x,y))
- btnOperate:setTag(op)
- Layout_Operate:addChild(btnOperate)
- end
-
-
- if viewId==MJDefine.PlayerViewType.Left then
- for i = #operates,1,-1 do
- local op = tonumber(operates[i])
- createOperate(op,true)
- end
- else
- for _,strOp in pairs(operates) do
- local op = tonumber(strOp)
- createOperate(op,false)
- end
- end
- -- self.playerHandCards[viewId]:
- if viewId~=MJDefine.MyViewId then
-
- local node = self.playerView.allNodes[viewId]
- local pos = cc.pAdd(node.player:getPosition(),cc.p(38,66))
- if viewId==MJDefine.PlayerViewType.Left then
- Layout_Operate:setAnchorPoint(cc.p(0,0.5))
- elseif viewId==MJDefine.PlayerViewType.Right then
- pos.x = pos.x-100
- elseif viewId==MJDefine.PlayerViewType.Top then
- Layout_Operate:setAnchorPoint(cc.p(1,1))
- pos.y = pos.y-33*2
- end
- if viewId==MJDefine.PlayerViewType.Left or viewId==MJDefine.PlayerViewType.Right then
- pos.y = pos.y-104
- end
-
- Layout_Operate:setPosition(pos)
- Layout_Operate:setScale(0.7)
- end
- end
- end
-
- --显示定缺
- function xzddRoomReplayView:onSelectedQueOpt(data)
- local opList = data.opList
- for k,v in pairs(opList) do
- local nUserId = v.nUserId
- local operates = v.operates
- local viewId=app.room:getViewIdByUserId(nUserId)
-
- local Layout_Operate = self.playerHandCards[viewId].ui.Items.Layout_Operate
- Layout_Operate:removeAllChildren()
- Layout_Operate:setVisible(true)
- local x=Layout_Operate:getContentSize().width
- if viewId==MJDefine.PlayerViewType.Left then
- x = 0
- end
- --table.insert(operates,1,MJDefine.MJOperateType.OPREATE_CANCEL)
- local y=Layout_Operate:getContentSize().height/2
-
- local TOperateImage = {
- [0]="mj_xzdd/res/zy_fangjian/xzddadd/xzdd_btn_wan.png",
- [1]="mj_xzdd/res/zy_fangjian/xzddadd/xzdd_btn_tong.png",
- [2]="mj_xzdd/res/zy_fangjian/xzddadd/xzdd_btn_tiao.png",
- }
- local function createOperate(op,isLeft)
- local btnOperate=cc.Button:createNode()
- btnOperate:setDefaults()
- btnOperate:setText("")
- btnOperate:loadTextureNormal(TOperateImage[op])
- if isLeft then
- x = x + MJDefine.MJ_OPERATE_PADDING
- else
- x = x -MJDefine.MJ_OPERATE_PADDING
- end
- btnOperate:setPosition(cc.p(x,y))
- btnOperate:setTag(op)
- Layout_Operate:addChild(btnOperate)
- end
-
-
- if viewId==MJDefine.PlayerViewType.Left then
- for i = #operates,1,-1 do
- local op = tonumber(operates[i])
- createOperate(op,true)
- end
- else
- for _,strOp in pairs(operates) do
- local op = tonumber(strOp)
- createOperate(op,false)
- end
- end
- -- self.playerHandCards[viewId]:
- if viewId~=MJDefine.MyViewId then
-
- local node = self.playerView.allNodes[viewId]
- local pos = cc.pAdd(node.player:getPosition(),cc.p(38,-50))
- if viewId==MJDefine.PlayerViewType.Left then
- Layout_Operate:setAnchorPoint(cc.p(0,0.5))
- elseif viewId==MJDefine.PlayerViewType.Right then
- pos.x = pos.x-80
- elseif viewId==MJDefine.PlayerViewType.Top then
- Layout_Operate:setAnchorPoint(cc.p(1,1))
- pos.y = pos.y+50
- end
-
- Layout_Operate:setPosition(pos)
- Layout_Operate:setScale(0.7)
- end
- end
- end
-
- function xzddRoomReplayView:onHuanPaiType(data)
- self:showSwapDirection(data.huanPaiType)
- end
-
- function xzddRoomReplayView:onOperate(data)
- local roomInfo=app.room.roomInfo
-
- local operates={
- ["Peng"]=MJDefine.MJOperateType.OPREATE_PENG,
- ["BaGang"]=MJDefine.MJOperateType.OPREATE_BAGANG,
- ["AnGang"]=MJDefine.MJOperateType.OPREATE_ANGANG,
- ["Gang"]=MJDefine.MJOperateType.OPREATE_ZHIGANG,
- ["ZhiGang"]=MJDefine.MJOperateType.OPREATE_ZHIGANG,
- }
- self.fromSeatId = self.fromSeatId or roomInfo.memberList[data.nUserId].nSeatId
- local response={
- nUserId=data.nUserId,
- opCard=data.card,
- redNum = data.redNum,
- opType=operates[data.opType],
- -- operates={},
- nSeatId=roomInfo.memberList[data.nUserId].nSeatId,
- isNeedOutCard=0,
- fromSeatId=self.fromSeatId,
- }
-
- --碰了之后需要出牌
- if data.opType=="Peng" then
- response.isNeedOutCard=1
- end
-
- for k,v in pairs(self.playerHandCards) do
- v:hideOperate()
- end
-
- self:onOperationCodeSuccess({response=response})
- end
-
- function xzddRoomReplayView:onOutCard(data)
- local roomInfo=app.room.roomInfo
- local response={
- nUserId=data.nUserId,
- card=data.card,
- operates={},
- -- nSeatId=roomInfo.memberList[data.nUserId].nSeatId,
- }
-
- self.fromSeatId=roomInfo.memberList[data.nUserId].nSeatId
- local viewId=app.room:getViewIdByUserId(data.nUserId)
- self.playerHandCards[viewId]:hideOperate()
- if viewId==MJDefine.MyViewId then
- -- self.playerHandCards[MJDefine.MyViewId].touchMJ=self.playerHandCards[MJDefine.MyViewId]:getMjByValue(data.card)
- end
- self:onOutCardSuccess({response=response})
- end
-
- function xzddRoomReplayView:onBaoPaiRes(data)
- local response={
- nUserId=data.nUserId,
- isBaoPai=data.card,
- }
- local viewId=app.room:getViewIdByUserId(data.nUserId)
- self.playerHandCards[viewId]:hideOperate()
- self:onBaoPai({response=response})
- end
-
- function xzddRoomReplayView:onSelectedQueRes(data)
- local viewId=app.room:getViewIdByUserId(data.nUserId)
- self.playerHandCards[viewId]:hideOperate()
- self.playerView:showQue(data.card,viewId,true)
- self.playerHandCards[viewId]:setQueType(data.card)
- self.playerHandCards[viewId]:resetHandCards()
- end
-
- function xzddRoomReplayView:onDianPao(data)
- self.dpUserId = data.nUserId or 0
- end
-
- function xzddRoomReplayView:onPlayerHu(data)
- local roomInfo=app.room.roomInfo
- self.huOrder = self.huOrder + 1
- local huType = {
- ["ZiMoHu"] = MJDefine.MJGameHuType.HU_ZIMO,
- ["DianPaoHu"] = MJDefine.MJGameHuType.HU_DIANPAO,
- ["QiangGangHu"] = MJDefine.MJGameHuType.HU_DIANPAO,
- }
- local redRealCard = 0
- local isQiangGng = 0
- if data.opType == "QiangGangHu" then
- redRealCard = data.card
- isQiangGng =1
- end
- local response={
- nUserId=data.nUserId,
- huType = huType[data.opType],
- huCard = data.card,
- dpId = self.dpUserId,
- huOrder = self.huOrder,
- redRealCard = redRealCard,
- isQiangGng = isQiangGng,
- }
- local viewId=app.room:getViewIdByUserId(data.nUserId)
-
- for k,v in pairs(self.playerHandCards) do
- v:hideOperate()
- end
-
- self.playerHandCards[viewId]:hideOperate()
- self:onHuResponse({response=response})
- end
-
- function xzddRoomReplayView:onBaLuoBo()
- local luoboCards=MJFunction.convertToCards(self.data.ext.luoboCards)
- local function callback()
- self.ui.Items.Layout_Effect_luobo:removeAllChildren()
- end
-
- local function luoboNumCallBack()
- if self.data.ext.luobonum > 0 then
- local index = 1
- local playerNum = table.nums(self.data.ext.userExtInfo)
- for k,v in pairs(self.data.ext.userExtInfo) do
- local viewId = app.room:getViewIdByUserId(tonumber(k))
- local effect
- if index == playerNum then
- effect = MJAnimationCompnent.CreateLoBoLabel(v.luoboCount,callback)
- else
- effect = MJAnimationCompnent.CreateLoBoLabel(v.luoboCount)
- end
- local pos = self.playerHandCards[viewId]:getAnimationPostion()
- if viewId==MJDefine.PlayerViewType.My then
- effect:setPosition(pos.x+130,pos.y-60)
- elseif viewId==MJDefine.PlayerViewType.Left then
- effect:setPosition(pos.x-20-30,pos.y-70)
- elseif viewId==MJDefine.PlayerViewType.Right then
- effect:setPosition(pos.x+10-30,pos.y-70)
- elseif viewId==MJDefine.PlayerViewType.Top then
- effect:setPosition(pos.x+130,pos.y+10-50)
- end
- self.ui.Items.Layout_Effect_luobo_Lable:addChild(effect)
- index = index + 1
- end
- else
- callback()
- end
- end
-
- local function luoboCallBack()
- if luoboCards and #luoboCards>0 then
- local luoNum = #luoboCards
- --加一个黑底
- local layer = cc.LayerColor:create(cc.c4b(0,0,0,120))
- layer:setAnchorPoint(cc.p(0.5,0.5))
- layer:ignoreAnchorPointForPosition(false)
- layer:setPosition(cc.p(getWinSize().width/2,getWinSize().height/2))
- self.ui.Items.Layout_Effect_luobo:addChild(layer)
- for i,v in pairs(luoboCards) do
- local effect
- if i == #luoboCards then
- effect = MJAnimationCompnent.CreateLoBoEffect(v,self.desktopType,luoboNumCallBack)
- else
- effect = MJAnimationCompnent.CreateLoBoEffect(v,self.desktopType)
- end
- if MJDefine.LuoBoPos[luoNum] and MJDefine.LuoBoPos[luoNum][i] then
- effect:setPosition(MJDefine.LuoBoPos[luoNum][i])
- self.ui.Items.Layout_Effect_luobo:addChild(effect)
- end
- end
- else
- callback()
- end
- end
-
- luoboCallBack()
- end
-
- --出牌成功
- function xzddRoomReplayView:onOutCardSuccess(data)
- logE("xzddRoomReplayView:onOutCardSuccess(), response = ", table.tostring(data.response))
- --[[
- -- 出牌用户id
- , defVar("nOutCardUserId", VT_Int, -1)
- -- 出的牌
- , defVar("byOutCard", VT_UChar, -1)
- -- 可以的操作ma
- , defVar("mainOpCode", VT_Short, -1)
- -- 玩家操作
- , defVar("operations", VT_Vector(ChuPaiPlayerOperation), {})--]]
- local function runOnOutCardSuccess(onEnd)
- log("2000000000-xzddRoomReplayView - runOnOutCardSuccess---------")
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local card= data.response.card
- local operates=data.response.operates
- local typr = operates.opType
-
- if operates and table.nums(operates)>0 then
- self.operates = operates
- else
- self.operates = {}
- end
-
- local function callback()
- self.playerHandCards[MJDefine.MyViewId]:showOperate(operates,card)
- if onEnd then
- onEnd()
- end
- end
- -- self.lastOutCard = card
- self.lastOutViewId = viewId
- local player = app.room.roomInfo.memberList[data.response.nUserId]
- if self.playerHandCards[viewId] then --and (viewId~=MJDefine.MyViewId or player.isBaoPai == 1)
- self.playerHandCards[viewId]:onOutCard(card,callback)--onOutCard(data.response,true)
- app.room:dispatchEvent({name = MJDefine.MJEvent.OutCardFalg, value=card ,viewId=viewId})
- if viewId==MJDefine.MyViewId then
- self.playerHandCards[viewId]:resetHandCards()
- self.playerHandCards[viewId]:setTing(false)
- end
- else
- callback()
- end
-
- end
- log("2000000000-xzddRoomReplayView - addCallBack(runOnOutCardSuccess)")
- self:addCallBack(runOnOutCardSuccess)
- end
-
- function xzddRoomReplayView:onGameEnd(data)
- local function runGameXiaoJuResponse(onEnd)
-
- local function callback()
- --self:endReplay()
- --:showXiaoJuView()
- if onEnd then
- onEnd()
- end
- end
-
- local roomInfo = app.room.roomInfo
- local hutype=self.data.ext.huTypes
- local hucard=data.card
-
- self.direcionView:stopAllActions()
- -- local resultInfo=json.decode(roomInfo.strResultInfo)
-
-
- --所有胡牌的人 考虑抢杠胡的问题
- --所有胡牌的人 考虑抢杠胡的问题
- local viewIds={}
- local failViewId=0
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- if v.result==MJDefine.MJGameResultType.Win then
- table.insert(viewIds,viewId)
- --处理掉huCard, 不加入手牌
- --播放音效
- if viewId==MJDefine.MyViewId then
- MJSound.PlayWinGame()
- end
- elseif v.result==MJDefine.MJGameResultType.Fail then
- failViewId=viewId
- if viewId==MJDefine.MyViewId then
- MJSound.PlayLoseGame()
- end
- end
- end
- self:showOpenCard()
-
-
- local function callback()
- self:showXiaoJuView()
- if onEnd then
- onEnd()
- end
- end
-
- if #viewIds>0 then
- for k,viewId in pairs(viewIds) do
- local effect
- local resultInfo = roomInfo.resultInfos
- local userId = app.room:getUserIdByViewId(viewId)
- if k == #viewIds then --只有最后播放胡牌动画的回调一次就可以了
- if resultInfo[userId].result == MJDefine.MJGameHuType.HU_ZIMO then
- effect = MJAnimationCompnent.CreateHuEffect("zimo",callback)
- else
- effect = MJAnimationCompnent.CreateHuEffect("hu",callback)
- end
-
- else
-
- end
- if effect then
- self:addChild(effect)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- effect:setVisible(false)
- end
- end
- else
-
- if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
- local effect=MJAnimationCompnent.CreateLiuJuEffect(callback)
- self:addChild(effect)
- else
- callback()
- end
- end
-
- end
- log("2000000000-MJRoomView - addCallBack(runGameXiaoJuResponse)" )
- self:addCallBack(runGameXiaoJuResponse);
- end
-
- --换牌完成
- function xzddRoomReplayView:onHuanPaiDone(data)
- if not data.huanPaiInfo or type(data.huanPaiInfo) ~= 'table' then return end
- for i,v in pairs(data.huanPaiInfo) do
- local viewId=app.room:getViewIdByUserId(v.nUserId)
- -- self.playerHandCards[viewId]:createSwapCards(v.cards)
- self:createSwapCards(viewId, v.cards, true) -- 使用新的创建交换牌方式
-
- for i,v in pairs(v.cards) do
- self.playerHandCards[viewId]:onGetCard(nil,tonumber(v),true)
- end
-
- local action = cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function()
- -- self.playerHandCards[viewId]:deleteSwapCards()
- self:removeAllSwapCard()
- end))
- self.playerHandCards[viewId]:resetHandCards()
- self:runAction(action)
- end
- end
-
- --开始换牌
- function xzddRoomReplayView:onHuanPai(data)
- if not data.huanPaiInfo or type(data.huanPaiInfo) ~= 'table' then return end
- for i,v in pairs(data.huanPaiInfo) do
- local viewId=app.room:getViewIdByUserId(v.nUserId)
- -- self.playerHandCards[viewId]:createSwapCards(v.cards)
- self:createSwapCards(viewId, v.cards, true) -- 使用新的创建交换牌方式
-
- local tselCards = {}
- for j,k in pairs(v.cards) do
- table.insert(tselCards,{card = k})
- end
- self.playerHandCards[viewId]:removeHandCard(tselCards)
- self.playerHandCards[viewId]:resetHandCards()
-
- local action = cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function()
- -- self.playerHandCards[viewId]:deleteSwapCards()
- self:removeAllSwapCard()
- end))
- self:runAction(action)
- end
- end
-
- function xzddRoomReplayView:setIsReplay()
- self._isReplay = true
- end
-
- --显示换三张
- function xzddRoomReplayView:initSwapLayer()--是否已经操作过
- local ui=loadUI("mj_xzdd/res/ui_fangjian/mj_xzdd_swap_card.ui")
- self.ui.Items.Layout_Player:addChild(ui)
- self.swapCard=ui
- self.swapCard.Items.Layout_Content:setVisible(false)
- end
-
- function xzddRoomReplayView:removeAllSwapCard()
- self.swapCard.Items.Layout_Swap_MJ:removeAllChildren()
- end
-
- return xzddRoomReplayView
|