From 56a88c91052f007e23d1b0fb410397ca8632a8d4 Mon Sep 17 00:00:00 2001 From: libccy Date: Mon, 13 Nov 2017 15:13:55 +0800 Subject: [PATCH] rec --- game/game.js | 88 ++++++++++++++++++++++++++++++++++----- game/update.js | 5 ++- layout/default/layout.css | 17 ++++++++ 3 files changed, 98 insertions(+), 12 deletions(-) diff --git a/game/game.js b/game/game.js index 7f1cd350a..55677d588 100644 --- a/game/game.js +++ b/game/game.js @@ -20565,7 +20565,8 @@ } else{ localStorage.setItem(lib.configprefix+'directstart',true); - game.reload(); + game.saveConfig('tmp_user_roomId'); + setTimeout(game.reload,100); } } else{ @@ -21671,6 +21672,7 @@ avatar:lib.config.connect_avatar, nickname:lib.config.connect_nickname },lib.config.banned_info); + ui.create.connecting(true); }, onconnection:function(id){ var ws={wsid:id}; @@ -21709,10 +21711,12 @@ else{ game.switchMode(lib.configOL.mode); } + ui.create.connecting(true); }, enterroomfailed:function(){ alert('请稍后再试'); _status.enteringroom=false; + ui.create.connecting(true); }, roomlist:function(list,events,clients,wsid){ game.online=true; @@ -21724,12 +21728,6 @@ game.saveConfig('recentIP',lib.config.recentIP); _status.connectMode=true; - if(localStorage.getItem(lib.configprefix+'tmp_roomId')){ - lib.configOL.mode=lib.config.connect_mode; - game.roomId=parseInt(localStorage.getItem(lib.configprefix+'tmp_roomId')); - localStorage.removeItem(lib.configprefix+'tmp_roomId'); - } - game.clearArena(); game.clearConnect(); ui.pause.hide(); @@ -21785,6 +21783,42 @@ game.reload(); },true); + if(typeof lib.config.tmp_owner_roomId=='number'){ + if(!game.roomId&&ui.rooms[lib.config.tmp_owner_roomId].roomempty){ + lib.configOL.mode=lib.config.connect_mode; + game.roomId=lib.config.tmp_owner_roomId; + } + game.saveConfig('tmp_owner_roomId'); + } + if(typeof lib.config.tmp_user_roomId=='number'){ + if(!game.roomId){ + if(!ui.rooms[lib.config.tmp_user_roomId].roomempty){ + game.roomId=lib.config.tmp_user_roomId; + } + else{ + ui.create.connecting(); + (function(){ + var n=10; + var id=lib.config.tmp_user_roomId; + var interval=setInterval(function(){ + if(n>0){ + n--; + if(!ui.rooms[id].roomempty){ + clearInterval(interval); + game.send('server','enter',game.roomId,lib.config.connect_nickname,lib.config.connect_avatar); + } + } + else{ + ui.create.connecting(true); + clearInterval(interval); + } + },500); + }()); + } + } + game.saveConfig('tmp_user_roomId'); + } + if(window.isNonameServer){ var cfg='pagecfg'+window.isNonameServer; if(lib.config[cfg]){ @@ -21804,6 +21838,7 @@ } } else if(typeof game.roomId=='number'){ + ui.create.connecting(); game.send('server','enter',game.roomId,lib.config.connect_nickname,lib.config.connect_avatar); } lib.init.onfree(); @@ -21870,6 +21905,7 @@ } else{ game.saveConfig('reconnect_info',[_status.ip,id]); + game.saveConfig('tmp_user_roomId',roomId); } lib.config.recentIP.remove(_status.ip); lib.config.recentIP.unshift(_status.ip); @@ -21981,6 +22017,9 @@ } else{ game.saveConfig('reconnect_info',[_status.ip,game.onlineID]); + if(!observe){ + game.saveConfig('tmp_user_roomId',game.roomId); + } } _status.connectMode=true; lib.configOL=config; @@ -26204,8 +26243,14 @@ if(!ui.restart){ if(game.onlineroom&&typeof game.roomId=='number'){ ui.restart=ui.create.control('restart',function(){ - localStorage.setItem(lib.configprefix+'tmp_roomId',game.roomId); - game.reload(); + game.broadcastAll(function(){ + if(ui.exit){ + ui.exit.stay=true; + ui.exit.firstChild.innerHTML='返回房间'; + } + }); + game.saveConfig('tmp_owner_roomId',game.roomId); + setTimeout(game.reload,100); }); } else{ @@ -28667,6 +28712,7 @@ config[key]=value; } localStorage.setItem(lib.configprefix+'config',JSON.stringify(config)); + callback(); } else{ if(value==undefined){ @@ -29213,6 +29259,21 @@ ui.exit=ui.create.control('退出房间',ui.click.exit); } }, + connecting:function(bool){ + if(bool){ + ui.window.classList.remove('connecting'); + if(ui.connecting){ + ui.connecting.delete(); + delete ui.connecting; + } + } + else{ + ui.window.classList.add('connecting'); + ui.connecting=ui.create.div('.fullsize.connectlayer'); + document.body.appendChild(ui.connecting); + ui.create.div('','正在重连...',ui.connecting); + } + }, roomInfo:function(){ var chat=ui.create.system(game.online?'房间信息':'房间设置',function(){ if(!game.online||game.onlinezhu){ @@ -38455,7 +38516,14 @@ game.saveConfig('reconnect_info'); } } - game.reload(); + if(!ui.exit||!ui.exit.stay){ + game.saveConfig('tmp_user_roomId',undefined,false,function(){ + game.reload(); + }); + } + else{ + game.reload(); + } }, shortcut:function(show){ if(show===false){ diff --git a/game/update.js b/game/update.js index 5e952d0a4..175473c88 100644 --- a/game/update.js +++ b/game/update.js @@ -1,8 +1,9 @@ window.noname_update={ - version:'1.9.42', + version:'1.9.43', // update:'1.9.41', changeLog:[ - '优化触屏装备选择' + '部分DIY比赛武将', + '联机断线重连、重开改进' ], files:[ // 'game/game.js', diff --git a/layout/default/layout.css b/layout/default/layout.css index 52ac05379..1e13f9a89 100644 --- a/layout/default/layout.css +++ b/layout/default/layout.css @@ -42,6 +42,23 @@ table { transition-property: opacity; overflow: hidden } +#window.connecting{ + opacity: 0.5; +} +.fullsize.connectlayer{ + display: table; + text-align: center; + z-index: 100; +} +.connectlayer>div{ + display: table-cell; + vertical-align: middle; + font-size: 60px; + color: white; + text-shadow: black 0 0 2px; + position: relative; + font-family: 'xinwei'; +} #window.server>div:not(.serverinfo){ display: none !important; }