local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction") local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa") -- 结算界面 local MJRoomDaJuView = class("MJRoomDaJuView", cc.UIView) --人数条目位置配置 4人默认使用UI位置 local ITEM_PLAYER_NUM_POS_CONFIG={ [3]={ 290*g_radio_x, 640*g_radio_x, 990*g_radio_x, }, [2]={ 440*g_radio_x, 840*g_radio_x, }, } local DISMISS_INFO = { [0] = "超时解散", [1] = "申请解散", [2] = "同意解散", [3] = "拒绝", } function MJRoomDaJuView:ctor() MJRoomDaJuView.super.ctor(self) end function MJRoomDaJuView:loadUI() local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_daju_jiesuan.ui"); self.ui = ui; self:addChild(ui) end function MJRoomDaJuView:onEnter() MJRoomDaJuView.super.onEnter(self) setShowCountAll(true) self:loadUI() self:initButton() self:initRoomInfo() self:initPlayerInfo() self:initPlayerItemInfo() self:initPlayGameAgain() end function MJRoomDaJuView:initButton() local roomInfo = app.room.roomInfo local config = getSubGameConfig(roomInfo.gameId or app.gameId) -- 关闭 self.ui.Items.Button_1:registerClick(handler(self , self.onClickClose)) -- 分享,如果没安装微信则不展示分享按钮 self.ui.Items.Button_2:registerClick(handler(self , self.onClickShare)) if self.ui.Items.Button_url then self.ui.Items.Button_url:registerClick(handler(self , self.onClickShareUrl)) end if not app.config.ModuleConfig.IsSupportZhanJiUrl then if self.ui.Items.Layout_Button_url then self.ui.Items.Layout_Button_url:setVisible(false) end end local showShare = app.plugin:isShowThirdLogin() or false if isReviewVersion() or not showShare then if self.ui.Items.Layout_Button_2 then self.ui.Items.Layout_Button_2:setVisible(false) else self.ui.Items.Button_2:setVisible(false) end if not isWin32Platform() then if self.ui.Items.Layout_Button_url then self.ui.Items.Layout_Button_url:setVisible(false); elseif self.ui.Items.Button_url then self.ui.Items.Button_url:setVisible(false); end end end end --- -- 初始化大结算再来一局 -- @return -- function MJRoomDaJuView:initPlayGameAgain () local roomInfo = app.room.roomInfo or {}; local gameId = roomInfo.gameId or app.gameId if dd.IClub.isInClub() and roomInfo.nShowTableId then local inviteList = {} for k,v in pairsByKeys(roomInfo.memberList) do if tonumber(v.nUserId) ~= app.user.loginInfo.uid then table.insert(inviteList, v.nUserId) end end local strInvite = MJFunction.getClubInviteWanFa(gameId, roomInfo) local btnPlayAgain = self.ui.Items.Button_PlayAgain dd.IPlayGameAgain.bindPlayAgainButton(btnPlayAgain, gameId, strInvite, inviteList, function () -- 初始化成功后干嘛干嘛 local visible = btnPlayAgain:isVisible() self.ui.Items.Layout_Button_PlayAgain:setVisible(visible) if self.ui.Items.Layout_Operate_Buttons then self.ui.Items.Layout_Operate_Buttons:requestDoLayout() self.ui.Items.Layout_Operate_Buttons:doLayout() self.ui.Items.Layout_Operate_Buttons:setPositionX(cc.Director:getInstance():getVisibleSize().width / 2) end end) --绑定消息通知回调 self:bindEvent(app.club_php , GAME_EVENT.CLUB_INVITE , handler(self , self.onClubInviteEvent)) else logD("MJRoomDaJuView:initPlayGameAgain", "不在亲友圈或桌子id为空,不能进行再来一局操作") if self.ui.Items.Layout_Button_PlayAgain then self.ui.Items.Layout_Button_PlayAgain:setVisible(false) end if self.ui.Items.Layout_Operate_Buttons then self.ui.Items.Layout_Operate_Buttons:requestDoLayout() self.ui.Items.Layout_Operate_Buttons:doLayout() self.ui.Items.Layout_Operate_Buttons:setPositionX(cc.Director:getInstance():getVisibleSize().width / 2) end end end --- -- 监听亲友圈邀请信息 -- @param event -- @return -- function MJRoomDaJuView:onClubInviteEvent(event) dd.IPlayGameAgain.showClubInviteDialog(event, nil, nil) end function MJRoomDaJuView:initRoomInfo() local roomInfo = app.room.roomInfo local tableId = roomInfo.nShowTableId --房间玩法 -- local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo) local gameName = getSubGameName(roomInfo.gameId) local jsonData = json.decode(roomInfo.strGameInfo) -- local specStr =jsonData.deductRule==0 and "房主付费" or "AA付费" self.ui.Items.Text_Rule:setText(gameName.." 房号:"..tableId.." "..roomInfo.nGameStartCount.."/"..roomInfo.nTotalGameNum.."局")--" 付费方式:"..specStr) -- 设置房间号和开始时间 if app.club_php.clubID and app.club_php.clubID ~= 0 then self.ui.Items.Text_fanghao:setText(PLN.CLUB_NAME.."ID:"..app.club_php.clubID) else self.ui.Items.Text_fanghao:setText("") end local str = (string.format("%s", os.date("%m-%d %X", app.room.roomInfo.nEndTime or os.time()) ) ) self.ui.Items.Text_time:setText(str) end function MJRoomDaJuView:initPlayerInfo() local roomInfo=app.room.roomInfo local playerNum = table.nums(roomInfo.memberList) for i=1,4 do if i>playerNum then self.ui.Items["Layout_Player_"..i]:setVisible(false) end end --得到大赢家 土豪 炮友用户ID local myUserId=app.room:getMyUserId()--app.user.loginInfo.uid local maxTotalScore = 0 local minTotalScore = maxTotalScore--roomInfo.memberList[1].nTotalMoney local maxDianPaoCount = 0 local maxUserId=-1 local minUserId=maxUserId local maxDiaoPaoUserId=maxUserId for k,v in pairs(roomInfo.memberList) do v.nTotalMoney = tonumber(v.nTotalMoney) if v.nTotalMoney>maxTotalScore and v.nTotalMoney>0 then maxTotalScore=v.nTotalMoney maxUserId=v.nUserId end if v.nTotalMoney0 then minTotalScore=v.nTotalMoney minUserId=v.nUserId end end self.maxUserId=maxUserId --显示用户信息 for k,v in pairs(roomInfo.memberList) do local userId = app.room:getViewIdByUserId(v.nUserId) local nSeatId = app.room:getSeatIdByViewId(userId) -- -- 玩家头像 名字 local index=nSeatId+1 local userInfo = app.room:getUserInfo(v.nUserId) local name = string.format("Text_name_%d",index) local uid = string.format("Text_uid_%d",index) local head = string.format("ImageView_headImg_%d",index) local winer = string.format("ImageView_dayingjia_%d",index) local roomer = string.format("ImageView_roomer_%d",index) local score = string.format("Text_Total_Score_%d",index) local winBg = string.format("ImageView_Win_%d",index) local dismiss = string.format("Text_Dismiss_%d",index) -- local fangka=string.format("ImageView_FangKa_%d",index) -- self.ui.Items[fangka]:setVisible(false) v.nTotalMoney = tonumber(v.nTotalMoney) local nickname = "" if userInfo and userInfo.nickname then nickname = getSubStringNickname(userInfo.nickname) self:updateUserHead(self.ui.Items[head],v.nUserId, userInfo.sex, userInfo.headimgurl); end self.ui.Items[name]:setText(nickname) self.ui.Items[uid]:setText("ID:"..v.nUserId) --显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq -- begin local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") if app.club_php.clubID and app.club_php.clubID ~= 0 then if app.club_php:getCestIsOpen(app.club_php.clubID) then --隐私数据 local clubInfo = app.club_php.clubList[app.club_php.clubID] self.cliext = clubInfo.groupext and clubInfo.groupext.cliext if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then self.ui.Items[uid]:setVisible(true) else self.ui.Items[uid]:setVisible(false) end end end end if v.nUserId == tonumber(app.user.loginInfo.uid) then self.ui.Items[uid]:setVisible(true) end -- end self.ui.Items[roomer]:setVisible(v.nUserId == roomInfo.nRoomOwnedUid) self.ui.Items[roomer]:setVisible(false)--隐藏房主 self.ui.Items[winer]:setVisible(false) self.ui.Items[winBg]:setVisible(false) if v.nUserId==maxUserId or (v.nTotalMoney == maxTotalScore and maxTotalScore > 0) then self.ui.Items[winer]:setVisible(true) self.ui.Items[winBg]:setVisible(true) end --分数 if v.nTotalMoney > 0 then self.ui.Items[score]:setText(tostring("+"..v.nTotalMoney)) else self.ui.Items[score]:setText(tostring(v.nTotalMoney)) self.ui.Items[score]:setFntFile("res/fonts/dt_jian_num.fnt") end --解散状态 if self.ui.Items[dismiss] then if roomInfo.stopFlag==9 then --9正常解散 if app.room.dismissInfo and app.room.dismissInfo[v.nUserId] then local status = app.room.dismissInfo[v.nUserId] local strInfo = DISMISS_INFO[status] if strInfo then self.ui.Items[dismiss]:setText(strInfo) end end elseif roomInfo.stopFlag==8 then --8系统解散 self.ui.Items[dismiss]:setText("系统解散") end end end self:updateItemPosition() end function MJRoomDaJuView:updateItemPosition() local roomInfo=app.room.roomInfo local playerNum = table.nums(roomInfo.memberList) if playerNum<4 and ITEM_PLAYER_NUM_POS_CONFIG[playerNum] then for i=1,playerNum do self.ui.Items["Layout_Player_"..i]:setPositionX(ITEM_PLAYER_NUM_POS_CONFIG[playerNum][i]) end end end function MJRoomDaJuView:initPlayerItemInfo() local roomInfo=app.room.roomInfo --显示用户信息 for _,player in pairs(roomInfo.memberList) do -- -- 玩家头像 名字 local userId = app.room:getViewIdByUserId(player.nUserId) local nSeatId = app.room:getSeatIdByViewId(userId) local index=nSeatId+1 local info = string.format("Text_ZsNum_%d",index) if self.ui.Items[info] then self.ui.Items[info]:setText("-"..tostring(player.costCard)) end end end -- function MJRoomDaJuView:initPlayerItemInfo() -- local roomInfo=app.room.roomInfo -- local itemNames={ -- ["ziMoCnt"]="自摸次数 ", -- ["jiePaoCnt"]="接炮次数 ", -- ["dianPaoCnt"]="点炮次数 ", -- ["mingCnt"]="接杠次数 ", -- -- ["zhiCnt"]="直杠", -- ["baCnt"]="明杠次数 ", -- ["anCnt"]="暗杠次数 ", -- } -- --显示用户信息 -- for _,player in pairs(roomInfo.memberList) do -- -- -- 玩家头像 名字 -- local index=player.nSeatId+1 -- local i=1 -- for k,v in pairs(itemNames) do -- if player.nTotalInfo[k] then -- local info = string.format("Text_Info_%d_%d",index,i) -- print(info) -- local str =itemNames[k]..player.nTotalInfo[k] --string.format(itemNames[],index,i) -- self.ui.Items[info]:setText(str) -- if self.maxUserId==player.nUserId then -- self.ui.Items[info]:setTextColor(cc.c4b(255,255,255,255)) -- local config = self.ui.Items[info]:getFontConfig() -- --config.effectColor = cc.c4b(255,255,255,255) -- --config.outlineSize = 1 -- self.ui.Items[info]:setFontConfig(config) -- end -- i=i+1 -- end -- end -- end -- end function MJRoomDaJuView:onExit() MJRoomDaJuView.super.onExit(self); setShowCountAll(false) end -- 关闭 function MJRoomDaJuView:onClickClose() playBtnEffect() app.room:dispatchEvent({name =MJDefine.MJEvent.DismissClose}) self:removeFromParent() runInNextFrame(function() local roomInfo = app.room.roomInfo -- 房间号 local roomId = roomInfo.nShowTableId --app:gotoView(import("luaScript.Views.Main.MainView"):new(roomInfo.gameId, roomId)) gotoMainView(roomInfo.gameId,roomId) -- local MJMainView=MJFramework.MJImport("mj.luaScript.Views.Main.MJMainView") -- app:gotoView(MJMainView:new(app.gameId,roomId)) end) end -- 分享 function MJRoomDaJuView:onClickShare() playBtnEffect() local fileName = cc.FileUtils:getInstance():getWritablePath()..tostring(app.room.roomInfo.nShowTableId).."_screen.jpg" cc.FileUtils:getInstance():screenToFile(fileName, function(ret) if 1 == tonumber(ret) then -- local info = {} -- info.scene = "talk" -- info.contentType = "image" -- info.image = fileName -- info.imageWidth = 1000 -- info.thumbWidth = 100 -- app.plugin:shareGame(info) local info = {} info.contentType = "image" info.image = fileName info.imageWidth = 800 -- info.menuIdxs = {1, 2, 3, 4, 5} info.isShareZhanjiUrl = true info.copyData={ type=1, tableId=app.room.roomInfo.nShowTableId, userInfos={}, gameId = app.room.roomInfo.gameId, } local memberList = app.room.roomInfo.memberList--self._overData.nTotalPlayerInfos for k,v in pairs(memberList) do local userInfo = json.decode(v.userInfo) --昵称 local nickname = userInfo.nickname or "" local totalScore = v.nTotalMoney table.insert(info.copyData.userInfos,{nickname=getShortName2(nickname),totalScore=totalScore}) end local view = import("luaScript.Views.Main.ShareView"):new(info,nil,{endtime=app.room.roomInfo.nEndTime or os.time()}) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) else showTooltip("截图保存失败"); end end); end function MJRoomDaJuView:updateUserHead(nodeHead,nUserId, sex, headimgurl) setPlayerHeadImage(nUserId,headimgurl,nodeHead) end function MJRoomDaJuView:onClickShareUrl() app.waitDialogManager:showWaitNetworkDialog("获取分享链接") local onGetUrlCallback = function(url) app.waitDialogManager:closeWaitNetworkDialog() if url then local imagePath = cc.FileUtils:getInstance():getWritablePath().."icon.png" local gameName = getSubGameName(app.room.roomInfo.gameId) or "川南棋牌" local info = {} -- info.contentType = "image" info.image = fileName info.title = gameName.."战绩" -- info.imageWidth = 800 info.menuIdxs = {1, 4, 5, 6} info.FFQFlag = true -- info.isShareZhanjiUrl = false info.copyData={ type=1, tableId=app.room.roomInfo.nShowTableId, userInfos={}, } local content = nil; local memberList = app.room.roomInfo.memberList--self._overData.nTotalPlayerInfos for k,v in pairs(memberList) do local userInfo = json.decode(v.userInfo) --昵称 local nickname = userInfo.nickname or "" local totalScore = v.nTotalMoney table.insert(info.copyData.userInfos,{nickname=getShortName2(nickname),totalScore=totalScore}) local strUserInfo = "" if totalScore > 0 then strUserInfo = string.format("%s(+%s)", getShortName2(nickname), totalScore) else strUserInfo = string.format("%s(%s)", getShortName2(nickname), totalScore) end if content then content = content .. "," .. strUserInfo else content = strUserInfo end end local sharUrl = string.format("%s?uid=%s&gameid=%s&app=%s&roomid=%s&endtime=%s", url, app.user.loginInfo.uid, app.room.roomInfo.gameId, getAppId(), app.room.roomInfo.nShowTableId, app.room.roomInfo.nEndTime or os.time()) info.url = sharUrl info.description = content dump(info) local view = import("luaScript.Views.Main.ShareView"):new(info) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) else showTooltip("获取分享用的链接失败") end end app.php:initShareZhanJiToUrl(onGetUrlCallback) end return MJRoomDaJuView;