From 8185e36839b9a9eeb6bfc63b419caaf5eab570ab Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Sat, 5 Jun 2021 14:31:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=94=E7=BD=91=E7=8E=A9=E5=AE=B6=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8D=87=E7=BA=A7=EF=BC=8C=E9=A1=BA=E5=BA=8F=E5=B0=86?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E6=B8=B8=E6=88=8F=E6=8E=92=E5=90=8D=E5=8F=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/modes/netBattle.lua | 19 +++++--- parts/net.lua | 1 + parts/netPlayer.lua | 94 +++++++++++++++++++++------------------ parts/scenes/net_game.lua | 17 ++----- 4 files changed, 70 insertions(+), 61 deletions(-) diff --git a/parts/modes/netBattle.lua b/parts/modes/netBattle.lua index 81e32b87..c695e0d8 100644 --- a/parts/modes/netBattle.lua +++ b/parts/modes/netBattle.lua @@ -17,11 +17,20 @@ return{ bgm={'battle','cruelty','distortion','far','final','hope','magicblock','new era','push','race','rockblock','secret7th','secret8th','shining terminal','storm','super7th','warped','waterfall','moonbeam'}, }, load=function() - PLY.newPlayer(1) - PLAYERS[1].sid=netPLY.getSID(USER.uid) - local N=2 - for i=2,netPLY.getCount()do - local p=netPLY.rawgetPLY(i) + local L=TABLE.copy(netPLY.list) + local N=1 + for i,p in next,L do + if p.uid==USER.uid then + if p.connected then + PLY.newPlayer(1) + PLAYERS[1].sid=netPLY.getSID(USER.uid) + N=2 + end + table.remove(L,i) + break + end + end + for _,p in next,L do if p.connected then PLY.newRemotePlayer(N,false,p) N=N+1 diff --git a/parts/net.lua b/parts/net.lua index 41bcd1d4..b8049778 100644 --- a/parts/net.lua +++ b/parts/net.lua @@ -494,6 +494,7 @@ function NET.updateWS_play() NET.spectate=false if NET.spectate then NET.signal_setMode(2) end if SCN.socketRead then SCN.socketRead('finish',d)end + netPLY.freshPos() NET.wsclose_stream() end else diff --git a/parts/netPlayer.lua b/parts/netPlayer.lua index 782b0e7a..007fcc74 100644 --- a/parts/netPlayer.lua +++ b/parts/netPlayer.lua @@ -5,7 +5,7 @@ local gc_stencil,gc_setStencilTest=gc.stencil,gc.setStencilTest local rnd,min=math.random,math.min local sin,cos=math.sin,math.cos -local ins,rem=table.insert,table.remove +local ins=table.insert local setFont=setFont local posLists={ @@ -63,64 +63,66 @@ local posLists={ end)(), } local posList +local function _placeSort(a,b)return a.place0 end +function netPLY.getCount()return #PLYlist end +function netPLY.getSID(uid)return PLYmap[uid].sid end +function netPLY.getStat(uid)return PLYmap[uid].stat end +function netPLY.getSelfJoinMode()return PLYmap[USER.uid].mode end +function netPLY.getSelfReady()return PLYmap[USER.uid].mode>0 end function netPLY.setPlayerObj(ply,p)ply.p=p end -function netPLY.setConf(uid,config)getPLY(uid).config=config end +function netPLY.setConf(uid,config)PLYmap[uid].config=config end function netPLY.setJoinMode(uid,ready) - for i,p in next,PLY do + for _,p in next,PLYlist do if p.uid==uid then if p.mode~=ready then p.mode=ready if ready==0 then NET.allReady=false end SFX.play('spin_0',.6) - if i==1 then + if p.uid==USER.uid then NET.unlock('ready') - elseif PLY[1].mode==0 then - for j=2,#PLY do - if PLY[j].mode==0 then + elseif PLYmap[USER.uid].mode==0 then + for j=1,#PLYlist do + if not p.uid==USER.uid and PLYlist[j].mode==0 then return end end @@ -131,20 +133,26 @@ function netPLY.setJoinMode(uid,ready) end end end -function netPLY.setConnect(uid)getPLY(uid).connected=true end -function netPLY.setStat(uid)getPLY(uid).connected=true end +function netPLY.setConnect(uid)PLYmap[uid].connected=true end +function netPLY.setPlace(uid,place)PLYmap[uid].place=place end +function netPLY.setStat(uid,S) + local p=PLYmap[uid] + p.stat.lpm=("%.1f %s"):format(S.row/S.time*60,text.radarData[5]) + p.stat.apm=("%.1f %s"):format(S.atk/S.time*60,text.radarData[3]) + p.stat.adpm=("%.1f %s"):format((S.atk+S.dig)/S.time*60,text.radarData[2]) +end function netPLY.resetState() - for i=1,#PLY do - PLY[i].mode=0 - PLY[i].connected=false + for i=1,#PLYlist do + PLYlist[i].mode=0 + PLYlist[i].connected=false end end local selP,mouseX,mouseY function netPLY.mouseMove(x,y) selP=nil - for i=1,#PLY do - local p=PLY[i] + for i=1,#PLYlist do + local p=PLYlist[i] if x>p.x and y>p.y and x