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 MJRoomXiaoJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomXiaoJuView") -- local MJRoomDaJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDaJuView") -- local MJRoomDismissView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDismissView") local MJRoomDirection=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDirection") -- local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") -- local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ") 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 hongzhongRoomReplayView = class("hongzhongRoomReplayView", MJRoomReplayView) function hongzhongRoomReplayView:onEnter() -- MJRoomReplayView.super.onEnter(self) --ui load --初始化处理函数 if self.initHanders then self:initHanders() end local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_fangjian.ui"); self.ui = ui; self:addChild(ui); -- 初始化GPS组件 -- self:initGpsComponent(); --加载纹理缓存 self:loadTextureCache() -- --监听事件 -- self:bindAllEvent() -- self:onGameReconnection() self:updateRoomData() --初始化视图 self:initView() -- --初始化游戏事件按钮 self:initGameButton() --默认状态 self:defaultState() self:initHandCardNodes() self:startReplay() -- MJSound.PlayGameBGM() -- playLHQMusic() -- 房间号 local roomInfo=app.room.roomInfo self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId)) local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo) self.ui.Items.Text_Rule:setText(ruleAll) self.ui.Items.Layout_TingPai:setVisible(false) end function hongzhongRoomReplayView:ctor(data) hongzhongRoomReplayView.super.ctor(self,data) -- --玩家牌局面板 -- self.playerHandCards={} -- self.data=data -- app:changeGameProtocol(app.gameId,1) end function hongzhongRoomReplayView:updateRoomData() hongzhongRoomReplayView.super.updateRoomData(self) if self.data.ext.piaofen then local roomInfo=app.room.roomInfo for k,v in pairs(self.data.ext.piaofen) do local nUserId=tonumber(k) roomInfo.memberList[nUserId].nPiaoNum = v end end end function hongzhongRoomReplayView:initView() hongzhongRoomReplayView.super.initView(self) cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("hongzhong/res/zy_fangjian/mj_piao_fen.plist") self:onXiaPiaoResponse({}) --self:init3DPos() self.ui.Items.Button_Info:setVisible(false) self.ui.Items.Button_Club:setVisible(false) self.ui.Items.Text_Rule:setPositionY(62) local exitPt = self.replayView.Items.Button_Exit:getPosition() self.replayView.Items.Button_Exit:setPositionY(exitPt.y-30) self:adaptPlayerViewPos() end function hongzhongRoomReplayView:adaptPlayerViewPos() self.playerNodePos = {} for i=1,4 do if self.playerView.allNodes[i].player then self.playerNodePos[i] = self.playerView.allNodes[i].player:getPosition() end end self.playerView.allNodes[1].player:setPositionX(self.playerNodePos[1].x-8) self.playerView.allNodes[2].player:setPositionY(self.playerNodePos[2].y-20) self.playerView.allNodes[3].player:setPositionX(self.playerNodePos[3].x+8) self.playerView.allNodes[4].player:setPosition(cc.p(self.playerNodePos[4].x+12,self.playerNodePos[4].y+10)) end -- function hongzhongRoomReplayView:onEnter() -- hongzhongRoomReplayView.super.onEnter(self) -- --ui load -- local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_fangjian.ui"); -- self.ui = ui; -- self:addChild(ui); -- -- 初始化GPS组件 -- -- self:initGpsComponent(); -- --加载纹理缓存 -- -- self:loadTextureCache() -- -- --初始化游戏事件按钮 -- self:initGameButton() -- -- --监听事件 -- -- self:bindAllEvent() -- -- self:onGameReconnection() -- self:updateRoomData() -- --初始化视图 -- self:initView() -- --默认状态 -- self:defaultState() -- self:initHandCardNodes() -- self:startReplay() -- -- MJSound.PlayGameBGM() -- -- playLHQMusic() -- end -- function hongzhongRoomReplayView: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 -- roomInfo.strGameInfo=json.encode(data.ext) -- roomInfo.nGameStartCount=data.turn -- roomInfo.nTotalGameNum=data.nbound -- local dipai=MJFunction.convertToCards(data.dipai) -- roomInfo.nLeaveCardNum=#dipai -- roomInfo.stopFlag=data.flag -- --用户信息 -- 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 -- roomInfo.memberList[nUserId].userInfo = json.encode(userInfo)--v.userInfo -- -- self.roomInfo.memberList[v.nUserId].nTurnScore = v.nTurnScore -- roomInfo.memberList[nUserId].nTotalMoney = 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 -- table.insert(handCards,{card=tonumber(v)}) -- 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.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 card=tonumber(op[3]) -- table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card}) -- -- print(table.tostring(op)) -- end -- end -- function hongzhongRoomReplayView:initGameButton() -- --详细按钮 -- self.ui.Items.Button_Info:registerClick(function() -- playBtnEffect() -- self.ui.Items.Layout_Rule:setVisible(not self.ui.Items.Layout_Rule:isVisible()) -- end) -- --点击空白 -- self.ui.Items.Layout_Touch:registerClick(nil,function() -- -- 隐藏个人信息 -- -- self.playerView:removePlayerInfoView() -- -- self.ui.Items.Layout_Card_Panel:setVisible(false) -- self.ui.Items.Layout_Rule:setVisible(false) -- -- local effect=MJAnimationCompnent.CreateGameStart(onEnd) -- -- self.ui.Items.Layout_Player:addChild(effect) -- -- self.ui.Items.Button_Invite:setVisible(false) -- -- self.ui.Items.Button_Ready:setVisible(false) -- end) -- end -- function hongzhongRoomReplayView:defaultState() -- --队列初始化 -- self.callbackQueue = {} -- self.callbackRunning = false -- self.ui.Items.Button_GPS:setVisible(false) -- self.ui.Items.Layout_TingPai:setVisible(false) -- self.playerView:setOffLineVisible(false) -- self.playerView:setPlayerVisible(false) -- self.ui.Items.Layout_Rule:setVisible(false) -- self.ui.Items.Text_CardNum:setText("") -- -- self.playerView:setOperatorTipVisible(false) -- self:setBtnSitDownVisible(false) -- self:setTingCardViewVisible(false) -- self:setGuideView(false) -- self:setWetChatVisible(false) -- end -- function hongzhongRoomReplayView:initView() -- self.direcionView = MJRoomDirection:new() -- self.ui.Items.Layout_Player:addChild(self.direcionView) -- self.direcionView:setVisible(false) -- --UI相关 -- self.playerView = MJRoomPlayerView:new() -- self:addChild(self.playerView) -- self.playerView:setHeadTouchEnable(false) -- -- 添加语音相关的界面 -- self.messageView = MJRoomMessageView:new() -- self:addChild(self.messageView) -- self.messageView:setVisible(false) -- --加载工具层 -- self.toolView = MJRoomToolView:new() -- self:addChild(self.toolView) -- self.toolView:setVisible(false) -- local roomInfo=app.room.roomInfo -- -- 房间号 -- self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId)) -- self:updateGameNums() -- --房间玩法 -- local ruleAll = MJWanFa:getWanFaInfo(roomInfo.strGameInfo)--getLHQRuleStr(); -- self.ui.Items.Text_Rule:setText(ruleAll) -- local heght=self.ui.Items.Text_Rule:getContentSize().height+20 -- self.ui.Items.Layout_Rule:setSize(cc.size(self.ui.Items.Layout_Rule:getContentSize().width,heght)) -- self.ui.Items.Text_Rule:setPositionY(heght-10) -- end -- function hongzhongRoomReplayView:startReplay() -- self:startGame() -- local handers={ -- ["DealCard"]=handler(self,self.onGetCard), -- ["OutCard"]=handler(self,self.onOutCard), -- ["Peng"]=handler(self,self.onOperate), -- ["BaGang"]=handler(self,self.onOperate), -- ["AnGang"]=handler(self,self.onOperate), -- ["Gang"]=handler(self,self.onOperate), -- ["DianPao"]=handler(self,self.onGameEnd), -- ["ZiMoHu"]=handler(self,self.onGameEnd), -- } -- local actions={} -- for k,v in pairs(self.reports) do -- if handers[v.opType] then -- table.insert(actions,cc.DelayTime:create(1)) -- table.insert(actions,cc.CallFunc:create(function() -- print(table.tostring(v)) -- handers[v.opType](v) -- end)) -- end -- end -- table.insert(actions,cc.DelayTime:create(1)) -- table.insert(actions,cc.CallFunc:create(function() -- self:endReplay() -- -- print(table.tostring(v)) -- -- handers[v.opType](v) -- end)) -- self:runAction(cc.Sequence:create(actions)) -- end -- function hongzhongRoomReplayView:startGame() -- self:onGameStartResponse() -- self:onGameSendCardResponse() -- self.playerHandCards[MJDefine.MyViewId]:removeTouchEvent() -- end -- function hongzhongRoomReplayView:onGetCard(data) -- local roomInfo=app.room.roomInfo -- roomInfo.nLeaveCardNum=roomInfo.nLeaveCardNum-1 -- local response={ -- nUserId=data.nUserId, -- card=data.card, -- -- operates={}, -- nSeatId=roomInfo.memberList[data.nUserId].nSeatId, -- } -- self:onBankerOutCard({response=response}) -- end function hongzhongRoomReplayView: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) if viewId==MJDefine.MyViewId then -- self.playerHandCards[MJDefine.MyViewId].touchMJ=self.playerHandCards[MJDefine.MyViewId]:getMjByValue(data.card) end self:onOutCardSuccess({response=response}) end -- function hongzhongRoomReplayView: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, -- } -- local response={ -- nUserId=data.nUserId, -- opCard=data.card, -- opType=operates[data.opType], -- -- operates={}, -- nSeatId=roomInfo.memberList[data.nUserId].nSeatId, -- isNeedOutCard=1, -- fromSeatId=self.fromSeatId, -- } -- self:onOperationCodeSuccess({response=response}) -- end function hongzhongRoomReplayView:onGameEnd(data) local function runGameXiaoJuResponse(onEnd) local function callback() -- self:endReplay() -- self: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 if self.data.ext.result then for k,v in pairs(self.data.ext.result) do local viewId = app.room:getViewIdByUserId(v.uid) if v.ishu==MJDefine.MJGameResultType.Win then table.insert(viewIds,viewId) elseif v.ishu==MJDefine.MJGameResultType.Fail then failViewId=viewId end end end --[[for k,v in pairs(roomInfo.memberList) do local viewId = app.room:getViewIdByUserId(v.nUserId) if v.nTotalMoney>0 then table.insert(viewIds,viewId) elseif v.nTotalMoney<0 then failViewId=viewId end -- if v.result==MJDefine.MJGameResultType.Win then -- table.insert(viewIds,viewId) -- elseif v.result==MJDefine.MJGameResultType.Fail then -- failViewId=viewId -- end end--]] --被抢杠的人回退补杠 if hutype==MJDefine.MJHuType.QiangGangHu and roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_NORMAL then self.playerHandCards[failViewId]:retoreBuGang(hucard) end local tabZhaniaocards=MJFunction.convertToCards(self.data.ext.zhaNiaoCards) local tabZhongniaocards=MJFunction.convertToCards(self.data.ext.zhongNiaoCards) self:outNiaoCards(viewIds,failViewId,tabZhaniaocards) local function zhongNiao() self:showZhongNiaoView(tabZhongniaocards,viewIds,callback) end local function niaoFly() if #tabZhongniaocards>0 then self:showNiaoAniamtion(viewIds,zhongNiao) else callback() end end local function niaoCallBack() if #tabZhaniaocards>0 then self:showNiaoView(tabZhaniaocards,niaoFly) else callback() end end if #viewIds>0 then for k,viewId in pairs(viewIds) do local effect if k == #viewIds then --只有最后播放胡牌动画的回调一次就可以了 effect=MJAnimationCompnent.CreateHuEffect(niaoCallBack) --音效 local userInfo=app.room:getUserInfoByViewId(viewId) if userInfo then if hutype==MJDefine.MJHuType.Zimo then MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_ZIMOHU) else MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_DIANPAOHU) end end else effect=MJAnimationCompnent.CreateHuEffect() end if effect then self:addChild(effect) effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion()) 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 hongzhongRoomReplayView:endReplay() -- local roomInfo = app.room.roomInfo -- -- local function sortMj(mjA,mjB) -- -- if mjA.sortValue