场地晃动加入旋转分量
This commit is contained in:
@@ -50,19 +50,22 @@ return{
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
|
||||||
setFont(55)
|
setFont(55)
|
||||||
mStr(P.stat.row,69,225)
|
mStr(P.stat.row,69,225)
|
||||||
mText(drawableText.line,69,290)
|
mText(drawableText.line,69,290)
|
||||||
|
gc.push("transform")
|
||||||
|
PLY.draw.applyFieldxOy(P)
|
||||||
|
PLY.draw.applyFieldOffset(P)
|
||||||
if P.modeData.showMark==0 then
|
if P.modeData.showMark==0 then
|
||||||
local mark=TEXTURE.puzzleMark
|
local mark=TEXTURE.puzzleMark
|
||||||
local F=FIELD[P.modeData.finished+1]
|
local F=FIELD[P.modeData.finished+1]
|
||||||
for y=1,20 do for x=1,10 do
|
for y=1,20 do for x=1,10 do
|
||||||
local T=F[y][x]
|
local T=F[y][x]
|
||||||
if T~=0 then
|
if T~=0 then
|
||||||
gc.draw(mark[T],150+30*x-30+dx,600-30*y+dy)
|
gc.draw(mark[T],150+30*x-30,600-30*y)
|
||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
end
|
end
|
||||||
|
gc.pop()
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local gc_push,gc_pop,gc_clear,gc_origin=gc.push,gc.pop,gc.clear,gc.origin
|
local gc_push,gc_pop,gc_clear,gc_origin=gc.push,gc.pop,gc.clear,gc.origin
|
||||||
local gc_translate,gc_scale=gc.translate,gc.scale
|
local gc_translate,gc_scale,gc_rotate=gc.translate,gc.scale,gc.rotate
|
||||||
local gc_setCanvas,gc_setShader=gc.setCanvas,gc.setShader
|
local gc_setCanvas,gc_setShader=gc.setCanvas,gc.setShader
|
||||||
local gc_draw,gc_line,gc_rectangle,gc_circle=gc.draw,gc.line,gc.rectangle,gc.circle
|
local gc_draw,gc_line,gc_rectangle,gc_circle=gc.draw,gc.line,gc.rectangle,gc.circle
|
||||||
local gc_print,gc_printf=gc.print,gc.printf
|
local gc_print,gc_printf=gc.print,gc.printf
|
||||||
@@ -520,12 +520,25 @@ function draw.drawNext_hidden(P)
|
|||||||
gc_pop()
|
gc_pop()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function draw.applyFieldxOy()
|
||||||
|
gc_translate(150,0)
|
||||||
|
end
|
||||||
|
function draw.applyFieldOffset(P)
|
||||||
|
local O=P.fieldOff
|
||||||
|
gc_translate(O.x,O.y)
|
||||||
|
gc_translate(150,300)
|
||||||
|
gc_rotate(O.a)
|
||||||
|
gc_translate(-150,-300)
|
||||||
|
end
|
||||||
function draw.drawTargetLine(P,r)
|
function draw.drawTargetLine(P,r)
|
||||||
if r<21+(P.fieldBeneath+P.fieldUp)/30 and r>0 then
|
if r<21+(P.fieldBeneath+P.fieldUp)/30 and r>0 then
|
||||||
gc_setLineWidth(4)
|
gc_setLineWidth(4)
|
||||||
gc_setColor(1,r>10 and 0 or rnd(),.5)
|
gc_setColor(1,r>10 and 0 or rnd(),.5)
|
||||||
local dx,dy=150+P.fieldOff.x,P.fieldOff.y+P.fieldBeneath+P.fieldUp
|
gc_push("transform")
|
||||||
gc_line(dx,600-30*r+dy,300+dx,600-30*r+dy)
|
draw.applyFieldxOy(P)
|
||||||
|
draw.applyFieldOffset(P)
|
||||||
|
gc_line(0,600-30*r,300,600-30*r)
|
||||||
|
gc_pop()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -538,11 +551,11 @@ function draw.norm(P)
|
|||||||
|
|
||||||
--Field-related things
|
--Field-related things
|
||||||
gc_push("transform")
|
gc_push("transform")
|
||||||
gc_translate(150,0)
|
draw.applyFieldxOy(P)
|
||||||
|
|
||||||
--Things shake with field
|
--Things shake with field
|
||||||
gc_push("transform")
|
gc_push("transform")
|
||||||
gc_translate(P.fieldOff.x,P.fieldOff.y)
|
draw.applyFieldOffset(P)
|
||||||
|
|
||||||
--Fill field
|
--Fill field
|
||||||
gc_setColor(0,0,0,.6)
|
gc_setColor(0,0,0,.6)
|
||||||
@@ -698,7 +711,7 @@ function draw.norm_remote(P)
|
|||||||
|
|
||||||
--Field-related things
|
--Field-related things
|
||||||
gc_push("transform")
|
gc_push("transform")
|
||||||
gc_translate(150,0)
|
draw.applyFieldxOy(P)
|
||||||
|
|
||||||
--Draw username
|
--Draw username
|
||||||
setFont(30)
|
setFont(30)
|
||||||
@@ -707,7 +720,7 @@ function draw.norm_remote(P)
|
|||||||
|
|
||||||
--Things shake with field
|
--Things shake with field
|
||||||
gc_push("transform")
|
gc_push("transform")
|
||||||
gc_translate(P.fieldOff.x,P.fieldOff.y)
|
draw.applyFieldOffset(P)
|
||||||
|
|
||||||
--Fill field
|
--Fill field
|
||||||
gc_setColor(0,0,0,.6)
|
gc_setColor(0,0,0,.6)
|
||||||
@@ -900,7 +913,7 @@ function draw.demo(P)
|
|||||||
gc_translate(P.x,P.y)
|
gc_translate(P.x,P.y)
|
||||||
gc_scale(P.size)
|
gc_scale(P.size)
|
||||||
gc_push("transform")
|
gc_push("transform")
|
||||||
gc_translate(P.fieldOff.x,P.fieldOff.y)
|
draw.applyFieldOffset(P)
|
||||||
|
|
||||||
--Frame
|
--Frame
|
||||||
gc_setColor(0,0,0,.6)
|
gc_setColor(0,0,0,.6)
|
||||||
|
|||||||
@@ -89,7 +89,11 @@ local function newEmptyPlayer(id,mini)
|
|||||||
end
|
end
|
||||||
P.update=PLY.update.alive
|
P.update=PLY.update.alive
|
||||||
|
|
||||||
P.fieldOff={x=0,y=0,vx=0,vy=0}--For shake FX
|
P.fieldOff={--Shake FX
|
||||||
|
x=0,y=0,
|
||||||
|
vx=0,vy=0,
|
||||||
|
a=0,va=0,
|
||||||
|
}
|
||||||
P.x,P.y,P.size=0,0,1
|
P.x,P.y,P.size=0,0,1
|
||||||
P.frameColor=0
|
P.frameColor=0
|
||||||
|
|
||||||
|
|||||||
@@ -462,6 +462,7 @@ function Player.freshBlock(P,mode)--string mode: push/move/fresh/newBlock
|
|||||||
end
|
end
|
||||||
if ENV.shakeFX then
|
if ENV.shakeFX then
|
||||||
P.fieldOff.vy=ENV.shakeFX*.5
|
P.fieldOff.vy=ENV.shakeFX*.5
|
||||||
|
P.fieldOff.va=P:getCenterX()*P.gameEnv.shakeFX*5e-4
|
||||||
end
|
end
|
||||||
P.curY=P.ghoY
|
P.curY=P.ghoY
|
||||||
end
|
end
|
||||||
@@ -1903,6 +1904,7 @@ function Player.act_hardDrop(P)
|
|||||||
P.spinLast=false
|
P.spinLast=false
|
||||||
if P.gameEnv.shakeFX then
|
if P.gameEnv.shakeFX then
|
||||||
P.fieldOff.vy=P.gameEnv.shakeFX*.6
|
P.fieldOff.vy=P.gameEnv.shakeFX*.6
|
||||||
|
P.fieldOff.va=P:getCenterX()*P.gameEnv.shakeFX*6e-4
|
||||||
end
|
end
|
||||||
if P.sound then
|
if P.sound then
|
||||||
SFX.play("drop",nil,P:getCenterX()*.15)
|
SFX.play("drop",nil,P:getCenterX()*.15)
|
||||||
@@ -2010,6 +2012,7 @@ function Player.act_insDown(P)
|
|||||||
end
|
end
|
||||||
if ENV.shakeFX then
|
if ENV.shakeFX then
|
||||||
P.fieldOff.vy=ENV.shakeFX*.5
|
P.fieldOff.vy=ENV.shakeFX*.5
|
||||||
|
P.fieldOff.va=P:getCenterX()*P.gameEnv.shakeFX*5e-4
|
||||||
end
|
end
|
||||||
P.curY=P.ghoY
|
P.curY=P.ghoY
|
||||||
P.lockDelay=ENV.lock
|
P.lockDelay=ENV.lock
|
||||||
|
|||||||
@@ -85,10 +85,17 @@ local function updateFXs(P,dt)
|
|||||||
--Field shaking
|
--Field shaking
|
||||||
if P.gameEnv.shakeFX then
|
if P.gameEnv.shakeFX then
|
||||||
local O=P.fieldOff
|
local O=P.fieldOff
|
||||||
O.vx,O.vy=O.vx*.8-abs(O.x)^1.2*(O.x>0 and .1 or -.1),O.vy*.8-abs(O.y)^1.2*(O.y>0 and .1 or -.1)
|
O.vx=O.vx*.8-abs(O.x)^1.2*(O.x>0 and .1 or -.1)
|
||||||
O.x,O.y=O.x+O.vx,O.y+O.vy
|
O.x=O.x+O.vx
|
||||||
if abs(O.x)<.3 then O.x=0 end
|
if abs(O.x)<.3 then O.x,O.vx=0,0 end
|
||||||
if abs(O.y)<.3 then O.y=0 end
|
|
||||||
|
O.vy=O.vy*.8-abs(O.y)^1.2*(O.y>0 and .1 or -.1)
|
||||||
|
O.y=O.y+O.vy
|
||||||
|
if abs(O.y)<.3 then O.y,O.vy=0,0 end
|
||||||
|
|
||||||
|
O.va=O.va*.8-abs(O.a)^1.2*(O.a>0 and .1 or -.1)
|
||||||
|
O.a=O.a+O.va
|
||||||
|
-- if abs(O.a)<.3 then O.a,O.va=0,0 end
|
||||||
end
|
end
|
||||||
|
|
||||||
if P.bonus then
|
if P.bonus then
|
||||||
@@ -247,7 +254,8 @@ function update.alive(P,dt)
|
|||||||
P:act_insDown()
|
P:act_insDown()
|
||||||
end
|
end
|
||||||
if ENV.shakeFX then
|
if ENV.shakeFX then
|
||||||
P.fieldOff.vy=ENV.shakeFX*.3
|
P.fieldOff.vy=ENV.shakeFX*.2
|
||||||
|
P.fieldOff.va=P:getCenterX()*P.gameEnv.shakeFX*2e-4
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user