noname/mode/connect.js

140 lines
5.0 KiB
JavaScript
Raw Normal View History

2016-04-02 08:05:24 +00:00
'use strict';
mode.connect={
start:function(){
2016-04-12 07:49:02 +00:00
var directstartmode=lib.config.directstartmode;
ui.create.menu(true);
2016-04-03 16:11:05 +00:00
var createNode=function(){
if(event.created) return;
2016-04-13 05:36:59 +00:00
if(directstartmode&&lib.node){
ui.exitroom=ui.create.system('退出房间',function(){
game.saveConfig('directstartmode');
game.reload();
},true);
2016-04-12 07:49:02 +00:00
game.switchMode(directstartmode);
return;
}
if(lib.node&&window.require){
ui.startServer=ui.create.system('启动服务器',function(e){
e.stopPropagation();
ui.click.connectMenu();
},true);
}
2016-04-03 16:11:05 +00:00
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';
2016-04-12 07:49:02 +00:00
node.style.left='calc(50% - 210px)';
2016-04-03 16:11:05 +00:00
node.style.top='calc(50% - 20px)';
node.style.whiteSpace='nowrap';
2016-07-11 03:18:22 +00:00
node.innerHTML=lib.config.last_ip||lib.hallURL;
2016-04-03 16:11:05 +00:00
node.contentEditable=true;
node.style.webkitUserSelect='text';
node.style.textAlign='center';
var connect=function(e){
clearTimeout(event.timeout);
2016-04-07 13:21:19 +00:00
if(e) e.preventDefault();
2016-04-03 16:11:05 +00:00
game.saveConfig('last_ip',node.innerHTML);
game.connect(node.innerHTML);
};
node.addEventListener('keydown',function(e){
if(e.keyCode==13){
connect(e);
}
});
ui.window.appendChild(node);
ui.ipnode=node;
var text=ui.create.div();
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.innerHTML='输入联机地址';
text.style.textAlign='center';
ui.window.appendChild(text);
ui.iptext=text;
var button=ui.create.div('.menubutton.highlight.large','连接',connect);
button.style.width='70px';
button.style.left='calc(50% - 35px)';
button.style.top='calc(50% + 60px)';
ui.window.appendChild(button);
ui.ipbutton=button;
2016-04-07 13:21:19 +00:00
2016-04-11 10:14:04 +00:00
ui.hall_button=ui.create.system('联机大厅',function(){
node.innerHTML=get.config('hall_ip')||lib.hallURL;
connect();
},true);
if(!get.config('hall_button')){
ui.hall_button.style.display='none';
}
2016-04-07 13:21:19 +00:00
ui.recentIP=ui.create.system('最近连接',null,true);
var clickLink=function(){
node.innerHTML=this.innerHTML;
connect();
};
lib.setPopped(ui.recentIP,function(){
2016-04-07 15:54:17 +00:00
if(!lib.config.recentIP.length) return;
2016-04-07 13:21:19 +00:00
var uiintro=ui.create.dialog('hidden');
uiintro.listen(function(e){
e.stopPropagation();
});
var list=ui.create.div('.caption');
for(var i=0;i<lib.config.recentIP.length;i++){
2016-04-10 15:26:14 +00:00
ui.create.div('.text.textlink',list,clickLink).innerHTML=get.trimip(lib.config.recentIP[i]);
2016-04-07 13:21:19 +00:00
}
uiintro.add(list);
2016-04-07 15:54:17 +00:00
var clear=uiintro.add('<div class="text center">清除</div>');
clear.style.paddingTop=0;
clear.style.paddingBottom='3px';
clear.listen(function(){
lib.config.recentIP.length=0;
game.saveConfig('recentIP',[]);
uiintro.delete();
});
2016-04-07 13:21:19 +00:00
return uiintro;
},220);
2016-04-03 16:11:05 +00:00
}
2016-04-17 03:18:31 +00:00
if(window.isNonameServer){
2017-02-12 16:26:10 +00:00
game.connect(window.isNonameServerIp||'localhost');
2016-04-17 03:18:31 +00:00
}
else if(lib.config.reconnect_info){
2016-04-02 08:05:24 +00:00
var info=lib.config.reconnect_info;
2016-04-03 09:03:46 +00:00
game.onlineID=info[1];
2016-04-18 05:13:47 +00:00
game.roomId=info[2];
2016-04-02 14:51:26 +00:00
var n=5;
var connect=function(){
2016-04-03 09:03:46 +00:00
game.connect(info[0],function(success){
if(!success&&n--){
2016-04-03 16:11:05 +00:00
createNode();
2016-04-02 14:51:26 +00:00
event.timeout=setTimeout(connect,1000);
}
});
};
event.timeout=setTimeout(connect,500);
2016-04-06 09:27:45 +00:00
_status.createNodeTimeout=setTimeout(createNode,2000);
2016-04-02 14:51:26 +00:00
}
2016-04-03 16:11:05 +00:00
else{
createNode();
}
_status.connectDenied=createNode;
2016-04-02 08:05:24 +00:00
for(var i in lib.element.event){
event.parent[i]=lib.element.event[i];
}
event.parent.custom={
add:{},
replace:{}
};
}
};