You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

479 lines
15 KiB

  1. local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
  2. local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
  3. local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa")
  4. -- 结算界面
  5. local MJRoomDaJuView = class("MJRoomDaJuView", cc.UIView)
  6. --人数条目位置配置 4人默认使用UI位置
  7. local ITEM_PLAYER_NUM_POS_CONFIG={
  8. [3]={
  9. 290*g_radio_x,
  10. 640*g_radio_x,
  11. 990*g_radio_x,
  12. },
  13. [2]={
  14. 440*g_radio_x,
  15. 840*g_radio_x,
  16. },
  17. }
  18. local DISMISS_INFO = {
  19. [0] = "超时解散",
  20. [1] = "申请解散",
  21. [2] = "同意解散",
  22. [3] = "拒绝",
  23. }
  24. function MJRoomDaJuView:ctor()
  25. MJRoomDaJuView.super.ctor(self)
  26. end
  27. function MJRoomDaJuView:loadUI()
  28. local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_daju_jiesuan.ui");
  29. self.ui = ui;
  30. self:addChild(ui)
  31. end
  32. function MJRoomDaJuView:onEnter()
  33. MJRoomDaJuView.super.onEnter(self)
  34. setShowCountAll(true)
  35. self:loadUI()
  36. self:initButton()
  37. self:initRoomInfo()
  38. self:initPlayerInfo()
  39. self:initPlayerItemInfo()
  40. self:initPlayGameAgain()
  41. end
  42. function MJRoomDaJuView:initButton()
  43. local roomInfo = app.room.roomInfo
  44. local config = getSubGameConfig(roomInfo.gameId or app.gameId)
  45. -- 关闭
  46. self.ui.Items.Button_1:registerClick(handler(self , self.onClickClose))
  47. -- 分享,如果没安装微信则不展示分享按钮
  48. self.ui.Items.Button_2:registerClick(handler(self , self.onClickShare))
  49. if self.ui.Items.Button_url then
  50. self.ui.Items.Button_url:registerClick(handler(self , self.onClickShareUrl))
  51. end
  52. if not app.config.ModuleConfig.IsSupportZhanJiUrl then
  53. if self.ui.Items.Layout_Button_url then
  54. self.ui.Items.Layout_Button_url:setVisible(false)
  55. end
  56. end
  57. local showShare = app.plugin:isShowThirdLogin() or false
  58. if isReviewVersion() or not showShare then
  59. if self.ui.Items.Layout_Button_2 then
  60. self.ui.Items.Layout_Button_2:setVisible(false)
  61. else
  62. self.ui.Items.Button_2:setVisible(false)
  63. end
  64. if not isWin32Platform() then
  65. if self.ui.Items.Layout_Button_url then
  66. self.ui.Items.Layout_Button_url:setVisible(false);
  67. elseif self.ui.Items.Button_url then
  68. self.ui.Items.Button_url:setVisible(false);
  69. end
  70. end
  71. end
  72. end
  73. ---
  74. -- 初始化大结算再来一局
  75. -- @return
  76. --
  77. function MJRoomDaJuView:initPlayGameAgain ()
  78. local roomInfo = app.room.roomInfo or {};
  79. local gameId = roomInfo.gameId or app.gameId
  80. if dd.IClub.isInClub() and roomInfo.nShowTableId then
  81. local inviteList = {}
  82. for k,v in pairsByKeys(roomInfo.memberList) do
  83. if tonumber(v.nUserId) ~= app.user.loginInfo.uid then
  84. table.insert(inviteList, v.nUserId)
  85. end
  86. end
  87. local strInvite = MJFunction.getClubInviteWanFa(gameId, roomInfo)
  88. local btnPlayAgain = self.ui.Items.Button_PlayAgain
  89. dd.IPlayGameAgain.bindPlayAgainButton(btnPlayAgain, gameId, strInvite, inviteList, function ()
  90. -- 初始化成功后干嘛干嘛
  91. local visible = btnPlayAgain:isVisible()
  92. self.ui.Items.Layout_Button_PlayAgain:setVisible(visible)
  93. if self.ui.Items.Layout_Operate_Buttons then
  94. self.ui.Items.Layout_Operate_Buttons:requestDoLayout()
  95. self.ui.Items.Layout_Operate_Buttons:doLayout()
  96. self.ui.Items.Layout_Operate_Buttons:setPositionX(cc.Director:getInstance():getVisibleSize().width / 2)
  97. end
  98. end)
  99. --绑定消息通知回调
  100. self:bindEvent(app.club_php , GAME_EVENT.CLUB_INVITE , handler(self , self.onClubInviteEvent))
  101. else
  102. logD("MJRoomDaJuView:initPlayGameAgain", "不在亲友圈或桌子id为空,不能进行再来一局操作")
  103. if self.ui.Items.Layout_Button_PlayAgain then
  104. self.ui.Items.Layout_Button_PlayAgain:setVisible(false)
  105. end
  106. if self.ui.Items.Layout_Operate_Buttons then
  107. self.ui.Items.Layout_Operate_Buttons:requestDoLayout()
  108. self.ui.Items.Layout_Operate_Buttons:doLayout()
  109. self.ui.Items.Layout_Operate_Buttons:setPositionX(cc.Director:getInstance():getVisibleSize().width / 2)
  110. end
  111. end
  112. end
  113. ---
  114. -- 监听亲友圈邀请信息
  115. -- @param event
  116. -- @return
  117. --
  118. function MJRoomDaJuView:onClubInviteEvent(event)
  119. dd.IPlayGameAgain.showClubInviteDialog(event, nil, nil)
  120. end
  121. function MJRoomDaJuView:initRoomInfo()
  122. local roomInfo = app.room.roomInfo
  123. local tableId = roomInfo.nShowTableId
  124. --房间玩法
  125. -- local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo)
  126. local gameName = getSubGameName(roomInfo.gameId)
  127. local jsonData = json.decode(roomInfo.strGameInfo)
  128. -- local specStr =jsonData.deductRule==0 and "房主付费" or "AA付费"
  129. self.ui.Items.Text_Rule:setText(gameName.." 房号:"..tableId.." "..roomInfo.nGameStartCount.."/"..roomInfo.nTotalGameNum.."局")--" 付费方式:"..specStr)
  130. -- 设置房间号和开始时间
  131. if app.club_php.clubID and app.club_php.clubID ~= 0 then
  132. self.ui.Items.Text_fanghao:setText(PLN.CLUB_NAME.."ID:"..app.club_php.clubID)
  133. else
  134. self.ui.Items.Text_fanghao:setText("")
  135. end
  136. local str = (string.format("%s", os.date("%m-%d %X", app.room.roomInfo.nEndTime or os.time()) ) )
  137. self.ui.Items.Text_time:setText(str)
  138. end
  139. function MJRoomDaJuView:initPlayerInfo()
  140. local roomInfo=app.room.roomInfo
  141. local playerNum = table.nums(roomInfo.memberList)
  142. for i=1,4 do
  143. if i>playerNum then
  144. self.ui.Items["Layout_Player_"..i]:setVisible(false)
  145. end
  146. end
  147. --得到大赢家 土豪 炮友用户ID
  148. local myUserId=app.room:getMyUserId()--app.user.loginInfo.uid
  149. local maxTotalScore = 0
  150. local minTotalScore = maxTotalScore--roomInfo.memberList[1].nTotalMoney
  151. local maxDianPaoCount = 0
  152. local maxUserId=-1
  153. local minUserId=maxUserId
  154. local maxDiaoPaoUserId=maxUserId
  155. for k,v in pairs(roomInfo.memberList) do
  156. v.nTotalMoney = tonumber(v.nTotalMoney)
  157. if v.nTotalMoney>maxTotalScore and v.nTotalMoney>0 then
  158. maxTotalScore=v.nTotalMoney
  159. maxUserId=v.nUserId
  160. end
  161. if v.nTotalMoney<minTotalScore and v.nTotalMoney>0 then
  162. minTotalScore=v.nTotalMoney
  163. minUserId=v.nUserId
  164. end
  165. end
  166. self.maxUserId=maxUserId
  167. --显示用户信息
  168. for k,v in pairs(roomInfo.memberList) do
  169. local userId = app.room:getViewIdByUserId(v.nUserId)
  170. local nSeatId = app.room:getSeatIdByViewId(userId)
  171. -- -- 玩家头像 名字
  172. local index=nSeatId+1
  173. local userInfo = app.room:getUserInfo(v.nUserId)
  174. local name = string.format("Text_name_%d",index)
  175. local uid = string.format("Text_uid_%d",index)
  176. local head = string.format("ImageView_headImg_%d",index)
  177. local winer = string.format("ImageView_dayingjia_%d",index)
  178. local roomer = string.format("ImageView_roomer_%d",index)
  179. local score = string.format("Text_Total_Score_%d",index)
  180. local winBg = string.format("ImageView_Win_%d",index)
  181. local dismiss = string.format("Text_Dismiss_%d",index)
  182. -- local fangka=string.format("ImageView_FangKa_%d",index)
  183. -- self.ui.Items[fangka]:setVisible(false)
  184. v.nTotalMoney = tonumber(v.nTotalMoney)
  185. local nickname = ""
  186. if userInfo and userInfo.nickname then
  187. nickname = getSubStringNickname(userInfo.nickname)
  188. self:updateUserHead(self.ui.Items[head],v.nUserId, userInfo.sex, userInfo.headimgurl);
  189. end
  190. self.ui.Items[name]:setText(nickname)
  191. self.ui.Items[uid]:setText("ID:"..v.nUserId)
  192. --显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq
  193. -- begin
  194. local ClubDefine = require("luaScript.Protocol.Club.ClubDefine")
  195. if app.club_php.clubID and app.club_php.clubID ~= 0 then
  196. if app.club_php:getCestIsOpen(app.club_php.clubID) then
  197. --隐私数据
  198. local clubInfo = app.club_php.clubList[app.club_php.clubID]
  199. self.cliext = clubInfo.groupext and clubInfo.groupext.cliext
  200. if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then
  201. if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then
  202. self.ui.Items[uid]:setVisible(true)
  203. else
  204. self.ui.Items[uid]:setVisible(false)
  205. end
  206. end
  207. end
  208. end
  209. if v.nUserId == tonumber(app.user.loginInfo.uid) then
  210. self.ui.Items[uid]:setVisible(true)
  211. end
  212. -- end
  213. self.ui.Items[roomer]:setVisible(v.nUserId == roomInfo.nRoomOwnedUid)
  214. self.ui.Items[roomer]:setVisible(false)--隐藏房主
  215. self.ui.Items[winer]:setVisible(false)
  216. self.ui.Items[winBg]:setVisible(false)
  217. if v.nUserId==maxUserId or (v.nTotalMoney == maxTotalScore and maxTotalScore > 0) then
  218. self.ui.Items[winer]:setVisible(true)
  219. self.ui.Items[winBg]:setVisible(true)
  220. end
  221. --分数
  222. if v.nTotalMoney > 0 then
  223. self.ui.Items[score]:setText(tostring("+"..v.nTotalMoney))
  224. else
  225. self.ui.Items[score]:setText(tostring(v.nTotalMoney))
  226. self.ui.Items[score]:setFntFile("res/fonts/dt_jian_num.fnt")
  227. end
  228. --解散状态
  229. if self.ui.Items[dismiss] then
  230. if roomInfo.stopFlag==9 then --9正常解散
  231. if app.room.dismissInfo and app.room.dismissInfo[v.nUserId] then
  232. local status = app.room.dismissInfo[v.nUserId]
  233. local strInfo = DISMISS_INFO[status]
  234. if strInfo then
  235. self.ui.Items[dismiss]:setText(strInfo)
  236. end
  237. end
  238. elseif roomInfo.stopFlag==8 then --8系统解散
  239. self.ui.Items[dismiss]:setText("系统解散")
  240. end
  241. end
  242. end
  243. self:updateItemPosition()
  244. end
  245. function MJRoomDaJuView:updateItemPosition()
  246. local roomInfo=app.room.roomInfo
  247. local playerNum = table.nums(roomInfo.memberList)
  248. if playerNum<4 and ITEM_PLAYER_NUM_POS_CONFIG[playerNum] then
  249. for i=1,playerNum do
  250. self.ui.Items["Layout_Player_"..i]:setPositionX(ITEM_PLAYER_NUM_POS_CONFIG[playerNum][i])
  251. end
  252. end
  253. end
  254. function MJRoomDaJuView:initPlayerItemInfo()
  255. local roomInfo=app.room.roomInfo
  256. --显示用户信息
  257. for _,player in pairs(roomInfo.memberList) do
  258. -- -- 玩家头像 名字
  259. local userId = app.room:getViewIdByUserId(player.nUserId)
  260. local nSeatId = app.room:getSeatIdByViewId(userId)
  261. local index=nSeatId+1
  262. local info = string.format("Text_ZsNum_%d",index)
  263. if self.ui.Items[info] then
  264. self.ui.Items[info]:setText("-"..tostring(player.costCard))
  265. end
  266. end
  267. end
  268. -- function MJRoomDaJuView:initPlayerItemInfo()
  269. -- local roomInfo=app.room.roomInfo
  270. -- local itemNames={
  271. -- ["ziMoCnt"]="自摸次数 ",
  272. -- ["jiePaoCnt"]="接炮次数 ",
  273. -- ["dianPaoCnt"]="点炮次数 ",
  274. -- ["mingCnt"]="接杠次数 ",
  275. -- -- ["zhiCnt"]="直杠",
  276. -- ["baCnt"]="明杠次数 ",
  277. -- ["anCnt"]="暗杠次数 ",
  278. -- }
  279. -- --显示用户信息
  280. -- for _,player in pairs(roomInfo.memberList) do
  281. -- -- -- 玩家头像 名字
  282. -- local index=player.nSeatId+1
  283. -- local i=1
  284. -- for k,v in pairs(itemNames) do
  285. -- if player.nTotalInfo[k] then
  286. -- local info = string.format("Text_Info_%d_%d",index,i)
  287. -- print(info)
  288. -- local str =itemNames[k]..player.nTotalInfo[k] --string.format(itemNames[],index,i)
  289. -- self.ui.Items[info]:setText(str)
  290. -- if self.maxUserId==player.nUserId then
  291. -- self.ui.Items[info]:setTextColor(cc.c4b(255,255,255,255))
  292. -- local config = self.ui.Items[info]:getFontConfig()
  293. -- --config.effectColor = cc.c4b(255,255,255,255)
  294. -- --config.outlineSize = 1
  295. -- self.ui.Items[info]:setFontConfig(config)
  296. -- end
  297. -- i=i+1
  298. -- end
  299. -- end
  300. -- end
  301. -- end
  302. function MJRoomDaJuView:onExit()
  303. MJRoomDaJuView.super.onExit(self);
  304. setShowCountAll(false)
  305. end
  306. -- 关闭
  307. function MJRoomDaJuView:onClickClose()
  308. playBtnEffect()
  309. app.room:dispatchEvent({name =MJDefine.MJEvent.DismissClose})
  310. self:removeFromParent()
  311. runInNextFrame(function()
  312. local roomInfo = app.room.roomInfo
  313. -- 房间号
  314. local roomId = roomInfo.nShowTableId
  315. --app:gotoView(import("luaScript.Views.Main.MainView"):new(roomInfo.gameId, roomId))
  316. gotoMainView(roomInfo.gameId,roomId)
  317. -- local MJMainView=MJFramework.MJImport("mj.luaScript.Views.Main.MJMainView")
  318. -- app:gotoView(MJMainView:new(app.gameId,roomId))
  319. end)
  320. end
  321. -- 分享
  322. function MJRoomDaJuView:onClickShare()
  323. playBtnEffect()
  324. local fileName = cc.FileUtils:getInstance():getWritablePath()..tostring(app.room.roomInfo.nShowTableId).."_screen.jpg"
  325. cc.FileUtils:getInstance():screenToFile(fileName, function(ret)
  326. if 1 == tonumber(ret) then
  327. -- local info = {}
  328. -- info.scene = "talk"
  329. -- info.contentType = "image"
  330. -- info.image = fileName
  331. -- info.imageWidth = 1000
  332. -- info.thumbWidth = 100
  333. -- app.plugin:shareGame(info)
  334. local info = {}
  335. info.contentType = "image"
  336. info.image = fileName
  337. info.imageWidth = 800
  338. -- info.menuIdxs = {1, 2, 3, 4, 5}
  339. info.isShareZhanjiUrl = true
  340. info.copyData={
  341. type=1,
  342. tableId=app.room.roomInfo.nShowTableId,
  343. userInfos={},
  344. gameId = app.room.roomInfo.gameId,
  345. }
  346. local memberList = app.room.roomInfo.memberList--self._overData.nTotalPlayerInfos
  347. for k,v in pairs(memberList) do
  348. local userInfo = json.decode(v.userInfo)
  349. --昵称
  350. local nickname = userInfo.nickname or ""
  351. local totalScore = v.nTotalMoney
  352. table.insert(info.copyData.userInfos,{nickname=getShortName2(nickname),totalScore=totalScore})
  353. end
  354. local view = import("luaScript.Views.Main.ShareView"):new(info,nil,{endtime=app.room.roomInfo.nEndTime or os.time()})
  355. view:setAnchorPoint(cc.p(0.5, 0.5))
  356. app:showWaitDialog(view)
  357. else
  358. showTooltip("截图保存失败");
  359. end
  360. end);
  361. end
  362. function MJRoomDaJuView:updateUserHead(nodeHead,nUserId, sex, headimgurl)
  363. setPlayerHeadImage(nUserId,headimgurl,nodeHead)
  364. end
  365. function MJRoomDaJuView:onClickShareUrl()
  366. app.waitDialogManager:showWaitNetworkDialog("获取分享链接")
  367. local onGetUrlCallback = function(url)
  368. app.waitDialogManager:closeWaitNetworkDialog()
  369. if url then
  370. local imagePath = cc.FileUtils:getInstance():getWritablePath().."icon.png"
  371. local gameName = getSubGameName(app.room.roomInfo.gameId) or "川南棋牌"
  372. local info = {}
  373. -- info.contentType = "image"
  374. info.image = fileName
  375. info.title = gameName.."战绩"
  376. -- info.imageWidth = 800
  377. info.menuIdxs = {1, 4, 5, 6}
  378. info.FFQFlag = true
  379. -- info.isShareZhanjiUrl = false
  380. info.copyData={
  381. type=1,
  382. tableId=app.room.roomInfo.nShowTableId,
  383. userInfos={},
  384. }
  385. local content = nil;
  386. local memberList = app.room.roomInfo.memberList--self._overData.nTotalPlayerInfos
  387. for k,v in pairs(memberList) do
  388. local userInfo = json.decode(v.userInfo)
  389. --昵称
  390. local nickname = userInfo.nickname or ""
  391. local totalScore = v.nTotalMoney
  392. table.insert(info.copyData.userInfos,{nickname=getShortName2(nickname),totalScore=totalScore})
  393. local strUserInfo = ""
  394. if totalScore > 0 then
  395. strUserInfo = string.format("%s(+%s)", getShortName2(nickname), totalScore)
  396. else
  397. strUserInfo = string.format("%s(%s)", getShortName2(nickname), totalScore)
  398. end
  399. if content then
  400. content = content .. "," .. strUserInfo
  401. else
  402. content = strUserInfo
  403. end
  404. end
  405. local sharUrl = string.format("%s?uid=%s&gameid=%s&app=%s&roomid=%s&endtime=%s",
  406. url,
  407. app.user.loginInfo.uid,
  408. app.room.roomInfo.gameId,
  409. getAppId(),
  410. app.room.roomInfo.nShowTableId,
  411. app.room.roomInfo.nEndTime or os.time())
  412. info.url = sharUrl
  413. info.description = content
  414. dump(info)
  415. local view = import("luaScript.Views.Main.ShareView"):new(info)
  416. view:setAnchorPoint(cc.p(0.5, 0.5))
  417. app:showWaitDialog(view)
  418. else
  419. showTooltip("获取分享用的链接失败")
  420. end
  421. end
  422. app.php:initShareZhanJiToUrl(onGetUrlCallback)
  423. end
  424. return MJRoomDaJuView;