整理代码,网战和普通游戏复用几个函数

This commit is contained in:
MrZ626
2021-02-11 01:25:20 +08:00
parent 950a6b42c2
commit e6cea306c1
4 changed files with 70 additions and 113 deletions

View File

@@ -132,10 +132,10 @@ local swap={
}--Scene swapping animations
function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
if scenes[tar]then
local S=SCN.stat
if not SCN.swapping and tar~=SCN.cur then
if not style then style="fade"end
SCN.swapping=true
local S=SCN.stat
S.tar,S.style=tar,style
S.time,S.mid,S.draw=unpack(swap[style])
end

View File

@@ -5,7 +5,7 @@ local fs=love.filesystem
local gc=love.graphics
local gc_setColor,gc_circle=gc.setColor,gc.circle
local int,rnd=math.floor,math.random
local max,int,rnd=math.max,math.floor,math.random
local sub=string.sub
local char,byte=string.char,string.byte
local ins,rem=table.insert,table.remove
@@ -772,6 +772,58 @@ function gameStart()--Call when countdown finish (GAME.frame==180)
P:popNext()
end
end
function checkStart()
if GAME.frame<=180 then
if GAME.frame==180 then
gameStart()
elseif GAME.frame==60 or GAME.frame==120 then
SFX.play("ready")
end
for p=1,#PLAYERS do
local P=PLAYERS[p]
if P.movDir~=0 then
if P.moving<P.gameEnv.das then
P.moving=P.moving+1
end
else
P.moving=0
end
end
return true
end
end
function checkWarning()
local P1=PLAYERS[1]
if P1.alive then
if GAME.frame%26==0 and SETTING.warn then
local F=P1.field
local height=0--Max height of row 4~7
for x=4,7 do
for y=#F,1,-1 do
if F[y][x]>0 then
if y>height then
height=y
end
break
end
end
end
GAME.warnLVL0=math.log(height-15+P1.atkBuffer.sum*.8)
end
_=GAME.warnLVL
if _<GAME.warnLVL0 then
_=_*.95+GAME.warnLVL0*.05
elseif _>0 then
_=max(_-.026,0)
end
GAME.warnLVL=_
elseif GAME.warnLVL>0 then
GAME.warnLVL=max(GAME.warnLVL-.026,0)
end
if GAME.warnLVL>1.126 and GAME.frame%30==0 then
SFX.fplay("warning",SETTING.sfx_warn)
end
end
--[[
Table data format:
@@ -1033,10 +1085,11 @@ function TICK_wsRead()
return
end
elseif readErr then
wsWrite("/quit")
WSCONN=false
LOG.print(text.wsError..tostring(readErr),"warn")
SCN.back()
while #SCN.stack>4 do
SCN.pop()
end
return
end
end

View File

@@ -4,7 +4,7 @@ local tc=love.touch
local playerData
local ins,rem=table.insert,table.remove
local max,sin=math.max,math.sin
local sin=math.sin
local SCR=SCR
local VK=virtualkey
@@ -261,14 +261,8 @@ end
function scene.update(dt)
local _
local P1=PLAYERS[1]
local GAME=GAME
touchMoveLastFrame=false
--Update virtualkey animation
updateVirtualkey()
if not playing then
heartBeatTimer=heartBeatTimer+dt
if heartBeatTimer>42 then
@@ -278,9 +272,11 @@ function scene.update(dt)
return
end
GAME.frame=GAME.frame+1
touchMoveLastFrame=false
updateVirtualkey()
if GAME.frame-lastUpstreamTime>10 then
GAME.frame=GAME.frame+1
if GAME.frame-lastUpstreamTime>8 then
local stream
stream,upstreamProgress=dumpRecording(GAME.rep,upstreamProgress)
if #stream>0 then
@@ -289,25 +285,8 @@ function scene.update(dt)
lastUpstreamTime=PLAYERS[1].alive and GAME.frame or 1e99
end
--Counting,include pre-das,directy RETURN,or restart counting
if GAME.frame<180 then
if GAME.frame==179 then
gameStart()
elseif GAME.frame==60 or GAME.frame==120 then
SFX.play("ready")
end
for p=1,#PLAYERS do
local P=PLAYERS[p]
if P.movDir~=0 then
if P.moving<P.gameEnv.das then
P.moving=P.moving+1
end
else
P.moving=0
end
end
return
end
--Counting, include pre-das
if checkStart()then return end
--Update players
for p=1,#PLAYERS do
@@ -315,35 +294,7 @@ function scene.update(dt)
end
--Warning check
if P1.alive then
if GAME.frame%26==0 and SETTING.warn then
local F=P1.field
local height=0--Max height of row 4~7
for x=4,7 do
for y=#F,1,-1 do
if F[y][x]>0 then
if y>height then
height=y
end
break
end
end
end
GAME.warnLVL0=math.log(height-15+P1.atkBuffer.sum*.8)
end
_=GAME.warnLVL
if _<GAME.warnLVL0 then
_=_*.95+GAME.warnLVL0*.05
elseif _>0 then
_=max(_-.026,0)
end
GAME.warnLVL=_
elseif GAME.warnLVL>0 then
GAME.warnLVL=max(GAME.warnLVL-.026,0)
end
if GAME.warnLVL>1.126 and GAME.frame%30==0 then
SFX.fplay("warning",SETTING.sfx_warn)
end
checkWarning()
end
function scene.draw()

View File

@@ -2,7 +2,7 @@ local gc=love.graphics
local gc_setColor=gc.setColor
local tc=love.touch
local max,sin=math.max,math.sin
local sin=math.sin
local SCR=SCR
local VK=virtualkey
@@ -127,12 +127,10 @@ function scene.update(dt)
local _
local P1=PLAYERS[1]
local GAME=GAME
GAME.frame=GAME.frame+1
touchMoveLastFrame=false
--Update virtualkey animation
updateVirtualkey()
GAME.frame=GAME.frame+1
--Replay
if GAME.replaying then
@@ -153,25 +151,8 @@ function scene.update(dt)
GAME.replaying=_
end
--Counting,include pre-das,directy RETURN,or restart counting
if GAME.frame<=180 then
if GAME.frame==180 then
gameStart()
elseif GAME.frame==60 or GAME.frame==120 then
SFX.play("ready")
end
for p=1,#PLAYERS do
local P=PLAYERS[p]
if P.movDir~=0 then
if P.moving<P.gameEnv.das then
P.moving=P.moving+1
end
else
P.moving=0
end
end
return
end
--Counting, include pre-das
if checkStart()then return end
--Update players
for p=1,#PLAYERS do
@@ -184,35 +165,7 @@ function scene.update(dt)
end
--Warning check
if P1.alive then
if GAME.frame%26==0 and SETTING.warn then
local F=P1.field
local height=0--Max height of row 4~7
for x=4,7 do
for y=#F,1,-1 do
if F[y][x]>0 then
if y>height then
height=y
end
break
end
end
end
GAME.warnLVL0=math.log(height-15+P1.atkBuffer.sum*.8)
end
_=GAME.warnLVL
if _<GAME.warnLVL0 then
_=_*.95+GAME.warnLVL0*.05
elseif _>0 then
_=max(_-.026,0)
end
GAME.warnLVL=_
elseif GAME.warnLVL>0 then
GAME.warnLVL=max(GAME.warnLVL-.026,0)
end
if GAME.warnLVL>1.126 and GAME.frame%30==0 then
SFX.fplay("warning",SETTING.sfx_warn)
end
checkWarning()
end
local function drawAtkPointer(x,y)