Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa0dc1f946 | ||
|
|
8f860b21a8 | ||
|
|
2a5105a49e | ||
|
|
0fa9f85a8d | ||
|
|
202117a60e | ||
|
|
35c7935f9c | ||
|
|
d953d623a2 | ||
|
|
4ddccd7211 | ||
|
|
4a2d13c6d7 | ||
|
|
c92b4c1863 | ||
|
|
fb736c5a7a |
8
conf.lua
8
conf.lua
@@ -1,8 +1,8 @@
|
||||
VERSION={
|
||||
code=1500,
|
||||
short="V0.15.0",
|
||||
string="Alpha V0.15.0",
|
||||
name="超新星 Supernovas",
|
||||
code=1501,
|
||||
short="V0.15.1",
|
||||
string="Alpha V0.15.1",
|
||||
name="耀斑 Flare",
|
||||
}
|
||||
function love.conf(t)
|
||||
t.identity='Techmino'--Saving folder
|
||||
|
||||
4
main.lua
4
main.lua
@@ -82,10 +82,10 @@ SKIN= require"parts.skin"
|
||||
USERS= require"parts.users"
|
||||
NET= require"parts.net"
|
||||
VK= require"parts.virtualKey"
|
||||
PLY= require"parts.player"
|
||||
netPLY= require"parts.netPlayer"
|
||||
AIFUNC= require"parts.ai"
|
||||
AIBUILDER= require"parts.AITemplate"
|
||||
PLY= require"parts.player"
|
||||
netPLY= require"parts.netPlayer"
|
||||
MODES= require"parts.modes"
|
||||
|
||||
--Initialize field[1]
|
||||
|
||||
@@ -10,7 +10,7 @@ return{
|
||||
"official website homepage",
|
||||
"help",
|
||||
"Official website of Techmino!\nYou can modify your profile on it",
|
||||
"home.techmino.org",
|
||||
"http://home.techmino.org",
|
||||
},
|
||||
{"To New Players",
|
||||
"guide newbie noob",
|
||||
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
"official website homepage guanwang",
|
||||
"help",
|
||||
"Techmino的官网!\n可以在上面修改头像和个人信息",
|
||||
"home.techmino.org",
|
||||
"http://home.techmino.org",
|
||||
},
|
||||
{"Tetris Wiki",
|
||||
"tetris wiki",
|
||||
|
||||
@@ -64,10 +64,8 @@ return{
|
||||
local AItype=ENV.opponent:sub(1,2)
|
||||
local AIlevel=tonumber(ENV.opponent:sub(-1))
|
||||
if AItype=='9S'then
|
||||
ENV.target=nil
|
||||
PLY.newAIPlayer(2,AIBUILDER('9S',2*AIlevel))
|
||||
elseif AItype=='CC'then
|
||||
ENV.target=nil
|
||||
PLY.newAIPlayer(2,AIBUILDER('CC',2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
|
||||
end
|
||||
|
||||
@@ -77,12 +75,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
if P.modeData.target>1e10 then
|
||||
mStr(P.stat.row,69,225)
|
||||
mText(drawableText.line,69,290)
|
||||
else
|
||||
local R=P.modeData.target-P.stat.row
|
||||
mStr(R>=0 and R or 0,69,240)
|
||||
end
|
||||
mStr(P.stat.row,69,225)
|
||||
mText(drawableText.line,69,290)
|
||||
end,
|
||||
}
|
||||
@@ -6,6 +6,7 @@ return{
|
||||
freshLimit=15,
|
||||
pushSpeed=5,
|
||||
garbageSpeed=2,
|
||||
initSkip=true,
|
||||
allowMod=false,
|
||||
task=function(P)
|
||||
local S=P.stat
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='sugar fairy',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='rockblock',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='magicblock',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='sugar fairy',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='rockblock',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -23,6 +23,7 @@ return{
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
initSkip=true,
|
||||
bg='rainbow',bgm='magicblock',
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local gc=love.graphics
|
||||
local gc_push,gc_pop,gc_clear,gc_origin=gc.push,gc.pop,gc.clear,gc.origin
|
||||
local gc_translate,gc_scale,gc_rotate=gc.translate,gc.scale,gc.rotate
|
||||
local gc_translate,gc_scale,gc_rotate,gc_shear=gc.translate,gc.scale,gc.rotate,gc.shear
|
||||
local gc_setCanvas,gc_setShader=gc.setCanvas,gc.setShader
|
||||
local gc_draw,gc_line,gc_rectangle=gc.draw,gc.line,gc.rectangle
|
||||
local gc_print,gc_printf=gc.print,gc.printf
|
||||
@@ -293,9 +293,15 @@ local function drawBuffer(P)
|
||||
gc_push('transform')
|
||||
gc_translate(300,max(0,600-30*sum))
|
||||
gc_scale(min(.2+sum/50,1))
|
||||
setFont(100)
|
||||
gc_setColor(1,.2+min(sum*.02,.8)*(.5+.5*sin(TIME()*min(sum,32))),.2,min(sum/30,.8))
|
||||
gc_printf(int(P.atkBufferSum1),-300,-20,292,'right')
|
||||
setFont(100)
|
||||
if sum>20 then
|
||||
local d=P.atkBufferSum-sum
|
||||
if d>.5 then
|
||||
gc_translate(d^.5*(rnd()-.5)*15,d^.5*(rnd()-.5)*15)
|
||||
end
|
||||
end
|
||||
gc_printf(int(sum),-300,-20,292,'right')
|
||||
gc_pop()
|
||||
end
|
||||
end
|
||||
@@ -439,13 +445,25 @@ local function drawMission(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
local function drawStartCounter(count)
|
||||
gc_setColor(1,1,1)
|
||||
local function drawStartCounter(P)
|
||||
local count=179-P.frameRun
|
||||
gc_push('transform')
|
||||
gc_translate(305,220)
|
||||
if count%60>45 then gc_scale(1+(count%60-45)^2*.01,1)end
|
||||
setFont(95)
|
||||
mStr(int(count/60+1),0,0)
|
||||
gc_translate(300,300)
|
||||
local num=int(count/60+1)
|
||||
local d=count%60-45
|
||||
if num==3 then
|
||||
gc_setColor(.7,.9,1)
|
||||
if d>0 then gc_scale(1+d^2*.01,1)end
|
||||
elseif num==2 then
|
||||
gc_setColor(1,.95,.7)
|
||||
if d>0 then gc_shear(-(d/15)^2,0)end
|
||||
elseif num==1 then
|
||||
gc_setColor(1,.8,.8)
|
||||
if d>0 then gc_rotate(d^2*.00355)end
|
||||
end
|
||||
setFont(100)
|
||||
mStr(num,0,-70)
|
||||
--P.gameEnv.initSkip
|
||||
gc_pop()
|
||||
end
|
||||
|
||||
@@ -670,10 +688,16 @@ function draw.norm(P)
|
||||
end
|
||||
|
||||
--Spike
|
||||
if ENV.showSpike and P.spikeTime>0 and P.spike>=10 then
|
||||
local gb=10/P.spike
|
||||
gc_setColor(1,gb,gb,min(P.spikeTime/30,.8))
|
||||
mDraw(P.spikeText,150,100,nil,min(.3+(P.spike/26)*.4+P.spikeTime/100*.3,1))
|
||||
local sp,spt=P.spike,P.spikeTime
|
||||
if ENV.showSpike and spt>0 and sp>=10 then
|
||||
local rg=10/sp
|
||||
gc_setColor(rg,rg,1,min(spt/30,.8))
|
||||
local x,y=150,100
|
||||
if spt>85 then
|
||||
local d=2*(spt-85)*min(sp/50,1)
|
||||
x,y=x+(rnd()-.5)*d,y+(rnd()-.5)*d
|
||||
end
|
||||
mDraw(P.spikeText,x,y,nil,min(.3+(sp/26)*.4+spt/100*.3,1))
|
||||
end
|
||||
|
||||
--Bonus texts
|
||||
@@ -716,7 +740,7 @@ function draw.norm(P)
|
||||
|
||||
if P.life>0 then drawLife(P.life)end
|
||||
drawMission(P)
|
||||
if P.frameRun<180 then drawStartCounter(179-P.frameRun)end
|
||||
if P.frameRun<180 then drawStartCounter(P)end
|
||||
gc_pop()
|
||||
end
|
||||
function draw.small(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local gc,tc=love.graphics,love.touch
|
||||
local gc,kb,tc=love.graphics,love.keyboard,love.touch
|
||||
|
||||
local gc_setColor,gc_print=gc.setColor,gc.print
|
||||
local setFont,mStr=setFont,mStr
|
||||
@@ -144,15 +144,10 @@ function scene.keyDown(key)
|
||||
else
|
||||
if key=="space"then
|
||||
if netPLY.getSelfJoinMode()==0 then
|
||||
_setReady()
|
||||
(kb.isDown("lctrl","rctrl","lalt","ralt")and _setSpectate or _setReady)()
|
||||
else
|
||||
_setCancel()
|
||||
end
|
||||
elseif key=="p"then
|
||||
if netPLY.getSelfJoinMode()==0 then
|
||||
_setSpectate()
|
||||
end
|
||||
elseif key=="s"then
|
||||
_gotoSetting()
|
||||
end
|
||||
end
|
||||
@@ -351,7 +346,7 @@ scene.widgetList={
|
||||
textBox,
|
||||
inputBox,
|
||||
WIDGET.newKey{name="setting",fText=TEXTURE.setting,x=1200,y=160,w=90,h=90,code=_gotoSetting,hideF=function()return playing or netPLY.getSelfReady()or NET.getlock('ready')end},
|
||||
WIDGET.newKey{name="ready",x=950,y=630,w=190,h=80,color='lG',font=35,code=_setReady,
|
||||
WIDGET.newKey{name="ready",x=1060,y=510,w=370,h=90,color='lG',font=35,code=_setReady,
|
||||
hideF=function()
|
||||
return
|
||||
playing or
|
||||
@@ -359,7 +354,7 @@ scene.widgetList={
|
||||
netPLY.getSelfReady() or
|
||||
NET.getlock('ready')
|
||||
end},
|
||||
WIDGET.newKey{name="spectate",x=1150,y=630,w=190,h=80,color='lO',font=35,code=_setSpectate,
|
||||
WIDGET.newKey{name="spectate",x=1060,y=610,w=370,h=90,color='lO',font=35,code=_setSpectate,
|
||||
hideF=function()
|
||||
return
|
||||
playing or
|
||||
@@ -367,7 +362,7 @@ scene.widgetList={
|
||||
netPLY.getSelfReady() or
|
||||
NET.getlock('ready')
|
||||
end},
|
||||
WIDGET.newKey{name="cancel",x=1050,y=630,w=390,h=80,color='lH',font=40,code=_setCancel,
|
||||
WIDGET.newKey{name="cancel",x=1060,y=560,w=370,h=120,color='lH',font=40,code=_setCancel,
|
||||
hideF=function()
|
||||
return
|
||||
playing or
|
||||
|
||||
@@ -24,6 +24,19 @@ return STRING.split([=[
|
||||
等级系统; 收集向抽奖玩法; 教学关
|
||||
录像回放菜单; 跳帧开关; 多方块; 超60帧; 热更新
|
||||
|
||||
0.15.1: 耀斑 Flare
|
||||
新增:
|
||||
允许开局跳过若干next时,倒计时数字颜色会略有不同
|
||||
改动:
|
||||
微调联网房间内准备前ui,修改键盘准备/观战快捷键
|
||||
混战模式和联网对战允许开局跳块
|
||||
优化爆发累计和缓冲预警的画面效果
|
||||
优化开局倒计时画面效果
|
||||
修复自定义-消除模式左侧信息显示问题
|
||||
修复:
|
||||
一处cc库相关的报错
|
||||
[服务器]观战玩家会影响游戏结束判定
|
||||
|
||||
0.15.0: 超新星 Supernova
|
||||
新增:
|
||||
[双端]观战功能
|
||||
|
||||
Reference in New Issue
Block a user