'use strict'; game.import('mode',function(lib,game,ui,get,ai,_status){ return { name:'connect', start:function(){ var directstartmode=lib.config.directstartmode; ui.create.menu(true); event.textnode=ui.create.div('','输入联机地址'); var createNode=function(){ if(event.created) return; if(directstartmode&&lib.node){ ui.exitroom=ui.create.system('退出房间',function(){ game.saveConfig('directstartmode'); game.reload(); },true); game.switchMode(directstartmode); return; } if(lib.node&&window.require){ ui.startServer=ui.create.system('启动服务器',function(e){ ui.click.shortcut(false); e.stopPropagation(); ui.click.connectMenu(); },true); } event.created=true; var node=ui.create.div('.shadowed'); node.style.width='400px'; node.style.height='30px'; node.style.lineHeight='30px'; node.style.fontFamily='xinwei'; node.style.fontSize='30px'; node.style.padding='10px'; node.style.left='calc(50% - 210px)'; node.style.top='calc(50% - 20px)'; node.style.whiteSpace='nowrap'; node.textContent=lib.config.last_ip||lib.hallURL; node.contentEditable=true; node.style.webkitUserSelect='text'; node.style.textAlign='center'; node.style.overflow='hidden'; var connect=function(e){ const info=lib.config.reconnect_info; if(info&&info[0]==node.textContent){ game.onlineID=info[1]; if(typeof (game.roomId=info[2])=='string') game.roomIdServer=true; } event.textnode.textContent='正在连接...'; clearTimeout(event.timeout); if(e) e.preventDefault(); game.saveConfig('last_ip',node.textContent); game.connect(node.textContent,function(success){ if(!success&&event.textnode){ alert('连接失败'); event.textnode.textContent='输入联机地址'; } }); }; node.addEventListener('keydown',function(e){ if(e.keyCode==13){ connect(e); } }); ui.window.appendChild(node); ui.ipnode=node; var text=event.textnode; text.style.width='400px'; text.style.height='30px'; text.style.lineHeight='30px'; text.style.fontFamily='xinwei'; text.style.fontSize='30px'; text.style.padding='10px'; text.style.left='calc(50% - 200px)'; text.style.top='calc(50% - 80px)'; text.style.textAlign='center'; ui.window.appendChild(text); ui.iptext=text; var button=ui.create.div('.menubutton.highlight.large.pointerdiv','连接',connect); button.style.width='70px'; button.style.left='calc(50% - 35px)'; button.style.top='calc(50% + 60px)'; ui.window.appendChild(button); ui.ipbutton=button; ui.hall_button=ui.create.system('联机大厅',function(){ node.textContent=get.config('hall_ip')||lib.hallURL; connect(); },true); if(!get.config('hall_button')){ ui.hall_button.style.display='none'; } ui.recentIP=ui.create.system('最近连接',null,true); var clickLink=function(){ node.textContent=this.textContent; connect(); }; lib.setPopped(ui.recentIP,function(){ if(!lib.config.recentIP.length) return; var uiintro=ui.create.dialog('hidden'); uiintro.listen(function(e){ e.stopPropagation(); }); var list=ui.create.div('.caption'); for(var i=0;i清除'); clear.style.paddingTop=0; clear.style.paddingBottom='3px'; clear.listen(function(){ lib.config.recentIP.length=0; game.saveConfig('recentIP',[]); uiintro.delete(); }); return uiintro; },220); if (get.config('read_clipboard','connect')){ var ced=false; function read(text){ try{ var text2=text.split('\n')[2]; var ip=text2.slice(5); if(ip.length>0&&text2.startsWith("联机地址:")&&(ced||confirm('是否根据剪贴板的邀请链接以进入联机地址和房间?'))){ node.innerHTML=ip; event.textnode.innerHTML='正在连接...'; clearTimeout(event.timeout); game.saveConfig('last_ip',node.innerHTML); game.connect(node.innerHTML,function(success){ if(!success&&event.textnode){ alert('邀请链接解析失败'); event.textnode.innerHTML='输入联机地址'; } if (success) _status.read_clipboard_text=text; }); } }catch(e){console.log(e);} } window.focus(); if (navigator.clipboard&&lib.node){ navigator.clipboard.readText().then(read).catch(_=>{}); }else{ var input=ui.create.node('textarea',ui.window,{opacity:'0'}); input.select(); var result=document.execCommand('paste'); input.blur(); ui.window.removeChild(input); if(result||input.value.length>0) read(input.value); else if(confirm('是否输入邀请链接以进入联机地址和房间?')){ ced=true; var text=prompt('请输入邀请链接'); if(typeof text=='string'&&text.length>0) read(text); } } } lib.init.onfree(); } if(window.isNonameServer){ game.connect(window.isNonameServerIp||'localhost'); } else{ createNode(); } if(!game.onlineKey){ game.onlineKey=localStorage.getItem(lib.configprefix+'key'); if(!game.onlineKey){ game.onlineKey=get.id(); localStorage.setItem(lib.configprefix+'key',game.onlineKey); } } _status.connectDenied=createNode; setTimeout(lib.init.onfree,1000); } }; });