Compare commits
12 Commits
pre0.17.0-
...
pre0.17.0-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef12ab0cee | ||
|
|
3d26db7a01 | ||
|
|
dd3df9981b | ||
|
|
5d04e83529 | ||
|
|
7ed4626d71 | ||
|
|
ecf5a29a71 | ||
|
|
1a24b346a0 | ||
|
|
72d06c7a02 | ||
|
|
26fde8c694 | ||
|
|
8adeb99be7 | ||
|
|
c92f15156b | ||
|
|
63f69d712b |
@@ -339,8 +339,8 @@ function love.gamepadaxis(JS,axis,val)
|
||||
if js then
|
||||
if axis=='leftx'or axis=='lefty'or axis=='rightx'or axis=='righty'then
|
||||
local newVal=--range: [0,1]
|
||||
val>.5 and 1 or
|
||||
val<-.5 and -1 or
|
||||
val>.4 and 1 or
|
||||
val<-.4 and -1 or
|
||||
0
|
||||
if newVal~=js[axis]then
|
||||
if js[axis]==-1 then
|
||||
@@ -356,7 +356,7 @@ function love.gamepadaxis(JS,axis,val)
|
||||
js[axis]=newVal
|
||||
end
|
||||
elseif axis=='triggerleft'or axis=='triggerright'then
|
||||
local newVal=val>0 and 1 or 0--range: [-1,1]
|
||||
local newVal=val>-.3 and 1 or 0--range: [-1,1]
|
||||
if newVal~=js[axis]then
|
||||
if newVal==1 then
|
||||
love.gamepadpressed(JS,jsAxisEventName[axis])
|
||||
|
||||
@@ -140,8 +140,8 @@ do
|
||||
},--Z
|
||||
false,--S
|
||||
{
|
||||
[01]={'+0+0','-1+0','-1+1','+0-2','+1+1','+0+1'},
|
||||
[10]={'+0+0','+1+0','+1-1','+0+2','-1-1','+0-1'},
|
||||
[01]={'+0+0','-1+0','-1+1','+0-2','+1+1','+0+1','+0-1'},
|
||||
[10]={'+0+0','+1+0','+1-1','+0+2','-1-1','+0-1','+0+1'},
|
||||
[03]={'+0+0','+1+0','+1+1','+0-2','+1-2','+1-1','+0+1'},
|
||||
[30]={'+0+0','-1+0','-1-1','+0+2','-1+2','+0-1','-1+1'},
|
||||
[12]={'+0+0','+1+0','+1-1','+1+1','-1+0','+0-1','+0+2','+1+2'},
|
||||
|
||||
@@ -297,6 +297,15 @@ function legalGameTime()--Check if today's playtime is legal
|
||||
end
|
||||
return true
|
||||
end
|
||||
do--function trySettingWarn()
|
||||
local lastWarnTime=0
|
||||
function trySettingWarn()
|
||||
if TIME()-lastWarnTime>2.6 then
|
||||
MES.new('warn',text.settingWarn,5)
|
||||
end
|
||||
lastWarnTime=TIME()
|
||||
end
|
||||
end
|
||||
|
||||
function mergeStat(stat,delta)--Merge delta stat. to global stat.
|
||||
for k,v in next,delta do
|
||||
@@ -818,13 +827,17 @@ do--function pressKey(k)
|
||||
end
|
||||
do--CUS/SETXXX(k)
|
||||
local CUSTOMENV=CUSTOMENV
|
||||
local warnList={
|
||||
'ims','RS','FTLock','frameMul','highCam',
|
||||
'VKSwitch','VKIcon','VKTrack','VKDodge',
|
||||
}
|
||||
function CUSval(k)return function()return CUSTOMENV[k]end end
|
||||
function ROOMval(k)return function()return ROOMENV[k]end end
|
||||
function SETval(k)return function()return SETTING[k]end end
|
||||
function CUSrev(k)return function()CUSTOMENV[k]=not CUSTOMENV[k]end end
|
||||
function ROOMrev(k)return function()ROOMENV[k]=not ROOMENV[k]end end
|
||||
function SETrev(k)return function()SETTING[k]=not SETTING[k]end end
|
||||
function SETrev(k)return function()if TABLE.find(warnList,k)then trySettingWarn()end SETTING[k]=not SETTING[k]end end
|
||||
function CUSsto(k)return function(i)CUSTOMENV[k]=i end end
|
||||
function ROOMsto(k)return function(i)ROOMENV[k]=i end end
|
||||
function SETsto(k)return function(i)SETTING[k]=i end end
|
||||
function SETsto(k)return function(i)if TABLE.find(warnList,k)then trySettingWarn()end SETTING[k]=i end end
|
||||
end
|
||||
|
||||
@@ -15,6 +15,7 @@ return{
|
||||
newDay="A new day, a new beginning!",
|
||||
playedLong="You have been playing for a long time. Time to a break!",
|
||||
playedTooMuch="You have been playing for far too long! Techmino is fun, but remember to have some rests!",
|
||||
settingWarn="Modifing uncommon setting, be careful!",
|
||||
|
||||
atkModeName={"Random","Badges","K.O.s","Attackers"},
|
||||
royale_remain="$1 Players Remains",
|
||||
@@ -332,6 +333,7 @@ return{
|
||||
ctrl="Control Settings",
|
||||
key="Key Mappings",
|
||||
touch="Touch Settings",
|
||||
showVK="Show Virtual Keys",
|
||||
reTime="Start Delay",
|
||||
RS="Rotation System",
|
||||
menuPos="Menu Button Pos.",
|
||||
@@ -463,7 +465,6 @@ return{
|
||||
|
||||
norm="Normal",
|
||||
pro="Advanced",
|
||||
hide="Show Virtual Keys",
|
||||
icon="Icon",
|
||||
sfx="SFX",
|
||||
vib="VIB",
|
||||
@@ -501,6 +502,7 @@ return{
|
||||
|
||||
eventSet="Rule Set",
|
||||
|
||||
holdMode="Hold Mode",
|
||||
nextCount="Next",
|
||||
holdCount="Hold",
|
||||
infHold="Infinite Hold",
|
||||
|
||||
@@ -5,6 +5,7 @@ return{
|
||||
newDay="[Anti-adicción] ¡Nuevo día, nuevo comienzo!",
|
||||
playedLong="[Anti-adicción] Estuviste jugando un buen rato hoy. Recuerda descansar de vez en cuando.",
|
||||
playedTooMuch="[Anti-adicción] ¡Has jugado mucho por hoy! No puedes jugar más.",
|
||||
-- settingWarn="Modifing uncommon setting, be careful!",
|
||||
|
||||
atkModeName={"Al azar","Medallas","KOs","Atacantes"},
|
||||
royale_remain="$1 Jugadores Restantes",
|
||||
@@ -298,6 +299,7 @@ return{
|
||||
ctrl="Sensibilidad",
|
||||
key="Teclas",
|
||||
touch="Controles Táctiles",
|
||||
showVK="Mostrar Tec. Virtual",
|
||||
reTime="Retraso de Inicio",
|
||||
RS="Sistema de Rotación",
|
||||
menuPos="Pos. del Botón de Menú",
|
||||
@@ -428,7 +430,6 @@ return{
|
||||
|
||||
norm="Normal",
|
||||
pro="Profesional",
|
||||
hide="Mostrar Tec. Virtual",
|
||||
icon="Ícono",
|
||||
sfx="SFX",
|
||||
vib="Vibr.",
|
||||
|
||||
@@ -5,6 +5,7 @@ return{
|
||||
newDay="[Anti-addiction] Nouveau jour, nouveau commencement !",
|
||||
playedLong="[Anti-addiction] Vous avez joué pendant un bon bout de temps aujourd'hui. Faites des pauses.",
|
||||
playedTooMuch="[Anti-addiction] Vous avez joué trop longtemps ! Vous ne pouvez plus jouer.",
|
||||
-- settingWarn="Modifing uncommon setting, be careful!",
|
||||
|
||||
atkModeName={"Aléatoire","Badges","K.O.s faciles","Attaquants"},
|
||||
royale_remain="$1 Joueurs restants",
|
||||
@@ -295,6 +296,7 @@ return{
|
||||
ctrl="Paramètres de contrôle",
|
||||
key="Touches",
|
||||
touch="Boutons virtuels",
|
||||
showVK="Montrer les touches virtuelles",
|
||||
reTime="Délai de démarrage",
|
||||
RS="Système de rotation",
|
||||
-- menuPos="Menu button pos.",
|
||||
@@ -429,7 +431,6 @@ return{
|
||||
|
||||
norm="Normal",
|
||||
pro="Professionel",
|
||||
hide="Montrer les touches virtuelles",
|
||||
icon="Icône",
|
||||
sfx="Sons",
|
||||
vib="Vib.",
|
||||
|
||||
@@ -6,6 +6,7 @@ return{
|
||||
newDay="[Anti-vício] Novo dia, um começo novo!",
|
||||
playedLong="[Anti-vício] Você andou jogando bastante hoje. Certifique-se de fazer pausas.",
|
||||
playedTooMuch="[Anti-vício] Você esteve jogando demais hoje! Você não pode jogar mais.",
|
||||
-- settingWarn="Modifing uncommon setting, be careful!",
|
||||
|
||||
atkModeName={"Aleatório","Emblemas","K.O.s","Atacantes"},
|
||||
royale_remain="$1 Jogadores restantes",
|
||||
@@ -320,6 +321,7 @@ return{
|
||||
ctrl="Config. controle",
|
||||
key="Map. teclas",
|
||||
touch="Config. toque",
|
||||
showVK="Mostrar tecla virtual",
|
||||
reTime="Demora iniciação",
|
||||
RS="Sistema de rotação",
|
||||
-- menuPos="Menu button pos.",
|
||||
@@ -451,7 +453,6 @@ return{
|
||||
|
||||
norm="Normal",
|
||||
pro="Professional",
|
||||
hide="Mostrar tecla virtual",
|
||||
icon="Icone",
|
||||
sfx="SFX",
|
||||
vib="VIB",
|
||||
|
||||
@@ -227,6 +227,7 @@ return{
|
||||
ctrl="=?=",
|
||||
key="=?",
|
||||
touch="_?",
|
||||
showVK="--?",
|
||||
reTime="3-2-1",
|
||||
RS="''?",
|
||||
menuPos="←M→?",
|
||||
@@ -356,7 +357,6 @@ return{
|
||||
|
||||
norm="-",
|
||||
pro="+",
|
||||
hide="--?",
|
||||
icon="@?",
|
||||
sfx="#!#",
|
||||
vib="=~=",
|
||||
|
||||
@@ -11,6 +11,7 @@ return{fallback='zh',
|
||||
},
|
||||
playedLong="玩很久了, 给我注意点",
|
||||
playedTooMuch="特么再敢玩眼睛瞎掉, 爬!",
|
||||
settingWarn="别乱动,小心点",
|
||||
|
||||
royale_remain="剩 $1 人",
|
||||
cmb={nil,"1连","2连","3连","4连","5连","6连","7连","8连","9连","10连!","11连!","12连!","13连!","14连!","15连!","16连!","17连!","18连!","19连!","Very 连"},
|
||||
|
||||
@@ -15,6 +15,7 @@ return{
|
||||
newDay="新的一天,新的开始~",
|
||||
playedLong="已经玩很久了!注意休息!",
|
||||
playedTooMuch="今天玩太久啦!打块好玩但也要适可而止哦~",
|
||||
settingWarn="正在修改不常用设置,小心操作!",
|
||||
|
||||
atkModeName={"随机","徽章","击杀","反击"},
|
||||
royale_remain="剩余 $1 名玩家",
|
||||
@@ -332,6 +333,7 @@ return{
|
||||
ctrl="控制设置",
|
||||
key="键位设置",
|
||||
touch="触屏设置",
|
||||
showVK="显示虚拟按键",
|
||||
reTime="开局等待时间",
|
||||
RS="旋转系统",
|
||||
menuPos="菜单按钮位置",
|
||||
@@ -462,7 +464,6 @@ return{
|
||||
|
||||
norm="标准",
|
||||
pro="专业",
|
||||
hide="显示虚拟按键",
|
||||
icon="图标",
|
||||
sfx="按键音效",
|
||||
vib="按键振动",
|
||||
|
||||
@@ -15,6 +15,7 @@ return{
|
||||
newDay="新的一天,新的开始!",
|
||||
playedLong="你已经玩了很长时间了。一定要好好休息!",
|
||||
playedTooMuch="你玩得太久了!玩方块游戏很有趣,但现在是休息的时候了。",
|
||||
settingWarn="修改设置时,请小心!",
|
||||
|
||||
atkModeName={"随机的","徽章","击败","攻击者"},
|
||||
royale_remain="剩余$1球员",
|
||||
@@ -330,6 +331,7 @@ return{
|
||||
ctrl="控制设置",
|
||||
key="键映射",
|
||||
touch="触摸设置",
|
||||
showVK="显示虚拟密钥",
|
||||
reTime="启动延迟",
|
||||
RS="轮换制",
|
||||
menuPos="菜单按钮位置",
|
||||
@@ -460,7 +462,6 @@ return{
|
||||
|
||||
norm="正常",
|
||||
pro="专业的",
|
||||
hide="显示虚拟密钥",
|
||||
icon="偶像",
|
||||
sfx="特技效果",
|
||||
vib="振动",
|
||||
|
||||
@@ -15,6 +15,7 @@ return{
|
||||
newDay="新的一天,新的開始~",
|
||||
playedLong="你玩太久了!注意休息!",
|
||||
playedTooMuch="今天玩得太久啦!Techmino好玩但也要注意休息哦~",
|
||||
settingWarn="正在修改不常用設定,小心操作!",
|
||||
|
||||
atkModeName={"隨機","徽章","K.O.","反擊"},
|
||||
royale_remain="剩下 $1 名玩家",
|
||||
@@ -331,6 +332,7 @@ return{
|
||||
ctrl="控制設置",
|
||||
key="鍵位設置",
|
||||
touch="觸控設置",
|
||||
showVK="顯示虛擬擊鍵",
|
||||
reTime="開局等待時間",
|
||||
RS="旋轉系統",
|
||||
menuPos="菜單按鈕位置",
|
||||
@@ -461,7 +463,6 @@ return{
|
||||
|
||||
norm="標準",
|
||||
pro="專業",
|
||||
hide="顯示虛擬擊鍵",
|
||||
icon="圖標",
|
||||
sfx="擊鍵音效",
|
||||
vib="擊鍵振動",
|
||||
|
||||
@@ -78,7 +78,7 @@ return{
|
||||
{font=25,name="[*炎]"},
|
||||
{font=25,name="[*Y]"},
|
||||
{font=25,name="aaa222"},
|
||||
{font=25,name="[**城]"},
|
||||
{font=25,name="人偶"},
|
||||
{font=25,name="cnDD"},
|
||||
{font=25,name="红桃老给"},
|
||||
{font=25,name="昭庭玲秋"},
|
||||
@@ -126,4 +126,5 @@ return{
|
||||
{font=25,name="费尔特林"},
|
||||
{font=25,name="零醇丘卡"},
|
||||
{font=25,name="Hathtiz"},
|
||||
{font=25,name="江江江江17"},
|
||||
}
|
||||
|
||||
@@ -782,7 +782,7 @@ function draw.norm(P,repMode)
|
||||
_drawFXs(P)
|
||||
|
||||
--Draw current block
|
||||
if P.cur and P.waiting==0 then
|
||||
if P.cur then
|
||||
local C=P.cur
|
||||
local curColor=C.color
|
||||
|
||||
@@ -981,7 +981,6 @@ function draw.small(P)
|
||||
end
|
||||
function draw.demo(P)
|
||||
local ENV=P.gameEnv
|
||||
local curColor=P.cur.color
|
||||
|
||||
--Camera
|
||||
gc_push('transform')
|
||||
@@ -997,7 +996,8 @@ function draw.demo(P)
|
||||
gc_translate(0,600)
|
||||
_drawField(P)
|
||||
_drawFXs(P)
|
||||
if P.cur and P.waiting==0 then
|
||||
if P.cur then
|
||||
local curColor=P.cur.color
|
||||
if ENV.ghost then
|
||||
drawGhost[ENV.ghostType](P.cur.bk,P.curX,P.ghoY,ENV.ghost,P.skinLib,curColor)
|
||||
end
|
||||
|
||||
@@ -201,6 +201,20 @@ end
|
||||
--------------------------</FX>--------------------------
|
||||
|
||||
--------------------------<Action>--------------------------
|
||||
function Player:_deepDrop()
|
||||
local CB=self.cur.bk
|
||||
local y=self.curY-1
|
||||
while self:ifoverlap(CB,self.curX,y)and y>0 do
|
||||
y=y-1
|
||||
end
|
||||
if y>0 then
|
||||
self.ghoY=y
|
||||
self:createDropFX()
|
||||
self.curY=y
|
||||
self:freshBlock('move')
|
||||
SFX.play('swipe')
|
||||
end
|
||||
end
|
||||
function Player:act_moveLeft(auto)
|
||||
if not auto then
|
||||
self.ctrlCount=self.ctrlCount+1
|
||||
@@ -290,7 +304,6 @@ function Player:act_hardDrop()
|
||||
end
|
||||
end
|
||||
function Player:act_softDrop()
|
||||
local ENV=self.gameEnv
|
||||
self.downing=1
|
||||
if self.control and self.waiting==0 and self.cur then
|
||||
if self.curY>self.ghoY then
|
||||
@@ -298,19 +311,8 @@ function Player:act_softDrop()
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
self:checkTouchSound()
|
||||
elseif ENV.deepDrop then
|
||||
local CB=self.cur.bk
|
||||
local y=self.curY-1
|
||||
while self:ifoverlap(CB,self.curX,y)and y>0 do
|
||||
y=y-1
|
||||
end
|
||||
if y>0 then
|
||||
self.ghoY=y
|
||||
self:createDropFX()
|
||||
self.curY=y
|
||||
self:freshBlock('move')
|
||||
SFX.play('swipe')
|
||||
end
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -392,31 +394,43 @@ function Player:act_insDown()
|
||||
end
|
||||
end
|
||||
function Player:act_down1()
|
||||
if self.cur and self.curY>self.ghoY then
|
||||
self:createMoveFX('down')
|
||||
self.curY=self.curY-1
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
if self.cur then
|
||||
if self.curY>self.ghoY then
|
||||
self:createMoveFX('down')
|
||||
self.curY=self.curY-1
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
function Player:act_down4()
|
||||
if self.cur and self.curY>self.ghoY then
|
||||
local ghoY0=self.ghoY
|
||||
self.ghoY=max(self.curY-4,self.ghoY)
|
||||
self:createDropFX()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
if self.cur then
|
||||
if self.curY>self.ghoY then
|
||||
local ghoY0=self.ghoY
|
||||
self.ghoY=max(self.curY-4,self.ghoY)
|
||||
self:createDropFX()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
function Player:act_down10()
|
||||
if self.cur and self.curY>self.ghoY then
|
||||
local ghoY0=self.ghoY
|
||||
self.ghoY=max(self.curY-10,self.ghoY)
|
||||
self:createDropFX()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
if self.cur then
|
||||
if self.curY>self.ghoY then
|
||||
local ghoY0=self.ghoY
|
||||
self.ghoY=max(self.curY-0,self.ghoY)
|
||||
self:createDropFX()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
function Player:act_dropLeft()
|
||||
@@ -475,7 +489,9 @@ local playerActions={
|
||||
if self.keyAvailable[keyID]and self.alive then
|
||||
if self.waiting>self.gameEnv.hurry then
|
||||
self.waiting=self.gameEnv.hurry
|
||||
if self.waiting==0 then self:popNext()end
|
||||
if self.waiting==0 and self.falling==0 then
|
||||
self:popNext()
|
||||
end
|
||||
end
|
||||
self.keyPressing[keyID]=true
|
||||
playerActions[keyID](self)
|
||||
@@ -1308,7 +1324,7 @@ function Player:hold_swap(ifpre)
|
||||
self.stat.hold=self.stat.hold+1
|
||||
end
|
||||
function Player:hold(ifpre)
|
||||
if self.holdTime>0 and(ifpre or self.waiting==0)then
|
||||
if self.holdTime>0 and(ifpre or self.falling==0 and self.waiting==0)then
|
||||
if self.gameEnv.holdMode=='hold'then
|
||||
self:hold_norm(ifpre)
|
||||
elseif self.gameEnv.holdMode=='swap'then
|
||||
@@ -2005,7 +2021,12 @@ do
|
||||
self:_triggerEvent('hook_drop')
|
||||
end
|
||||
|
||||
if self.waiting==0 then self:popNext()end
|
||||
--Remove controling block
|
||||
self.cur=nil
|
||||
|
||||
if self.waiting==0 and self.falling==0 then
|
||||
self:popNext()
|
||||
end
|
||||
end
|
||||
|
||||
function Player:clearFilledLines(start,height)
|
||||
@@ -2405,8 +2426,11 @@ local function update_alive(P)
|
||||
P.downing=0
|
||||
end
|
||||
|
||||
local stopAtFalling
|
||||
|
||||
--Falling animation
|
||||
if P.falling>0 then
|
||||
stopAtFalling=true
|
||||
P:_updateFalling(P.falling-1)
|
||||
if P.falling>0 then
|
||||
goto THROW_stop
|
||||
@@ -2416,8 +2440,10 @@ local function update_alive(P)
|
||||
--Update block state
|
||||
if P.control then
|
||||
--Try spawn new block
|
||||
if P.waiting>0 then
|
||||
P.waiting=P.waiting-1
|
||||
if not P.cur then
|
||||
if not stopAtFalling and P.waiting>0 then
|
||||
P.waiting=P.waiting-1
|
||||
end
|
||||
if P.waiting<=0 then
|
||||
P:popNext()
|
||||
end
|
||||
|
||||
@@ -102,7 +102,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='ospin', x=850, y=850, lim=210,disp=ROOMval('ospin'), code=ROOMrev('ospin')},
|
||||
WIDGET.newSwitch{name='fineKill', x=850, y=910, lim=210,disp=ROOMval('fineKill'), code=ROOMrev('fineKill')},
|
||||
WIDGET.newSwitch{name='b2bKill', x=850, y=970, lim=210,disp=ROOMval('b2bKill'), code=ROOMrev('b2bKill')},
|
||||
WIDGET.newSwitch{name='lockout', x=850, y=1030,lim=210,disp=ROOMval('lockout'), code=ROOMval('lockout')},
|
||||
WIDGET.newSwitch{name='lockout', x=850, y=1030,lim=210,disp=ROOMval('lockout'), code=ROOMrev('lockout')},
|
||||
WIDGET.newSwitch{name='easyFresh', x=1170,y=850, lim=250,disp=ROOMval('easyFresh'),code=ROOMrev('easyFresh')},
|
||||
WIDGET.newSwitch{name='deepDrop', x=1170,y=910, lim=250,disp=ROOMval('deepDrop'), code=ROOMrev('deepDrop')},
|
||||
WIDGET.newSwitch{name='bone', x=1170,y=970, lim=250,disp=ROOMval('bone'), code=ROOMrev('bone')},
|
||||
|
||||
@@ -39,8 +39,9 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='layout', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
|
||||
|
||||
WIDGET.newButton{name='ctrl', x=290, y=220, w=320,h=80,font=35,code=goScene'setting_control'},
|
||||
WIDGET.newButton{name='key', x=640, y=220, w=320,h=80,color=MOBILE and'dH',font=35,code=goScene'setting_key'},
|
||||
WIDGET.newButton{name='touch', x=990, y=220, w=320,h=80,color=not MOBILE and'dH',font=35,code=goScene'setting_touch'},
|
||||
WIDGET.newButton{name='key', x=640, y=220, w=320,h=80,color=MOBILE and'dH',font=35, code=goScene'setting_key'},
|
||||
WIDGET.newButton{name='touch', x=990, y=220, w=320,h=80,color=not MOBILE and'dH',font=35, code=goScene'setting_touch',hideF=function()return not SETTING.VKSwitch end},
|
||||
WIDGET.newSwitch{name='showVK', x=1100, y=150, lim=400, disp=SETval('VKSwitch'), code=SETrev('VKSwitch')},
|
||||
WIDGET.newSlider{name='reTime', x=330, y=320, w=300,lim=180,unit=10,disp=SETval('reTime'), code=SETsto('reTime'),show=function(S)return(.5+S.disp()*.25).."s"end},
|
||||
WIDGET.newSelector{name='RS', x=300, y=420, w=300,color='S', disp=SETval('RS'), code=SETsto('RS'),list={'TRS','SRS','SRS_plus','SRS_X','BiRS','ARS_Z','ASC','ASC_plus','C2','C2_sym','Classic','Classic_plus','None','None_plus'}},
|
||||
WIDGET.newSelector{name='menuPos',x=980, y=320, w=300,color='O', disp=SETval('menuPos'), code=SETsto('menuPos'),list={'left','middle','right'}},
|
||||
|
||||
@@ -62,6 +62,7 @@ local function _nextSkin(i)
|
||||
SETTING.skin[i]=SETTING.skin[i]%16+1
|
||||
end
|
||||
local function _nextDir(i)
|
||||
trySettingWarn()
|
||||
SETTING.face[i]=(SETTING.face[i]+1)%4
|
||||
minoRot0[i]=minoRot0[i]+1.5707963
|
||||
if not selEggMode and not GAME.playing then
|
||||
|
||||
@@ -5,7 +5,7 @@ function scene.sceneInit()
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
if SETTING.VKSwitch and SETTING.VKTrack then
|
||||
if SETTING.VKTrack then
|
||||
love.graphics.setColor(1,1,1)
|
||||
setFont(30)
|
||||
mStr(text.VKTchW,140+500*SETTING.VKTchW,800-WIDGET.scrollPos)
|
||||
@@ -15,9 +15,17 @@ function scene.draw()
|
||||
end
|
||||
|
||||
local function _VKAdisp(n)return function()return VK_ORG[n].ava end end
|
||||
local function _VKAcode(n)return function()VK_ORG[n].ava=not VK_ORG[n].ava end end
|
||||
local function _notShow()return not SETTING.VKSwitch end
|
||||
local function _notTrack()return not(SETTING.VKSwitch and SETTING.VKTrack)end
|
||||
local function _VKAcode(n)
|
||||
return n<10 and
|
||||
function()
|
||||
VK_ORG[n].ava=not VK_ORG[n].ava
|
||||
trySettingWarn()
|
||||
end or
|
||||
function()
|
||||
VK_ORG[n].ava=not VK_ORG[n].ava
|
||||
end
|
||||
end
|
||||
local function _notTrack()return not SETTING.VKTrack end
|
||||
|
||||
scene.widgetScrollHeight=340
|
||||
scene.widgetList={
|
||||
@@ -44,13 +52,12 @@ scene.widgetList={
|
||||
|
||||
WIDGET.newButton{name='norm', x=840, y=80, w=240,h=80, font=35,code=function()for i=1,20 do VK_ORG[i].ava=i<11 end end},
|
||||
WIDGET.newButton{name='pro', x=1120, y=80, w=240,h=80, font=35,code=function()for i=1,20 do VK_ORG[i].ava=true end end},
|
||||
WIDGET.newSwitch{name='hide', x=1150, y=200, lim=400, font=40,disp=SETval('VKSwitch'),code=SETrev('VKSwitch')},
|
||||
WIDGET.newSwitch{name='icon', x=1150, y=300, lim=400, font=40,disp=SETval('VKIcon'),code=SETrev('VKIcon'),hideF=_notShow},
|
||||
WIDGET.newSlider{name='sfx', x=830, y=380, lim=160,w=400, font=35,change=function()SFX.play('virtualKey',SETTING.VKSFX)end,disp=SETval('VKSFX'),code=SETsto('VKSFX'),hideF=_notShow},
|
||||
WIDGET.newSlider{name='vib', x=830, y=450, lim=160,w=400,unit=6, font=35,change=function()if SETTING.vib>0 then VIB(SETTING.vib+SETTING.VKVIB)end end,disp=SETval('VKVIB'),code=SETsto('VKVIB'),hideF=_notShow},
|
||||
WIDGET.newSlider{name='alpha', x=830, y=520, lim=160,w=400, font=40,disp=SETval('VKAlpha'),code=SETsto('VKAlpha'),hideF=_notShow},
|
||||
WIDGET.newSwitch{name='icon', x=1150, y=240, lim=400, font=35,disp=SETval('VKIcon'),code=SETrev('VKIcon')},
|
||||
WIDGET.newSlider{name='sfx', x=830, y=320, lim=160,w=400, font=35,change=function()SFX.play('virtualKey',SETTING.VKSFX)end,disp=SETval('VKSFX'),code=SETsto('VKSFX')},
|
||||
WIDGET.newSlider{name='vib', x=830, y=390, lim=160,w=400,unit=6, font=35,change=function()if SETTING.vib>0 then VIB(SETTING.vib+SETTING.VKVIB)end end,disp=SETval('VKVIB'),code=SETsto('VKVIB')},
|
||||
WIDGET.newSlider{name='alpha', x=830, y=460, lim=160,w=400, font=35,disp=SETval('VKAlpha'),code=SETsto('VKAlpha')},
|
||||
|
||||
WIDGET.newSwitch{name='track', x=360, y=720, lim=250, font=35,disp=SETval('VKTrack'),code=SETrev('VKTrack'),hideF=_notShow},
|
||||
WIDGET.newSwitch{name='track', x=360, y=720, lim=250, font=35,disp=SETval('VKTrack'),code=SETrev('VKTrack')},
|
||||
WIDGET.newSwitch{name='dodge', x=800, y=720, lim=250, font=35,disp=SETval('VKDodge'),code=SETrev('VKDodge'),hideF=_notTrack},
|
||||
WIDGET.newSlider{name='tchW', x=140, y=860, w=1000, font=35,disp=SETval('VKTchW'),code=function(i)SETTING.VKTchW=i SETTING.VKCurW=math.max(SETTING.VKCurW,i)end,hideF=_notTrack},
|
||||
WIDGET.newSlider{name='curW', x=140, y=930, w=1000, font=35,disp=SETval('VKCurW'),code=function(i)SETTING.VKCurW=i SETTING.VKTchW=math.min(SETTING.VKTchW,i)end,hideF=_notTrack},
|
||||
|
||||
@@ -69,13 +69,13 @@ end
|
||||
gc.setDefaultFilter('linear','linear')
|
||||
|
||||
|
||||
TEXTURE.title=NSC(1130,236)--Title image (Middle: 580,118)
|
||||
TEXTURE.title=NSC(1040,236)--Title image (Middle: 580,118)
|
||||
do
|
||||
gc.setLineWidth(12)
|
||||
gc.translate(10,10)
|
||||
for i=1,#SVG_TITLE_FILL do
|
||||
local triangles=love.math.triangulate(SVG_TITLE_FILL[i])
|
||||
|
||||
gc.translate(12*i,i==1 and 8 or 14)
|
||||
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.polygon('line',SVG_TITLE_FILL[i])
|
||||
@@ -85,19 +85,18 @@ do
|
||||
gc.polygon('fill',triangles[j])
|
||||
end
|
||||
|
||||
gc.translate(-12*i,i==1 and -8 or -14)
|
||||
end
|
||||
gc.translate(-10,-10)
|
||||
end
|
||||
|
||||
TEXTURE.title_color=NSC(1130,236)--Title image (colored)
|
||||
TEXTURE.title_color=NSC(1040,236)--Title image (colored)
|
||||
do
|
||||
local titleColor={COLOR.P,COLOR.F,COLOR.V,COLOR.A,COLOR.M,COLOR.N,COLOR.W,COLOR.Y}
|
||||
|
||||
gc.translate(10,10)
|
||||
for i=1,8 do
|
||||
local triangles=love.math.triangulate(SVG_TITLE_FILL[i])
|
||||
|
||||
gc.translate(12*i,i==1 and 8 or 14)
|
||||
|
||||
gc.setLineWidth(12)
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.polygon('line',SVG_TITLE_FILL[i])
|
||||
@@ -112,9 +111,8 @@ do
|
||||
for j=1,#triangles do
|
||||
gc.polygon('fill',triangles[j])
|
||||
end
|
||||
|
||||
gc.translate(-12*i,i==1 and -8 or -14)
|
||||
end
|
||||
gc.translate(-10,-10)
|
||||
end
|
||||
|
||||
TEXTURE.multiple=GC.DO{15,15,
|
||||
|
||||
@@ -3,29 +3,32 @@ return[=[
|
||||
Tetro-1010(2C2N, 重力); Tetra-link(桌游)
|
||||
噗哟; 泡泡龙; 求合体; 坦克大战; 扫雷; 接水管; 记忆
|
||||
其他未来内容:
|
||||
组队战; 实时统计数据可视化; 教学关; 从录像继续
|
||||
重做模式选择UI; 重做模组UI; 加速下落; spike相关统计数据
|
||||
实时统计数据可视化; 教学关脚本语言; 从录像继续
|
||||
模式系统重做; 重做模组UI; 加速下落; spike相关统计数据
|
||||
支持更多手柄; 场地格边缘线; 模式数据分析; 高级自定义序列
|
||||
等级系统; 成就系统; 手势操作; C2连击; 特殊控件(虚拟摇杆等)
|
||||
方块位移/旋转动画; 更细节的DAS选项; 拓展主题系统
|
||||
可调攻击系统; 更多消除方式; 可调场地宽度; 新联网游戏场景切换逻辑
|
||||
工程编译到字节码; task-Z(新AI); 自适应UI; 多方块
|
||||
组队战; 方块位移/旋转动画; 更细节的DAS选项; 拓展主题系统
|
||||
更自由的攻击系统; 更多消除方式; 可调场地宽度; 新联网游戏场景切换逻辑
|
||||
task-Z(新AI); 自适应UI; 多方块
|
||||
|
||||
0.17.0: 硬着陆 Hard Landing
|
||||
新增:
|
||||
新模式:大爆炸
|
||||
新模式:策略堆叠(原设计来自游戏Cambridge, by NOT_A_ROBOT)
|
||||
新机制:出块延迟打断(ARE打断)(默认不开启此功能) #471
|
||||
添加锁定延迟判负(lockout)规则(默认关闭)
|
||||
新机制:出块延迟打断(ARE打断)(默认关闭) #471
|
||||
添加锁定在外判负(lockout)规则(默认关闭)
|
||||
全局默认使用5帧窒息延迟
|
||||
尝试支持摇杆和扳机
|
||||
支持摇杆和扳机(参数暂时不能调整)
|
||||
改动:
|
||||
出块/消行延迟真的是0延迟,不再有一帧等待了
|
||||
TRS的S/Z添加四个踢墙防止在一些地方卡死
|
||||
调整游戏大logo为正体字
|
||||
软降n格的键也可以触发深降
|
||||
出块/消行延迟逻辑修正,现在真的是0延迟,不再有一帧等待了
|
||||
生成位置预览开启后hold的生成位置也可见 #453
|
||||
TRS的S/Z添加四个踢墙防止在一些地方卡死
|
||||
优化pc训练模式体验,添加胜利条件,不再无尽
|
||||
堆积模式添加15帧的窒息延迟 #465
|
||||
小程序arm加入计时器和重置按钮
|
||||
修改部分不常用设置时会显示警告
|
||||
代码:
|
||||
bgm模块可限制最大加载数,不容易达到上限导致没声 #447
|
||||
语音模块支持设置轻微随机音调偏移半径(游戏内固定使用1)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
["apkCode"]=407,
|
||||
["apkCode"]=408,
|
||||
["code"]=1700,
|
||||
["string"]="V0.17.0",
|
||||
["room"]="ver A-2",
|
||||
|
||||
Reference in New Issue
Block a user