var NetManage = require('NetManage'); var Utils = require('Utils'); var battlenet = require('battlenetmanage'); var SDKManage = require('SDKManage'); cc.Class({ extends: cc.Component, properties: { lb_first: { default: null, type: cc.Label, }, lb_second: { default: null, type: cc.Label, }, nd_zhaomu: { default: null, type: cc.Node, }, nd_pipei: { default: null, type: cc.Node, }, nd_players: { default: [], type: cc.Node, }, btn_start: { default: null, type: cc.Node, }, friendList:{ default:null, type:cc.Node, }, content_friend:{ default:null, type:cc.Node, }, friendScrollview:{ default:null, type:cc.ScrollView, }, pb_oneFriend:{ default:null, type:cc.Prefab, } }, // LIFE-CYCLE CALLBACKS: // onLoad () {}, onLoad() { this.zhaomutime = 0; this.m_curTime = 0; this.m_curSeconds = 0; this.updateteamtime = 0; this.step = 0; cc.Notifier.on( 'SMUpdateMatchInfo', this, this.SMUpdateMatchInfo.bind(this) ); cc.director.on('SOCKETCLOSE', this.socketCloseCallBack, this); this.btn_start.active = false; cc.Notifier.on("friendlist", this, this.getFriendList.bind(this)); cc.Notifier.on("inviteplayer", this, this.onCloseFriendList.bind(this)); }, onDestroy() { cc.playerData.team_list = null; cc.Notifier.off('SMUpdateMatchInfo', this); cc.director.off('SOCKETCLOSE', this); cc.Notifier.off("friendlist", this, this.getFriendList.bind(this)); cc.playerData.teamuuid = null; }, initdata(teamuuid) { this.nd_pipei.active = false; if (teamuuid) { this.nd_zhaomu.active = true; this.teamuuid = teamuuid; cc.playerData.teamuuid = this.teamuuid; window.team_uuid = this.teamuuid; } else { NetManage.createTeam((res) => { this.nd_zhaomu.active = true; this.teamuuid = res.team_uuid; cc.playerData.teamuuid = this.teamuuid; window.team_uuid = this.teamuuid; }); } cc.Notifier.emit('closechat'); }, startpipei() { this.nd_zhaomu.active = false; this.nd_pipei.active = true; this.step = 1; var teamlist = cc.playerData.team_list; var team_members = []; for (var i = 0; i < teamlist.length; i++) { team_members.push({ account_id: teamlist[i].account_id, }); } cc.playerData.changeHero(30100); var opt = cc.playerData.getbattleopt(); opt.team_uuid = this.teamuuid.team_uuid; opt.team_mode = 1; opt.team_members = team_members; battlenet.initengine(opt); }, SMUpdateMatchInfo(_data) { var data = _data.info; this.lb_first.string = Utils.second3Time(data.predict_time); this.refreshwait(data.members); if (data.phase == 2) { cc.uiMain.callbattlechosehero({ teamuuid: this.teamuuid, }); this.node.destroy(); return; } }, refreshwait(data) { for (var i = 0; i < 4; i++) { var name = ''; var headid = ''; var frameid = ''; if (data[i]) { name = data[i].name; headid = data[i].head_id; if (!headid) { headid = data[i].avatar_url; } frameid = data[i].head_frame; } this.nd_players[i].getComponent('iconset').initdata({ name: name, headid: headid, head_frame: frameid, }); } }, onclickpipei() { if (this.teamuuid) { NetManage.teamStartGame(this.teamuuid); } }, onclickclose() { if (this.teamuuid) { NetManage.leaveTeam(this.teamuuid); this.node.destroy(); } }, socketCloseCallBack() { this.node.destroy(); }, btnClose() { // sendBattlemsg(key,value) cc.battleIns.sendbattlemsg('CMMatchCancel'); setTimeout(() => { cc.battleIns.clean(); }, 100); this.node.destroy(); }, onclickzhaomu() { var nowtime = new Date().getTime() / 1000; if (nowtime - this.zhaomutime < 30) { cc.uiHelper.showTips('Recruiting, please wait'); return; } this.zhaomutime = nowtime; let battleobj = { tp: 1, text: 'Hey,come and play~', title: 'Rank - Multiplayer', roomid: this.teamuuid, }; let tmpData = { chat_channel: 1, target: '', msg_type: 1, msg_body: JSON.stringify(battleobj), }; cc.chatMgr.sendmsg('CMSendChatMsg', tmpData); cc.uiHelper.showTips('Send recruitment'); }, onclicktalk() { cc.uiMain.callChat(); }, onOpenFriendList(){ this.friendList.active = true; cc.chatMgr.sendmsg("CMFriendList"); }, setToNone() { this.content_friend.destroyAllChildren(); this.friendScrollview.stopAutoScroll(); this.friendScrollview.scrollToTop(); }, initOne(data, tmpData = {}) { const node = cc.instantiate(this.pb_oneFriend); node.getComponent("SingleFriendList").setToInvite(); node.getComponent("SingleFriendList").init(data); if (tmpData) node.getComponent("SingleFriendList").saveData(tmpData); this.content_friend.addChild(node); }, getFriendList(msg) { this.setToNone(); this.friend_list = []; for (var m = 0; m < msg.friend_list.length; m++) { this.friend_list.push(msg.friend_list[m]); } for (var i = this.friend_list.length - 1; i >= 0; i--) { if ( this.friend_list[i].base_data["account_id"] == SDKManage.account_id ) { this.friend_list.splice(i, 1); break; } } for (let i = 0; i < this.friend_list.length; i += 1) { var data={ player:cc.playerData.name, teaminfo:this.team_info } this.initOne(this.friend_list[i].base_data, data); } }, onCloseFriendList(){ this.friendList.active = false; }, updateteaminfo(v) { console.log(v); if (v.errcode == 0) { var info = v.team_info; this.team_info = v.team_info; this.btn_start.active = info.member_list[0].account_id == SDKManage.account_id; this.refreshwait(info.member_list); cc.playerData.team_list = info.member_list; if (info.state == 1) { this.startpipei(); } } }, update(dt) { if (this.step == 0) { if (this.teamuuid) { this.updateteamtime -= dt; if (this.updateteamtime <= 0) { NetManage.getTeamInfo( this.teamuuid, this.updateteaminfo.bind(this) ); this.updateteamtime = 1; } } return; } this.m_curTime += dt; if (this.m_curTime > 1) { this.m_curTime = 0; this.m_curSeconds++; this.lb_second.string = Utils.second3Time(this.m_curSeconds); } }, });