25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

705 lines
21 KiB

  1. local MJRoomToolView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomToolView")
  2. local MJRoomMessageView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomMessageView")
  3. local MJRoomPlayerView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomPlayerView")
  4. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  5. local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
  6. local MJHandCardView=MJFramework.MJImport("mj.luaScript.Views.Game.MJHandCardView")
  7. -- local MJRoomXiaoJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomXiaoJuView")
  8. -- local MJRoomDaJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDaJuView")
  9. -- local MJRoomDismissView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDismissView")
  10. local MJRoomDirection=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDirection")
  11. -- local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage")
  12. -- local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
  13. local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa")
  14. local MJAnimationCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJAnimationCompnent")
  15. local MJSound=MJFramework.MJImport("mj.luaScript.MJSound")
  16. local MJRoomView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomView")
  17. local MJRoomReplayView = class("MJRoomReplayView", MJRoomView)
  18. -- local TAG_ACTION_REPLAY=100
  19. function MJRoomReplayView:ctor(data)
  20. MJRoomReplayView.super.ctor(self)
  21. --玩家牌局面板
  22. self.playerHandCards={}
  23. self.data=data
  24. -- app:changeGameProtocol(app.gameId,1)
  25. end
  26. function MJRoomReplayView:loadUI()
  27. local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_fangjian.ui")
  28. self.ui = ui
  29. self:addChild(ui)
  30. end
  31. function MJRoomReplayView:onEnter()
  32. -- MJRoomReplayView.super.onEnter(self)
  33. --ui load
  34. self:loadUI()
  35. --初始化处理函数
  36. self:initHanders()
  37. -- 初始化GPS组件
  38. -- self:initGpsComponent();
  39. self.singleComponent = import("luaScript.Views.Room.RoomSinglePowerComponent"):new(self.ui.Items.ImageView_Single,self.ui.Items.LoadingBar_Power)
  40. --加载纹理缓存
  41. --self:loadTextureCache()
  42. -- --监听事件
  43. -- self:bindAllEvent()
  44. -- self:onGameReconnection()
  45. self:updateRoomData()
  46. --初始化视图
  47. self:initView()
  48. -- --初始化游戏事件按钮
  49. self:initGameButton()
  50. --默认状态
  51. self:defaultState()
  52. self:initHandCardNodes()
  53. self:startReplay()
  54. self:changeWaterMark()
  55. -- MJSound.PlayGameBGM()
  56. -- playLHQMusic()
  57. end
  58. function MJRoomReplayView:updateRoomData()
  59. local data=self.data--=MJDefine.TestData
  60. -- self.data=data
  61. app.room:initRoomInfo()
  62. local roomInfo=app.room.roomInfo
  63. roomInfo.nMaxPlayCount = table.nums(data.user)
  64. roomInfo.nShowTableId = data.roomid or data.roomNum
  65. roomInfo.strGameInfo=json.encode(data.ext)
  66. roomInfo.nGameStartCount=data.turn
  67. roomInfo.nTotalGameNum=data.totalCount or data.nbound or 0
  68. local dipai=MJFunction.convertToCards(data.dipai)
  69. roomInfo.nLeaveCardNum=#dipai
  70. roomInfo.stopFlag=data.flag
  71. --用户信息
  72. roomInfo.memberList={}
  73. for k,v in pairs(data.user) do
  74. local nUserId=tonumber(k)
  75. if not roomInfo.memberList[nUserId] then
  76. roomInfo.memberList[nUserId] = {}
  77. end
  78. roomInfo.memberList[nUserId].nUserId = nUserId
  79. roomInfo.memberList[nUserId].nSeatId = v.seatid
  80. -- self.roomInfo.memberList[v.nUserId].nPlayerFlag = v.nPlayerFlag
  81. local userInfo = app.playerInfoManager:getPlayerInfo(nUserId) or {}
  82. userInfo.nickname = userInfo.name
  83. userInfo.headimgurl = userInfo.head
  84. roomInfo.memberList[nUserId].userInfo = json.encode(userInfo)--v.userInfo
  85. -- self.roomInfo.memberList[v.nUserId].nTurnScore = v.nTurnScore
  86. roomInfo.memberList[nUserId].nTotalMoney = data.score[k]
  87. -- self.roomInfo.memberList[v.nUserId].nTingStatus = v.nTingStatus
  88. -- self.roomInfo.memberList[v.nUserId].gruoupCards = v.gruoupCards
  89. -- self.roomInfo.memberList[v.nUserId].outCards = v.outCards
  90. local tempCards=MJFunction.convertToCards(v.hand)
  91. local handCards={}
  92. for k,v in pairs(tempCards) do
  93. if tonumber(v) then
  94. table.insert(handCards,{card=tonumber(v)})
  95. end
  96. end
  97. roomInfo.memberList[nUserId].handCards = handCards
  98. -- roomInfo.memberList[nUserId].nOnlineStatus = v.nOnlineStatus
  99. -- roomInfo.memberList[nUserId].nDisbandStatus = v.nDisbandStatus
  100. -- self.dismissInfo[nUserId] = v.nDisbandStatus
  101. --这里只记录,暂时没用到。可能战绩回放的时候是需要用的
  102. -- local cardData = self:serverCardToMyCard(v.handCard)
  103. -- self.roomInfo.memberList[v.nUserId].cardList = {}
  104. -- self.roomInfo.memberList[v.nUserId].cardList = cardData
  105. end
  106. roomInfo.nBankSeatId=roomInfo.memberList[tonumber(data.ext.banker)].nSeatId
  107. app.room:updateUserSeateShowId()
  108. self:parseData()
  109. end
  110. function MJRoomReplayView:parseData()
  111. local data = self.data
  112. --战报解析
  113. self.reports={}
  114. local ops=string.split(data.ops,"|")
  115. for k,v in pairs(ops) do
  116. local op=string.split(v,",")
  117. local nUserId=tonumber(op[1])
  118. local opType=op[2]
  119. local card=tonumber(op[3])
  120. if "DisCard"~=opType then
  121. table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card})
  122. end
  123. end
  124. end
  125. function MJRoomReplayView:initGameButton()
  126. self.ui.Items.Layout_Touch:registerClick(nil,function()
  127. self.toolView:hideRule()
  128. end)
  129. self.replayView.Items.Button_Play:registerClick(function()
  130. self.isPlay=true
  131. self.replayView.Items.Button_Pause:setVisible(true)
  132. self.replayView.Items.Button_Play:setVisible(false)
  133. end)
  134. self.replayView.Items.Button_Pause:registerClick(function()
  135. self.isPlay=false
  136. self.replayView.Items.Button_Play:setVisible(true)
  137. self.replayView.Items.Button_Pause:setVisible(false)
  138. end)
  139. self.replayView.Items.Button_Play:setVisible(false)
  140. self.replayView.Items.Button_Toward:registerClick(function()
  141. self:playNextReport()
  142. end)
  143. self.replayView.Items.Button_Backward:setVisible(false)
  144. self.replayView.Items.Button_Exit:registerClick(function()
  145. --防止循环播放战绩的action没有结束 2021/4/22 ljx
  146. self:stopAllActions()
  147. self:removeFromParent()
  148. end)
  149. end
  150. -- function MJRoomReplayView:initGameButton()
  151. -- --详细按钮
  152. -- self.ui.Items.Button_Info:registerClick(function()
  153. -- playBtnEffect()
  154. -- self.ui.Items.Layout_Rule:setVisible(not self.ui.Items.Layout_Rule:isVisible())
  155. -- end)
  156. -- self.ui.Items.Button_Info:setVisible(false)
  157. -- --点击空白
  158. -- self.ui.Items.Layout_Touch:registerClick(nil,function()
  159. -- -- 隐藏个人信息
  160. -- -- self.playerView:removePlayerInfoView()
  161. -- -- self.ui.Items.Layout_Card_Panel:setVisible(false)
  162. -- self.ui.Items.Layout_Rule:setVisible(false)
  163. -- -- local effect=MJAnimationCompnent.CreateGameStart(onEnd)
  164. -- -- self.ui.Items.Layout_Player:addChild(effect)
  165. -- -- self.ui.Items.Button_Invite:setVisible(false)
  166. -- -- self.ui.Items.Button_Ready:setVisible(false)
  167. -- end)
  168. -- self.replayView.Items.Button_Play:registerClick(function()
  169. -- self.isPlay=true
  170. -- self.replayView.Items.Button_Pause:setVisible(true)
  171. -- self.replayView.Items.Button_Play:setVisible(false)
  172. -- end)
  173. -- self.replayView.Items.Button_Pause:registerClick(function()
  174. -- self.isPlay=false
  175. -- self.replayView.Items.Button_Play:setVisible(true)
  176. -- self.replayView.Items.Button_Pause:setVisible(false)
  177. -- end)
  178. -- self.replayView.Items.Button_Play:setVisible(false)
  179. -- self.replayView.Items.Button_Toward:registerClick(function()
  180. -- self:playNextReport()
  181. -- end)
  182. -- self.replayView.Items.Button_Backward:setVisible(false)
  183. -- self.replayView.Items.Button_Exit:registerClick(function()
  184. -- self:removeFromParent()
  185. -- end)
  186. -- end
  187. function MJRoomReplayView:defaultState()
  188. MJRoomReplayView.super.defaultState(self)
  189. --队列初始化
  190. -- self.callbackQueue = {}
  191. -- self.callbackRunning = false
  192. self.ui.Items.Button_GPS:setVisible(false)
  193. -- self.ui.Items.Layout_TingPai:setVisible(false)
  194. -- self.playerView:setOffLineVisible(false)
  195. -- self.playerView:setPlayerVisible(false)
  196. -- self.ui.Items.Text_CardNum:setText("")
  197. -- self:setBtnSitDownVisible(false)
  198. -- self:setTingCardViewVisible(false)
  199. -- self:setGuideView(false)
  200. -- self:setWetChatVisible(false)
  201. end
  202. function MJRoomReplayView:initView()
  203. if self.ui.Items.ImageView_CardNum then
  204. self.ui.Items.ImageView_CardNum:setVisible(false)
  205. end
  206. self.direcionView = MJRoomDirection:new()
  207. self.ui.Items.Layout_Player:addChild(self.direcionView)
  208. self.direcionView:setVisible(false)
  209. --UI相关
  210. self.playerView = MJRoomPlayerView:new()
  211. self:addChild(self.playerView)
  212. self.playerView:setHeadTouchEnable(false)
  213. --加载工具层
  214. self.toolView = MJRoomToolView:new()
  215. self:addChild(self.toolView)
  216. if self.toolView.ui.Items.Button_Menu then
  217. self.toolView.ui.Items.Button_Menu:setVisible(false)
  218. end
  219. if self.ui.Items.Layout_Button then
  220. self.ui.Items.Layout_Button:setVisible(false)
  221. end
  222. if self.toolView.ui.Items.Layout_Button then
  223. self.toolView.ui.Items.Layout_Button:setVisible(false)
  224. end
  225. if self.toolView.ui.Items.Button_FastStart then
  226. self.toolView.ui.Items.Button_FastStart:setVisible(false)
  227. end
  228. if self.toolView.ui.Items.Button_BaoJian then
  229. self.toolView.ui.Items.Button_BaoJian:setVisible(false)
  230. end
  231. if self.toolView.ui.Items.Button_Voice then
  232. self.toolView.ui.Items.Button_Voice:setVisible(false)
  233. end
  234. if self.toolView.ui.Items.Button_Face then
  235. self.toolView.ui.Items.Button_Face:setVisible(false)
  236. end
  237. --self.toolView:setVisible(false)
  238. local headInfos = {}
  239. for k,v in pairs(self.playerView.allNodes) do
  240. local pos = cc.pAdd(v.player:getPosition(),cc.p(38,66))
  241. table.insert(headInfos,{headPos=pos})
  242. end
  243. -- self.messageView = require("luaScript.Views.Room.ChatView"):new({chatList=MJDefine.MJChatTxt,faceList=MJDefine.MJFaceConfig},headInfos,true)
  244. -- self.playerView.ui.Items.Layout_Player:addChild(self.messageView)
  245. -- self.messageView:setBtnFace(cc.p(1236,348),"room_room_img_face.png")
  246. -- self.messageView:setBtnVoice(cc.p(1236,257),"room_room_img_voice.png")
  247. -- self.messageView:setVisible(false)
  248. --加载回放按钮
  249. local ui = loadUI("res/ui/ui_fangjian/ui_fangjian_record.ui");
  250. self.replayView = ui
  251. self:addChild(ui)
  252. self.replayView.Items.Text_playProgress:setString("进度:0%")
  253. local roomInfo=app.room.roomInfo
  254. -- 房间号
  255. self.ui.Items.Text_roomNum:setText("房号:"..tostring(roomInfo.nShowTableId))
  256. self:updateGameNums()
  257. --房间玩法
  258. self.toolView:updateRule()
  259. --local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo)--getLHQRuleStr();
  260. --self.ui.Items.Text_Rule:setText(ruleAll)
  261. --定时器
  262. local time = os.date("%m-%d %X",self.data.endtime) --回放时间这里要求改成成局时候的时间
  263. self.ui.Items.Text_Time:setText(time)--(MJFunction.getTimeString())
  264. if not self.Time then
  265. self.Time = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  266. self.ui.Items.Text_Time:setText(time)--(MJFunction.getTimeString())
  267. end,1.0,false)
  268. end
  269. self:changeWaterMark()
  270. end
  271. -- function MJRoomReplayView:initView()
  272. -- self.ui.Items.ImageView_CardNum:setVisible(false)
  273. -- self.direcionView = MJRoomDirection:new()
  274. -- self.ui.Items.Layout_Player:addChild(self.direcionView)
  275. -- self.direcionView:setVisible(false)
  276. -- --UI相关
  277. -- self.playerView = MJRoomPlayerView:new()
  278. -- self:addChild(self.playerView)
  279. -- self.playerView:setHeadTouchEnable(false)
  280. -- -- 添加语音相关的界面
  281. -- -- self.messageView = MJRoomMessageView:new()
  282. -- -- self:addChild(self.messageView)
  283. -- -- self.messageView:setVisible(false)
  284. -- --加载工具层
  285. -- self.toolView = MJRoomToolView:new()
  286. -- self:addChild(self.toolView)
  287. -- self.toolView:setVisible(false)
  288. -- self.toolView.ui.Items.Button_BaoJian:setVisible(false)
  289. -- --self.ui.Items.Button_Club:setVisible(false)
  290. -- local headInfos = {}
  291. -- for k,v in pairs(self.playerView.allNodes) do
  292. -- local pos = cc.pAdd(v.player:getPosition(),cc.p(38,66))
  293. -- table.insert(headInfos,{headPos=pos})
  294. -- end
  295. -- self.messageView = require("luaScript.Views.Room.ChatView"):new({chatList=MJDefine.MJChatTxt,faceList=MJDefine.MJFaceConfig},headInfos,true)
  296. -- self.playerView.ui.Items.Layout_Player:addChild(self.messageView)
  297. -- self.messageView:setBtnFace(cc.p(1236,348),"room_room_img_face.png")
  298. -- self.messageView:setBtnVoice(cc.p(1236,257),"room_room_img_voice.png")
  299. -- self.messageView:setVisible(false)
  300. -- --加载回放按钮
  301. -- local ui = loadUI("res/ui/ui_fangjian/ui_fangjian_record.ui");
  302. -- self.replayView = ui
  303. -- self:addChild(ui)
  304. -- self.replayView.Items.Text_playProgress:setString("进度:0%")
  305. -- -- self.replayView= MJRoomToolView:new()
  306. -- -- self:addChild(self.toolView)
  307. -- -- self.toolView:setVisible(false)
  308. -- local roomInfo=app.room.roomInfo
  309. -- -- 房间号
  310. -- self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId))
  311. -- self:updateGameNums()
  312. -- --房间玩法
  313. -- local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo)--getLHQRuleStr();
  314. -- self.ui.Items.Text_Rule:setText(ruleAll)
  315. -- local heght=self.ui.Items.Text_Rule:getContentSize().height+20
  316. -- self.ui.Items.Layout_Rule:setSize(cc.size(self.ui.Items.Layout_Rule:getContentSize().width,heght))
  317. -- self.ui.Items.Text_Rule:setPositionY(heght-10)
  318. -- --定时器
  319. -- local time = os.date("%m-%d %X",self.data.endtime) --回放时间这里要求改成成局时候的时间
  320. -- self.ui.Items.Text_Time:setText(time)--(MJFunction.getTimeString())
  321. -- if not self.Time then
  322. -- self.Time = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  323. -- self.ui.Items.Text_Time:setText(time)--(MJFunction.getTimeString())
  324. -- end,1.0,false)
  325. -- end
  326. -- end
  327. function MJRoomReplayView:startReplay()
  328. self.reportIndex=1
  329. self.isPlay=true
  330. local actions={}
  331. table.insert(actions,cc.DelayTime:create(0.1))
  332. table.insert(actions,cc.CallFunc:create(function()
  333. self:startGame()
  334. end))
  335. table.insert(actions,cc.DelayTime:create(1))
  336. table.insert(actions,cc.CallFunc:create(function()
  337. self:play()
  338. end))
  339. self:runAction(cc.Sequence:create(actions))
  340. end
  341. function MJRoomReplayView:initHanders()
  342. self.handers = {
  343. ["DealCard"]=handler(self,self.onGetCard),
  344. ["OutCard"]=handler(self,self.onOutCard),
  345. ["Peng"]=handler(self,self.onOperate),
  346. ["BaGang"]=handler(self,self.onOperate),
  347. ["AnGang"]=handler(self,self.onOperate),
  348. ["Gang"]=handler(self,self.onOperate),
  349. ["ZhiGang"]=handler(self,self.onOperate),
  350. ["DianPao"]=handler(self,self.onGameEnd),
  351. ["ZiMoHu"]=handler(self,self.onGameEnd),
  352. }
  353. end
  354. --播放一条战报
  355. function MJRoomReplayView:playNextReport()
  356. local v= self.reports[self.reportIndex]
  357. if v then
  358. if self.handers[v.opType] then
  359. print(table.tostring(v).." reportIndex:"..self.reportIndex)
  360. self.handers[v.opType](v)
  361. end
  362. self.reportIndex=self.reportIndex+1
  363. end
  364. local progress=self.reportIndex>#self.reports and #self.reports or self.reportIndex
  365. progress=math.ceil(progress/#self.reports*100)
  366. self.replayView.Items.Text_playProgress:setString("进度:"..progress.."%")
  367. end
  368. --循环播放战报
  369. function MJRoomReplayView:play()
  370. local actions={
  371. cc.DelayTime:create(1),
  372. cc.CallFunc:create(function()
  373. if not self.isPlay then return end
  374. self:playNextReport()
  375. end),
  376. }
  377. local action=cc.RepeatForever:create(cc.Sequence:create(actions))
  378. -- action:setTag(TAG_ACTION_REPLAY)
  379. self:runAction(action)
  380. end
  381. function MJRoomReplayView:addCallBack(callback)
  382. callback()
  383. end
  384. function MJRoomReplayView:startGame()
  385. self:onGameStartResponse()
  386. --设置为回放模式
  387. for k,v in pairs(self.playerHandCards) do
  388. v:setReplay(true)
  389. end
  390. self:onGameSendCardResponse()
  391. self.playerHandCards[MJDefine.MyViewId]:removeTouchEvent()
  392. end
  393. function MJRoomReplayView:onGetCard(data)
  394. local roomInfo=app.room.roomInfo
  395. roomInfo.nLeaveCardNum=roomInfo.nLeaveCardNum-1
  396. local response={
  397. nUserId=data.nUserId,
  398. card=data.card,
  399. -- operates={},
  400. nSeatId=roomInfo.memberList[data.nUserId].nSeatId,
  401. }
  402. self:onBankerOutCard({response=response})
  403. end
  404. function MJRoomReplayView:onOutCard(data)
  405. local roomInfo=app.room.roomInfo
  406. local response={
  407. nUserId=data.nUserId,
  408. card=data.card,
  409. -- operates={},
  410. -- nSeatId=roomInfo.memberList[data.nUserId].nSeatId,
  411. }
  412. self.fromSeatId=roomInfo.memberList[data.nUserId].nSeatId
  413. local viewId=app.room:getViewIdByUserId(data.nUserId)
  414. if viewId==MJDefine.MyViewId then
  415. -- self.playerHandCards[MJDefine.MyViewId].touchMJ=self.playerHandCards[MJDefine.MyViewId]:getMjByValue(data.card)
  416. end
  417. self:onOutCardSuccess({response=response})
  418. end
  419. function MJRoomReplayView:onOperate(data)
  420. local roomInfo=app.room.roomInfo
  421. local operates={
  422. ["Peng"]=MJDefine.MJOperateType.OPREATE_PENG,
  423. ["BaGang"]=MJDefine.MJOperateType.OPREATE_BAGANG,
  424. ["AnGang"]=MJDefine.MJOperateType.OPREATE_ANGANG,
  425. ["Gang"]=MJDefine.MJOperateType.OPREATE_ZHIGANG,
  426. ["ZhiGang"]=MJDefine.MJOperateType.OPREATE_ZHIGANG,
  427. }
  428. local response={
  429. nUserId=data.nUserId,
  430. opCard=data.card,
  431. opType=operates[data.opType],
  432. -- operates={},
  433. nSeatId=roomInfo.memberList[data.nUserId].nSeatId,
  434. isNeedOutCard=0,
  435. fromSeatId=self.fromSeatId,
  436. }
  437. --碰了之后需要出牌
  438. if data.opType=="Peng" then
  439. response.isNeedOutCard=1
  440. end
  441. self:onOperationCodeSuccess({response=response})
  442. end
  443. function MJRoomReplayView:onGameEnd(data)
  444. local function runGameXiaoJuResponse(onEnd)
  445. local function callback()
  446. -- self:endReplay()
  447. -- self:showXiaoJuView()
  448. if onEnd then
  449. onEnd()
  450. end
  451. end
  452. local roomInfo = app.room.roomInfo
  453. local hutype=self.data.ext.huTypes
  454. local hucard=data.card
  455. -- local resultInfo=json.decode(roomInfo.strResultInfo)
  456. self.direcionView:stopAllActions()
  457. --所有胡牌的人 考虑抢杠胡的问题
  458. local viewIds={}
  459. local failViewId=0
  460. if self.data.ext.result then
  461. for k,v in pairs(self.data.ext.result) do
  462. local viewId = app.room:getViewIdByUserId(v.uid)
  463. if v.ishu==MJDefine.MJGameResultType.Win then
  464. table.insert(viewIds,viewId)
  465. elseif v.ishu==MJDefine.MJGameResultType.Fail then
  466. failViewId=viewId
  467. end
  468. end
  469. end
  470. -- for k,v in pairs(roomInfo.memberList) do
  471. -- local viewId = app.room:getViewIdByUserId(v.nUserId)
  472. -- if v.nTotalMoney>0 then
  473. -- table.insert(viewIds,viewId)
  474. -- elseif v.nTotalMoney<0 then
  475. -- failViewId=viewId
  476. -- end
  477. -- if v.result==MJDefine.MJGameResultType.Win then
  478. -- table.insert(viewIds,viewId)
  479. -- elseif v.result==MJDefine.MJGameResultType.Fail then
  480. -- failViewId=viewId
  481. -- end
  482. -- end
  483. --被抢杠的人回退补杠
  484. if hutype==MJDefine.MJHuType.QiangGangHu and roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_NORMAL then
  485. self.playerHandCards[failViewId]:retoreBuGang(hucard)
  486. end
  487. if #viewIds>0 then
  488. for k,viewId in pairs(viewIds) do
  489. local effect
  490. if k == #viewIds then --只有最后播放胡牌动画的回调一次就可以了
  491. effect=MJAnimationCompnent.CreateHuEffect(callback)
  492. --音效
  493. local userInfo=app.room:getUserInfoByViewId(viewId)
  494. if userInfo then
  495. if hutype==MJDefine.MJHuType.Zimo then
  496. MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_ZIMOHU)
  497. else
  498. MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_DIANPAOHU)
  499. end
  500. end
  501. else
  502. effect=MJAnimationCompnent.CreateHuEffect()
  503. end
  504. if effect then
  505. self:addChild(effect)
  506. effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
  507. end
  508. end
  509. else
  510. if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
  511. local effect=MJAnimationCompnent.CreateLiuJuEffect(callback)
  512. self:addChild(effect)
  513. MJSound.PlayHuangZhuang()
  514. else
  515. callback()
  516. end
  517. end
  518. end
  519. log("2000000000-MJRoomView - addCallBack(runGameXiaoJuResponse)" )
  520. self:addCallBack(runGameXiaoJuResponse);
  521. end
  522. function MJRoomReplayView:endReplay()
  523. local function runEndRepaly()
  524. local roomInfo = app.room.roomInfo
  525. -- local function sortMj(mjA,mjB)
  526. -- if mjA.sortValue<mjB.sortValue then
  527. -- return true
  528. -- elseif mjA.sortValue==mjB.sortValue then
  529. -- if mjA:getPositionX()<mjB:getPositionX() then
  530. -- return true
  531. -- end
  532. -- end
  533. -- return false
  534. -- end
  535. for k,v in pairs(roomInfo.memberList) do
  536. local viewId = app.room:getViewIdByUserId(v.nUserId)
  537. if self.playerHandCards[viewId] then
  538. local handCards={}
  539. for _,mj in pairs(self.playerHandCards[viewId].handCards) do
  540. table.insert(handCards,{card=mj.value})
  541. end
  542. -- table.sort(handCards,sortMj)
  543. if viewId==MJDefine.MyViewId then
  544. --我自己则屏蔽触摸事件
  545. -- self.playerHandCards[viewId]:removeTouchEvent()
  546. else
  547. --显示所有底牌
  548. self.playerHandCards[viewId]:removeAllHandCards()
  549. self.playerHandCards[viewId]:createOpenHandCards(handCards)
  550. end
  551. end
  552. end
  553. self:runAction(cc.Sequence:create(
  554. cc.DelayTime:create(3),
  555. cc.CallFunc:create(function()
  556. local MJMainView=MJFramework.MJImport("mj.luaScript.Views.Main.MJMainView")
  557. app:gotoView(MJMainView:new())
  558. end)
  559. ))
  560. end
  561. self:addCallBack(runEndRepaly)
  562. end
  563. -- 回放的时候,重写父类,直接为空,不刷新数据
  564. function MJRoomReplayView:applicationScreenSizeChanged()
  565. end
  566. return MJRoomReplayView