From 8699a78908fbf47ae1c99ca1c29119db55f1a1a5 Mon Sep 17 00:00:00 2001 From: libccy Date: Mon, 4 Apr 2016 00:11:05 +0800 Subject: [PATCH] f --- character/sp.js | 7 ++- game/game.js | 130 ++++++++++++++++++++++++++++++++++------------- game/update.js | 7 ++- mode/connect.js | 100 +++++++++++++++++++++--------------- mode/identity.js | 49 +++++++++--------- 5 files changed, 185 insertions(+), 108 deletions(-) diff --git a/character/sp.js b/character/sp.js index 53f8266fa..3ce0b91de 100755 --- a/character/sp.js +++ b/character/sp.js @@ -102,7 +102,7 @@ character.sp={ player.storage.qizhi++; if(!event.isMine()) game.delay(); player.logSkill('qizh',result.targets); - player.discardPlayerCard(result.targets[0],true); + player.discardPlayerCard(result.targets[0],true,'he'); event.target=result.targets[0]; } else{ @@ -313,6 +313,11 @@ character.sp={ maxHandcard:function(player,num){ if(player.get('e','3')||player.get('e','4')) return; return num+1; + }, + targetInRange:function(card,player,target,now){ + if(player.get('e','5')) return; + var type=get.type(card); + if(type=='trick'||type=='delay') return true; } } }, diff --git a/game/game.js b/game/game.js index 9ad556edf..39dc3e39b 100755 --- a/game/game.js +++ b/game/game.js @@ -3537,8 +3537,14 @@ } } } + var connect_avatar_list=[]; for(var i in lib.character){ - lib.mode.connect.config.connect_avatar.item[i]=lib.translate[i]; + connect_avatar_list.push(i); + } + connect_avatar_list.sort(lib.sort.capt); + for(var i=0;i0) left=-left; - if(top0-this.offsetTop>0) top=-top; - if(lib.isMobileMe(this)){ - left=-Math.random()*5-10; - top=Math.random()*5+10; - } - var transform='translate('+left+'px,'+top+'px) '+ - 'rotate('+(Math.random()*20-10)+'deg) '+ - ((Math.random()-0.5<0)?'rotateX(180deg)':'rotateY(180deg)'); - if(lib.isMobileMe(this)){ - this.node.avatar.style.transform=transform; - this.node.avatar2.style.transform=transform; - } - else{ - this.style.transform=transform; - } - this.queue(false); + this.$dieflip(); } + if(lib.element.player.$dieAfter){ + lib.element.player.$dieAfter.call(this); + } }, + $dieflip:function(){ + var top0=ui.window.offsetHeight/2; + var left0=ui.window.offsetWidth/2; + var ratio=(left0-this.offsetLeft)/(top0-this.offsetTop); + var left=Math.abs(50*ratio/Math.sqrt(1+ratio*ratio)); + var top=Math.abs(50/Math.sqrt(1+ratio*ratio)); + if(left0-this.offsetLeft>0) left=-left; + if(top0-this.offsetTop>0) top=-top; + if(lib.isMobileMe(this)){ + left=-Math.random()*5-10; + top=Math.random()*5+10; + } + var transform='translate('+left+'px,'+top+'px) '+ + 'rotate('+(Math.random()*20-10)+'deg) '+ + ((Math.random()-0.5<0)?'rotateX(180deg)':'rotateY(180deg)'); + if(lib.isMobileMe(this)){ + this.node.avatar.style.transform=transform; + this.node.avatar2.style.transform=transform; + } + else{ + this.style.transform=transform; + } + this.queue(false); + }, $phaseJudge:function(card){ game.addVideo('phaseJudge',this,get.cardInfo(card)); var player=this; @@ -10744,6 +10755,19 @@ number2:function(a,b){ return get.number(b)-get.number(a); }, + capt:function(a,b){ + var aa=a,bb=b; + if(aa.indexOf('_')!=-1){ + aa=aa.slice(aa.indexOf('_')+1); + } + if(bb.indexOf('_')!=-1){ + bb=bb.slice(bb.indexOf('_')+1); + } + if(aa!=bb){ + return aa>bb?1:-1; + } + return a>b?1:-1; + } }, skill:{ global:[], @@ -10886,7 +10910,7 @@ if(lib.config.tao_enemy&&event.dying.side!=player.side&&lib.config.mode!='identity'&&lib.config.mode!='guozhan'){ event._result={bool:false} } - else if(player.isOnline()||player.hasSkillTag('save',true)||player.num('h','tao')||player.num('h','spell_zhiliaoshui')|| + else if(player.isOnline()||(_status.connectMode&&player==game.me)||player.hasSkillTag('save',true)||player.num('h','tao')||player.num('h','spell_zhiliaoshui')|| (player==event.dying&&(player.num('h','jiu')||player.num('h','hufu')||player.num('h','tianxianjiu')))){ player.chooseToUse({ filterCard:function(card,player){ @@ -11177,6 +11201,10 @@ ui.iptext.delete(); delete ui.iptext; } + if(ui.ipbutton){ + ui.ipbutton.delete(); + delete ui.ipbutton; + } var proceed=function(){ game.loadModeAsync(config.mode,function(mode){ for(var i in mode.ai){ @@ -11196,6 +11224,9 @@ if(mode.game){ game.getIdentityList=lib.init.eval(mode.game.getIdentityList); game.updateState=lib.init.eval(mode.game.updateState); + if(mode.element&&mode.element.player&&mode.element.player.$dieAfter){ + lib.element.player.$dieAfter=mode.element.player.$dieAfter; + } } _status.event={ finished:true, @@ -11228,6 +11259,10 @@ ui.iptext.delete(); delete ui.iptext; } + if(ui.ipbutton){ + ui.ipbutton.delete(); + delete ui.ipbutton; + } game.online=true; game.ip=ip; game.saveConfig('reconnect_info',[_status.ip,game.onlineID]); @@ -11254,6 +11289,9 @@ if(mode.game){ game.getIdentityList=lib.init.eval(mode.game.getIdentityList); game.updateState=lib.init.eval(mode.game.updateState); + if(mode.element&&mode.element.player&&mode.element.player.$dieAfter){ + lib.element.player.$dieAfter=mode.element.player.$dieAfter; + } } state=get.parsedResult(state); game.players=[]; @@ -11276,6 +11314,21 @@ player.identity=info.identity; player.identityShown=info.identityShown; player.setNickname(); + if(info.dead){ + player.classList.add('dead'); + if(lib.config.die_flip){ + player.$dieflip(); + } + if(lib.element.player.$dieAfter){ + lib.element.player.$dieAfter.call(player); + } + } + if(info.linked){ + player.classList.add('linked'); + } + if(info.turnedover){ + player.classList.add('turnedover'); + } if(i==game.onlineID){ game.me=player; @@ -11337,6 +11390,9 @@ break; } game.ws.close(); + if(_status.connectDenied){ + _status.connectDenied(); + } }, cancel:function(id){ if(_status.event.id==id&&_status.event.isMine()&&_status.paused&&_status.imchoosing){ @@ -21739,6 +21795,7 @@ avatar:function(){ if(!lib.config.change_skin) return; if(this.parentNode.classList.contains('unseen')) return; + if(!this.name) return; var avatar=this; var player=this.parentNode; if(!this._doubleClicking){ @@ -21776,6 +21833,7 @@ avatar2:function(){ if(!lib.config.change_skin) return; if(this.parentNode.classList.contains('unseen2')) return; + if(!this.name2) return; var avatar=this; var player=this.parentNode; if(!this._doubleClicking){ diff --git a/game/update.js b/game/update.js index 9259cc152..21ce13e5f 100644 --- a/game/update.js +++ b/game/update.js @@ -1,9 +1,8 @@ window.noname_update={ version:'1.8.2.5', changeLog:[ - '联机音效', - '投降按钮', - '出牌进度条', - '修复若干卡死问题', + '修复重连后的显示问题', + '改进重连效果', + '修复卡死问题', ] } diff --git a/mode/connect.js b/mode/connect.js index e920efd54..cc5d9e87a 100644 --- a/mode/connect.js +++ b/mode/connect.js @@ -1,22 +1,77 @@ 'use strict'; mode.connect={ start:function(){ - 'step 0' + var createNode=function(){ + if(event.created) return; + 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% - 200px)'; + node.style.top='calc(50% - 20px)'; + node.style.whiteSpace='nowrap'; + node.innerHTML=lib.config.last_ip||''; + node.contentEditable=true; + node.style.webkitUserSelect='text'; + node.style.textAlign='center'; + + var connect=function(e){ + clearTimeout(event.timeout); + e.preventDefault(); + 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; + } if(lib.config.reconnect_info){ var info=lib.config.reconnect_info; - game.saveConfig('reconnect_info'); game.onlineID=info[1]; var n=5; var connect=function(){ game.connect(info[0],function(success){ if(!success&&n--){ + createNode(); event.timeout=setTimeout(connect,1000); } }); }; event.timeout=setTimeout(connect,500); } - 'step 2' + else{ + createNode(); + } + _status.connectDenied=createNode; for(var i in lib.element.event){ event.parent[i]=lib.element.event[i]; } @@ -24,44 +79,5 @@ mode.connect={ add:{}, replace:{} }; - 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% - 200px)'; - node.style.top='calc(50% - 20px)'; - node.style.whiteSpace='nowrap'; - node.innerHTML=lib.config.last_ip||''; - node.contentEditable=true; - node.style.webkitUserSelect='text'; - node.style.textAlign='center'; - node.addEventListener('keydown',function(e){ - if(e.keyCode==13){ - clearTimeout(event.timeout); - e.preventDefault(); - game.saveConfig('last_ip',node.innerHTML); - game.connect(node.innerHTML); - } - }); - 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; - // game.connect('localhost'); } }; diff --git a/mode/identity.js b/mode/identity.js index ce4854ca8..dce3d7fc3 100755 --- a/mode/identity.js +++ b/mode/identity.js @@ -175,6 +175,7 @@ mode.identity={ } var map=[]; for(var i=0;i