Compare commits
24 Commits
pre0.17.0-
...
pre0.17.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29a049fe4e | ||
|
|
b5a9c8e1bb | ||
|
|
bb9a35c161 | ||
|
|
b25a345b42 | ||
|
|
b22b0e0194 | ||
|
|
55cf95f218 | ||
|
|
225ddbcfac | ||
|
|
9377090c7c | ||
|
|
ed002ec2e1 | ||
|
|
e33036d9ec | ||
|
|
ef03e7c009 | ||
|
|
aef4220ac0 | ||
|
|
46223e38cd | ||
|
|
4bafa4bffe | ||
|
|
2b3dd877dd | ||
|
|
0553e5c45e | ||
|
|
4d93374cf6 | ||
|
|
4e421bf9ba | ||
|
|
8b2a9d7c01 | ||
|
|
5a3244d345 | ||
|
|
f1b9d0c5e4 | ||
|
|
6493e0e623 | ||
|
|
e71ba17f9f | ||
|
|
e656363e20 |
@@ -6,7 +6,14 @@ function FILE.load(name,args)
|
||||
local F=fs.newFile(name)
|
||||
assert(F:open'r','open error')
|
||||
local s=F:read()F:close()
|
||||
if args:sArg'-luaon'or args==''and s:sub(1,6)=='return{'then
|
||||
local mode=
|
||||
args:sArg'-luaon'and'luaon'or
|
||||
args:sArg'-json'and'json'or
|
||||
args:sArg'-string'and'string'or
|
||||
s:sub(1,6)=='return{'and'luaon'or
|
||||
(s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}')and'json'or
|
||||
'string'
|
||||
if mode=='luaon'then
|
||||
local func=loadstring(s)
|
||||
if func then
|
||||
setfenv(func,{})
|
||||
@@ -15,13 +22,13 @@ function FILE.load(name,args)
|
||||
else
|
||||
error('decode error')
|
||||
end
|
||||
elseif args:sArg'-json'or args==''and s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}'then
|
||||
elseif mode=='json'then
|
||||
local res=JSON.decode(s)
|
||||
if res then
|
||||
return res
|
||||
end
|
||||
error('decode error')
|
||||
elseif args:sArg'-string'or args==''then
|
||||
elseif mode=='string'then
|
||||
return s
|
||||
else
|
||||
error('unknown mode')
|
||||
|
||||
@@ -397,7 +397,7 @@ function love.joystickremoved(JS)
|
||||
end
|
||||
end
|
||||
function love.gamepadaxis(JS,axis,val)
|
||||
if JS==jsState[1]._jsObj then
|
||||
if jsState[1]and JS==jsState[1]._jsObj then
|
||||
local js=jsState[1]
|
||||
if axis=='leftx'or axis=='lefty'or axis=='rightx'or axis=='righty'then
|
||||
local newVal=--range: [0,1]
|
||||
|
||||
@@ -169,6 +169,25 @@ function STRING.vcsDecrypt(text,key)
|
||||
end
|
||||
return result..buffer
|
||||
end
|
||||
function STRING.digezt(text)--Not powerful hash, just protect the original text
|
||||
local out={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||
local seed=26
|
||||
for i=1,#text do
|
||||
local c=byte(text,i)
|
||||
seed=(seed+c)%26
|
||||
c=c+seed
|
||||
local pos=c*i%16
|
||||
local step=(c+i)%4+1
|
||||
local times=2+(c%6)
|
||||
for _=1,times do
|
||||
out[pos+1]=(out[pos+1]+c)%256
|
||||
pos=(pos+step)%16
|
||||
end
|
||||
end
|
||||
local result=""
|
||||
for i=1,16 do result=result..char(out[i])end
|
||||
return result
|
||||
end
|
||||
|
||||
function STRING.readLine(str)
|
||||
local p=str:find("\n")
|
||||
|
||||
@@ -226,10 +226,10 @@ function button:press(_,_,k)
|
||||
self.h
|
||||
)
|
||||
if self.sound then
|
||||
SFX.play('button')
|
||||
SFX.play(self.sound)
|
||||
end
|
||||
end
|
||||
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,sound=true][,align='M'][,edge=0][,code][,hideF][,hide]
|
||||
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,sound][,align='M'][,edge=0][,code][,hideF][,hide]
|
||||
if not D.h then D.h=D.w end
|
||||
local _={
|
||||
name= D.name or"_",
|
||||
@@ -253,11 +253,18 @@ function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,
|
||||
fType=D.fType,
|
||||
align=D.align or'M',
|
||||
edge= D.edge or 0,
|
||||
sound=D.sound~=false,
|
||||
code= D.code or NULL,
|
||||
hideF=D.hideF,
|
||||
hide= D.hide,
|
||||
}
|
||||
if D.sound==false then
|
||||
_.sound=false
|
||||
elseif type(D.sound)=='string'then
|
||||
_.sound=D.sound
|
||||
else
|
||||
_.sound='button'
|
||||
end
|
||||
|
||||
for k,v in next,button do _[k]=v end
|
||||
setmetatable(_,widgetMetatable)
|
||||
return _
|
||||
@@ -347,10 +354,10 @@ end
|
||||
function key:press(_,_,k)
|
||||
self.code(k)
|
||||
if self.sound then
|
||||
SFX.play('key')
|
||||
SFX.play(self.sound)
|
||||
end
|
||||
end
|
||||
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fType][,sound=true][,align='M'][,edge=0][,code][,hideF][,hide]
|
||||
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fType][,sound][,align='M'][,edge=0][,code][,hideF][,hide]
|
||||
if not D.h then D.h=D.w end
|
||||
local _={
|
||||
name= D.name or"_",
|
||||
@@ -373,13 +380,19 @@ function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fT
|
||||
color= D.color and(COLOR[D.color]or D.color)or COLOR.Z,
|
||||
font= D.font or 30,
|
||||
fType= D.fType,
|
||||
sound= D.sound~=false,
|
||||
align= D.align or'M',
|
||||
edge= D.edge or 0,
|
||||
code= D.code or NULL,
|
||||
hideF= D.hideF,
|
||||
hide= D.hide,
|
||||
}
|
||||
if D.sound==false then
|
||||
_.sound=false
|
||||
elseif type(D.sound)=='string'then
|
||||
_.sound=D.sound
|
||||
else
|
||||
_.sound='key'
|
||||
end
|
||||
for k,v in next,key do _[k]=v end
|
||||
setmetatable(_,widgetMetatable)
|
||||
return _
|
||||
|
||||
BIN
media/effect/chiptune/back.ogg
Normal file
BIN
media/effect/chiptune/back.ogg
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
local death_lock={12,11,10,9,8, 7,7,7,7,6}
|
||||
local death_wait={10,9, 8, 7,6, 6,6,5,5,4}
|
||||
local death_fall={10,9, 8, 7,6, 6,5,5,4,4}
|
||||
local death_lock={12,11,10,9,8, 8,8,7,7,6}
|
||||
local death_wait={10,9, 8, 7,6, 7,6,6,5,5}
|
||||
local death_fall={10,9, 8, 7,6, 7,6,5,5,5}
|
||||
|
||||
return{
|
||||
drop=0,
|
||||
|
||||
@@ -5,15 +5,22 @@ local setFont=setFont
|
||||
local PLAYERS,PLY_ALIVE=PLAYERS,PLY_ALIVE
|
||||
|
||||
return{
|
||||
layout='royale',
|
||||
fkey1=function(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=45
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#PLY_ALIVE.."/"..#PLAYERS,63,175)
|
||||
mStr(P.modeData.ko,80,215)
|
||||
gc_draw(TEXTOBJ.ko,60-TEXTOBJ.ko:getWidth(),222)
|
||||
|
||||
setFont(20)
|
||||
gc_setColor(1,.5,0,.6)
|
||||
gc_print(P.badge,103,227)
|
||||
gc_setColor(.97,.97,.97)
|
||||
|
||||
setFont(25)
|
||||
mStr(text.powerUp[P.strength],63,290)
|
||||
gc_setColor(1,1,1)
|
||||
|
||||
@@ -79,7 +79,7 @@ do--function loadFile(name,args), function saveFile(data,name,args)
|
||||
local text=text or t
|
||||
local res,mes=pcall(FILE.save,data,name,args)
|
||||
if res then
|
||||
return mes
|
||||
return true
|
||||
else
|
||||
MES.new('error',
|
||||
mes:find'duplicate'and
|
||||
@@ -771,7 +771,7 @@ do--function resetGameData(args)
|
||||
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
|
||||
|
||||
TEXT.clear()
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if GAME.modeEnv.eventset=='royale'then
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
||||
end
|
||||
|
||||
@@ -859,12 +859,12 @@ return{
|
||||
"Any input device takes some time for the input to reach the game. This delay can range from a few milliseconds to a few dozen milliseconds.\nIf input delay is too long, the controls can feel uncomfortable.\nThis delay is often due to the performance of the hardware and software used, and often out of your control. Turn on performance mode (or turn off power saving mode) on your device, and turn on gaming mode on your monitor/TV (if you have one), may help reducing input delay.",
|
||||
},
|
||||
{"Cold Clear",
|
||||
"cc coldclear",
|
||||
"cc coldclear ai bot",
|
||||
"term",
|
||||
"A Tetris bot. Originally built for Puyo Puyo Tetris, thus can be less powerful on Techmino.",
|
||||
},
|
||||
{"ZZZbot",
|
||||
"zzzbot",
|
||||
"zzzbot ai bot",
|
||||
"term",
|
||||
"A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games",
|
||||
},
|
||||
|
||||
@@ -810,9 +810,9 @@ return{
|
||||
"快速震动手指,实现比长按更快速+灵活的高速单点移动,主要在经典块的高难度下(因为das不可调而且特别慢,高速下很容易md导致失败,此时手动连点就比自动移动更快)或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为“Hypertapper”。",
|
||||
},
|
||||
{"穿透 Passthrough",
|
||||
"穿透 passthrough pingthrough",
|
||||
"穿透 passthrough pingthrough chuantou",
|
||||
"term",
|
||||
"(攻击)穿透,指双方的攻击明明时间上很接近但没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启passthrough规则(曾经天梯默认开启),那么对手消行攻击的瞬间能看到自己的红条出现但其处于“无敌时间”内,不会触发也不能抵消,此时你的攻击会直接打给对手。(应该是给攻击的飞行动画预留时间,同时也让玩家能反应过来并主动选择要不要抵消,要的话就再等一会)\n另有pingthrough的说法,最终效果同passthrough,只是根本原因是不可避免的网络传输延迟。设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
|
||||
"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启passthrough规则(曾经天梯默认开启),那么对手消行攻击的瞬间能看到自己的红条出现但其处于“无敌时间”内,不会触发也不能抵消,此时你的攻击会直接打给对手。(应该是给攻击的飞行动画预留时间,同时也让玩家能反应过来并主动选择要不要抵消,要的话就再等一会)\n另有pingthrough的说法,只是原因是由于不可避免的网络传输延迟,效果同passthrough,设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
|
||||
},
|
||||
{"TOP攻击表",
|
||||
"攻击表 top attack",
|
||||
@@ -880,17 +880,17 @@ return{
|
||||
"一个游戏模式:\nMemoryless,Previewless,Holdless\n纯随机+无next+无hold,一个非常考验玩家反应速度的模式",
|
||||
},
|
||||
{"输入延迟",
|
||||
"输入延迟 input delay",
|
||||
"输入延迟 input delay yanchi",
|
||||
"term",
|
||||
"用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)才到达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿QQ远程控制打fps游戏\nTOP、TE等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点",
|
||||
},
|
||||
{"Cold Clear",
|
||||
"cc coldclear",
|
||||
"机器人 电脑 cc coldclear ai bot jiqiren",
|
||||
"term",
|
||||
"一个AI的名字(就跟AlphaGo一样)\n本身是为PPT开发,故在本游戏中使用效果欠佳,版本也较旧",
|
||||
},
|
||||
{"ZZZbot",
|
||||
"zzzbot",
|
||||
"机器人 电脑 zzzbot ai bot jiqiren",
|
||||
"term",
|
||||
"一个AI的名字(就跟AlphaGo一样)\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错",
|
||||
},
|
||||
@@ -902,7 +902,7 @@ return{
|
||||
"开局定式,定式一般指开局定式这个概念。\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\n\n能称为定式的摆法要尽量满足以下至少2~3条:\n能适应大多数块序\n输出高,尽量不浪费T块\n很多方块无需软降,极简操作数少\n有明确后续,分支尽量少。\n\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。",
|
||||
},
|
||||
{"DT炮",
|
||||
"dt炮",
|
||||
"dt炮 dt cannon",
|
||||
"setup",
|
||||
"Double-Triple Cannon.\n"..HDwiki,
|
||||
HDsearch.."dt",
|
||||
@@ -914,7 +914,7 @@ return{
|
||||
HDsearch.."dt",
|
||||
},
|
||||
{"BT炮",
|
||||
"bt炮",
|
||||
"bt炮 bt cannon",
|
||||
"setup",
|
||||
"β炮(Beta炮)。\n"..HDwiki,
|
||||
HDsearch.."bt_cannon",
|
||||
@@ -932,7 +932,7 @@ return{
|
||||
HDsearch.."TKI_3_Perfect_Clear",
|
||||
},
|
||||
{"QT炮",
|
||||
"qt炮",
|
||||
"qt炮 qt cannon",
|
||||
"setup",
|
||||
"QT炮,细节未知。",
|
||||
},
|
||||
|
||||
@@ -339,7 +339,7 @@ return{
|
||||
title="Game Settings",
|
||||
graphic="←Video",
|
||||
sound="Audio→",
|
||||
layout="Layout",
|
||||
-- style="Style",
|
||||
|
||||
ctrl="Control Settings",
|
||||
key="Key Mappings",
|
||||
@@ -460,7 +460,7 @@ return{
|
||||
},
|
||||
setting_skin={
|
||||
skinSet="Block Skin",
|
||||
title="Layout Settings",
|
||||
title="Style Settings",
|
||||
skinR="Reset Colors",
|
||||
faceR="Reset Dir.",
|
||||
},
|
||||
@@ -800,11 +800,11 @@ return{
|
||||
"Bridge clear coming soon!",
|
||||
"Can you master this modern yet familiar stacker?",
|
||||
"Certainly within this heart lies my M@STERPIECE.",
|
||||
"Changelogs in English can be found on Discord.",
|
||||
"Change logs in English can be found on Discord.",
|
||||
"Color clear coming soon!",
|
||||
"Decreasing DAS and ARR makes your game faster but harder to control.",
|
||||
"Did I just see a Back-to-Back-to-Back?",
|
||||
"Does B2B2B2B exists?",
|
||||
"Does B2B2B2B exist?",
|
||||
"Don't let a small glitch ruin your entire day!",
|
||||
"Don't look directly at the bugs!",
|
||||
"Enjoy the Techmino rotation system!",
|
||||
@@ -818,7 +818,6 @@ return{
|
||||
"Have you noticed what \"rotating\" does do to a block?",
|
||||
"Headphones recommended for a better experience.",
|
||||
"Hello world!",
|
||||
"hello world",
|
||||
"I3 and L3 are the only two unique triminoes.",
|
||||
"if a==true",
|
||||
"Increase your frame rate for a better experience.",
|
||||
@@ -839,7 +838,6 @@ return{
|
||||
"No easter eggs in this menu if you have the simplistic style turned on!",
|
||||
"O-Spin Triple!",
|
||||
"OHHHHHHHHHHHHHH",
|
||||
"Online mode is planned — please be patient.",
|
||||
"Play single-handedly!",
|
||||
"Playing good takes some time!",
|
||||
"Powered by LÖVE",
|
||||
@@ -860,6 +858,7 @@ return{
|
||||
"There are several hidden modes in the game that cannot be entered using the map.",
|
||||
"There is a total of 18 different pentominoes.",
|
||||
"There is a total of 7 different tetrominoes.",
|
||||
"Try online multiplayer! Expect things to break though.",
|
||||
"Try using multiple Hold Queues!",
|
||||
"Try using two rotation buttons. Using all three of them is better.",
|
||||
"Warning: Programmer Art",
|
||||
@@ -872,7 +871,6 @@ return{
|
||||
"You are welcome to help us to make BGMs and SFXs!",
|
||||
"You can connect a keyboard to your phone or tablet (not functional on iOS though).",
|
||||
"You can customize the key mappings in settings!",
|
||||
"You can navigate the menu with a keyboard, but only in this screen.",
|
||||
"You can open the save directory from the Stats page.",
|
||||
"You can perform a spin with 28 of the 29 minoes in this game; the exception being O1.",
|
||||
"You can set the spawning orientation for each piece.",
|
||||
|
||||
@@ -305,7 +305,7 @@ return{
|
||||
title="Ajustes del Juego",
|
||||
graphic="←Video",
|
||||
sound="Sonido→",
|
||||
layout="Diseño",
|
||||
-- style="Style",
|
||||
|
||||
ctrl="Sensibilidad",
|
||||
key="Teclas",
|
||||
|
||||
@@ -299,10 +299,9 @@ return{
|
||||
},
|
||||
setting_game={
|
||||
title="Paramètres du jeu",
|
||||
|
||||
graphic="←Vidéo",
|
||||
sound="Son→",
|
||||
layout="Disposition",
|
||||
-- style="Style",
|
||||
|
||||
ctrl="Paramètres de contrôle",
|
||||
key="Touches",
|
||||
|
||||
@@ -327,7 +327,7 @@ return{
|
||||
title="Config. de jogo",
|
||||
graphic="←Video",
|
||||
sound="Som→",
|
||||
layout="Layout",
|
||||
-- style="Style",
|
||||
|
||||
ctrl="Config. controle",
|
||||
key="Map. teclas",
|
||||
|
||||
@@ -228,10 +228,9 @@ return{
|
||||
},
|
||||
setting_game={
|
||||
title="%~~%",
|
||||
|
||||
graphic="←Video",
|
||||
sound="Sound→",
|
||||
layout="=-=-=",
|
||||
style="=-=-=",
|
||||
|
||||
ctrl="=?=",
|
||||
key="=?",
|
||||
|
||||
@@ -87,7 +87,6 @@ return{fallback='zh',
|
||||
WidgetText={
|
||||
setting_game={
|
||||
title="改游戏",
|
||||
|
||||
graphic="←改画面",
|
||||
sound="改声音→",
|
||||
|
||||
|
||||
@@ -337,9 +337,9 @@ return{
|
||||
},
|
||||
setting_game={
|
||||
title="游戏设置",
|
||||
graphic="←画面设置",
|
||||
sound="声音设置→",
|
||||
layout="外观",
|
||||
graphic="←画面",
|
||||
sound="声音→",
|
||||
style="风格",
|
||||
|
||||
ctrl="控制设置",
|
||||
key="键位设置",
|
||||
@@ -356,8 +356,8 @@ return{
|
||||
},
|
||||
setting_video={
|
||||
title="画面设置",
|
||||
sound="←声音设置",
|
||||
game="游戏设置→",
|
||||
sound="←声音",
|
||||
game="游戏→",
|
||||
|
||||
block="方块可见",
|
||||
smooth="平滑下落",
|
||||
@@ -403,8 +403,8 @@ return{
|
||||
},
|
||||
setting_sound={
|
||||
title="声音设置",
|
||||
game="←游戏设置",
|
||||
graphic="画面设置→",
|
||||
game="←游戏",
|
||||
graphic="画面→",
|
||||
|
||||
mainVol="总音量",
|
||||
bgm="音乐",
|
||||
@@ -773,13 +773,11 @@ return{
|
||||
},
|
||||
getTip={refuseCopy=true,
|
||||
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
|
||||
"(a+b)³=a³+3a²b+3ab²+b³",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"《按钮风格进化史》",
|
||||
"《加载动画进化史》",
|
||||
"《主题曲进化史》",
|
||||
"↑↑↓↓←→←→BA",
|
||||
"∫u dv=uv-∫v du",
|
||||
"$include<studio.h>",
|
||||
"0next 0hold.",
|
||||
"11renPC!",
|
||||
@@ -860,7 +858,6 @@ return{
|
||||
"请勿大力敲打设备!敲坏了就没有Techmino玩了",
|
||||
"请勿使用三只手游玩",
|
||||
"全球目前应该没人能全X评价(大爆炸不算)",
|
||||
"群友翻译的中文方块百科全书!tetris.huijiwiki.com",
|
||||
"如何O-spin: 一秒转626圈(误",
|
||||
"三岁通关困难马拉松",
|
||||
"少女祈祷中",
|
||||
@@ -896,6 +893,7 @@ return{
|
||||
"有两个模式是以东方Project里的角色为主题的",
|
||||
"这不是休闲游戏……别怪关卡要求太高,多练吧",
|
||||
"震惊,我只是一条凑数tip吗",
|
||||
"中文方块百科全书:tetris.huijiwiki.com",
|
||||
"众所周知俄罗斯方块是经典编程练手游戏(?",
|
||||
"众所周知mac不能拿来玩游戏",
|
||||
"作业都没做完别玩手机",
|
||||
@@ -910,13 +908,6 @@ return{
|
||||
"B2B2B2B存在吗?",
|
||||
"c4w人竟是我自己",
|
||||
"c4w人竟在我身边",
|
||||
"cos(α+β)=CαCβ-SβSα",
|
||||
"cos²α-cos²β=-S(α+β)S(α-β)",
|
||||
"cos²α-sin²β=C(α+β)C(α-β)",
|
||||
"cos2α=C²α-S²α",
|
||||
"e^(πi)=-1",
|
||||
"e^(πi/2)=i",
|
||||
"e^(πi/4)=(1+i)/√2",
|
||||
"fin neo iso 是满足tspin条件的特殊t2的名字",
|
||||
"git commit",
|
||||
"git push -f",
|
||||
@@ -925,15 +916,9 @@ return{
|
||||
"iOS设备使用键盘控制可能会有问题,还是先只用触屏吧",
|
||||
"l-=-1",
|
||||
"Let-The-Bass-Kick!",
|
||||
"lim x→c f(x)/g(x)=lim x→c f'(x)/g'(x)",
|
||||
"MrZ是谁啊",
|
||||
"pps-0.01",
|
||||
"S△ABC=√(h(h-a)(h-b)(h-c)),h=(a+b+c)/2",
|
||||
"shutdown -h now",
|
||||
"sin(α+β)=SαCβ+SβCα",
|
||||
"sin²α-cos²β=-C(α+β)C(α-β)",
|
||||
"sin²α-sin²β=S(α+β)S(α-β)",
|
||||
"sin2α=2SαCα",
|
||||
"sofunhowtoget",
|
||||
"STSD必死",
|
||||
"sudo rm -rf /*",
|
||||
@@ -1072,18 +1057,33 @@ return{
|
||||
"Z思辨[05]《梦想的价值》",
|
||||
"Z思辨[06]《天赋的力量》",
|
||||
"Z思辨[07]《游戏的意义》",
|
||||
"Farter评[01]:“成天被夸赞‘好玩’的”",
|
||||
"Farter评[02]:“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
|
||||
"Farter评[03]:“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(”",
|
||||
"Farter评[04]:“民间微创新”",
|
||||
"Farter评[05]:“民间音lè与图案”",
|
||||
"Farter评[06]:“民间游戏设计”",
|
||||
"Farter评[07]:“是方块爱好者研究平台”",
|
||||
"Farter评[08]:“是方块萌新入坑接收器”",
|
||||
"Farter评[09]:“是居家旅行装逼必备”",
|
||||
"Farter评[10]:“是民间UI动效艺术作品”",
|
||||
"Farter评[11]:“是一滩散乱的代码组成的蜜汁结构”",
|
||||
"Farter评[12]:“它是现在的techmino已发布版本”",
|
||||
"Frt评[01]“成天被夸赞‘好玩’的”",
|
||||
"Frt评[02]“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
|
||||
"Frt评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(”",
|
||||
"Frt评[04]“民间微创新”",
|
||||
"Frt评[05]“民间音lè与图案”",
|
||||
"Frt评[06]“民间游戏设计”",
|
||||
"Frt评[07]“是方块爱好者研究平台”",
|
||||
"Frt评[08]“是方块萌新入坑接收器”",
|
||||
"Frt评[09]“是居家旅行装逼必备”",
|
||||
"Frt评[10]“是民间UI动效艺术作品”",
|
||||
"Frt评[11]“是一滩散乱的代码组成的蜜汁结构”",
|
||||
"Frt评[12]“它是现在的techmino已发布版本”",
|
||||
"今日数学[01](a+b)³=a³+3a²b+3ab²+b³",
|
||||
"今日数学[02]∫u dv=uv-∫v du",
|
||||
"今日数学[03]cos(α+β)=CαCβ-SβSα",
|
||||
"今日数学[04]cos²α-cos²β=-S(α+β)S(α-β)",
|
||||
"今日数学[05]cos²α-sin²β=C(α+β)C(α-β)",
|
||||
"今日数学[06]cos2α=C²α-S²α",
|
||||
"今日数学[07]e^(πi)=-1",
|
||||
"今日数学[08]e^(πi/2)=i",
|
||||
"今日数学[09]e^(πi/4)=(1+i)/√2",
|
||||
"今日数学[10]lim x→c f(x)/g(x)=lim x→c f'(x)/g'(x)",
|
||||
"今日数学[11]S△ABC=√(h(h-a)(h-b)(h-c)),h=(a+b+c)/2",
|
||||
"今日数学[12]sin(α+β)=SαCβ+SβCα",
|
||||
"今日数学[13]sin²α-cos²β=-C(α+β)C(α-β)",
|
||||
"今日数学[14]sin²α-sin²β=S(α+β)S(α-β)",
|
||||
"今日数学[15]sin2α=2SαCα",
|
||||
"时间碎片[000] 2021/11/21加入这个版块",
|
||||
"时间碎片[001] V0.0.091726加入TRS旋转系统",
|
||||
"时间碎片[002] V0.7.9加入O-spin",
|
||||
@@ -1148,9 +1148,9 @@ return{
|
||||
{C.R,"《知识产权法》"},
|
||||
{C.R,"本游戏难度上限很高,做好心理准备。"},
|
||||
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
||||
{C.R,"不要在上课时玩游戏!"},
|
||||
{C.R,"光敏性癫痫警告"},
|
||||
{C.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
||||
{C.R,"上班时间不许摸鱼打块!"},
|
||||
{C.R,"上课时间不许摸鱼打块!"},
|
||||
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
||||
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
||||
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,"炮"},
|
||||
|
||||
@@ -337,7 +337,7 @@ return{
|
||||
title="游戏设置",
|
||||
graphic="←视频",
|
||||
sound="声音→",
|
||||
layout="布局",
|
||||
style="风格",
|
||||
|
||||
ctrl="控制设置",
|
||||
key="键映射",
|
||||
|
||||
@@ -336,9 +336,9 @@ return{
|
||||
},
|
||||
setting_game={
|
||||
title="遊戲設置",
|
||||
graphic="←畫面設置",
|
||||
sound="音頻設置→",
|
||||
layout="外觀",
|
||||
graphic="←畫面",
|
||||
sound="音頻→",
|
||||
style="風格",
|
||||
|
||||
ctrl="控制設置",
|
||||
key="鍵位設置",
|
||||
@@ -355,8 +355,8 @@ return{
|
||||
},
|
||||
setting_video={
|
||||
title="畫面設置",
|
||||
sound="←音頻設置",
|
||||
game="遊戲設置→",
|
||||
sound="←音頻",
|
||||
game="遊戲→",
|
||||
|
||||
block="方塊可見",
|
||||
smooth="平滑下落",
|
||||
@@ -402,8 +402,8 @@ return{
|
||||
},
|
||||
setting_sound={
|
||||
title="音頻設置",
|
||||
game="←遊戲設置",
|
||||
graphic="畫面設置→",
|
||||
game="←遊戲",
|
||||
graphic="畫面→",
|
||||
|
||||
mainVol="主音量",
|
||||
bgm="音樂",
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
return{
|
||||
env={
|
||||
infHold=true,
|
||||
drop=1e99,lock=1e99,
|
||||
eventSet='checkAttack_100',
|
||||
bg='matrix',bgm='new era',
|
||||
},
|
||||
|
||||
@@ -16,6 +16,6 @@ return{
|
||||
L>=120 and 3 or
|
||||
L>=70 and 2 or
|
||||
L>=40 and 1 or
|
||||
L>=26 and 0
|
||||
L>=16 and 0
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -16,6 +16,6 @@ return{
|
||||
L>=80 and 3 or
|
||||
L>=40 and 2 or
|
||||
L>=20 and 1 or
|
||||
L>=26 and 0
|
||||
L>=10 and 0
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
local function selectTarget(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
P.swappingAtkMode=30
|
||||
end
|
||||
|
||||
return{
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
fall=20,
|
||||
royaleMode=true,
|
||||
fkey1=selectTarget,
|
||||
garbageSpeed=.3,
|
||||
pushSpeed=2,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -240,8 +240,8 @@ function NET.uploadSave()
|
||||
{section=3,data=STRING.packTable(SETTING)},
|
||||
{section=4,data=STRING.packTable(KEY_MAP)},
|
||||
{section=5,data=STRING.packTable(VK_ORG)},
|
||||
{section=6,data=STRING.packTable(loadFile('conf/vkSave1'))},
|
||||
{section=7,data=STRING.packTable(loadFile('conf/vkSave2'))},
|
||||
{section=6,data=STRING.packTable(loadFile('conf/vkSave1','-canSkip')or{})},
|
||||
{section=7,data=STRING.packTable(loadFile('conf/vkSave2','-canSkip')or{})},
|
||||
}..'}}')
|
||||
MES.new('info',"Uploading")
|
||||
end
|
||||
@@ -287,10 +287,12 @@ function NET.loadSavedData(sections)
|
||||
TABLE.cover(NET.cloudData.VK_org,VK_ORG)
|
||||
success=success and saveFile(VK_ORG,'conf/virtualkey')
|
||||
|
||||
success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')
|
||||
success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')
|
||||
if #NET.cloudData.vkSave1[1]then success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')end
|
||||
if #NET.cloudData.vkSave2[1]then success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')end
|
||||
if success then
|
||||
MES.new('check',text.saveDone)
|
||||
else
|
||||
MES.new('warn',text.dataCorrupted)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ local int,ceil,rnd=math.floor,math.ceil,math.random
|
||||
local max,min,sin,modf=math.max,math.min,math.sin,math.modf
|
||||
local setFont,mDraw,mStr=FONT.set,GC.draw,GC.mStr
|
||||
local SKIN,TEXTURE,IMG=SKIN,TEXTURE,IMG
|
||||
local TEXT,COLOR,GAME,TIME=TEXT,COLOR,GAME,TIME
|
||||
local TEXT,COLOR,TIME=TEXT,COLOR,TIME
|
||||
local shader_alpha,shader_lighter=SHADER.alpha,SHADER.lighter
|
||||
local shader_fieldSatur,shader_blockSatur=SHADER.fieldSatur,SHADER.blockSatur
|
||||
local TEXTOBJ,ENUM_MISSION,BLOCK_COLORS=TEXTOBJ,ENUM_MISSION,BLOCK_COLORS
|
||||
@@ -862,12 +862,12 @@ function draw.norm(P,repMode)
|
||||
_drawLDI(ENV.easyFresh,P.lockDelay/ENV.lock,P.freshTime)
|
||||
|
||||
--Draw target selecting pad
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if ENV.layout=='royale'then
|
||||
if P.atkMode then
|
||||
gc_setColor(1,.8,0,P.swappingAtkMode*.02)
|
||||
gc_setColor(1,.8,0,min(P.swappingAtkMode,30)*.02)
|
||||
gc_rectangle('fill',RCPB[2*P.atkMode-1],RCPB[2*P.atkMode],90,35,8,4)
|
||||
end
|
||||
gc_setColor(1,1,1,P.swappingAtkMode*.025)
|
||||
gc_setColor(1,1,1,min(P.swappingAtkMode,30)*.025)
|
||||
setFont(35)
|
||||
gc_setLineWidth(1)
|
||||
for i=1,4 do
|
||||
@@ -953,7 +953,7 @@ function draw.small(P)
|
||||
end
|
||||
|
||||
--Draw badge
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if P.gameEnv.layout=='royale'then
|
||||
gc_setColor(1,1,1)
|
||||
for i=1,P.strength do
|
||||
gc_draw(IMG.badgeIcon,12*i-7,4,nil,.5)
|
||||
|
||||
@@ -53,6 +53,7 @@ return{
|
||||
bufferLimit=1e99,
|
||||
fillClear=true,
|
||||
|
||||
layout='normal',
|
||||
fkey1=false,fkey2=false,
|
||||
keyCancel={},
|
||||
fine=false,fineKill=false,
|
||||
|
||||
@@ -193,9 +193,9 @@ function Player:createBeam(R,send)
|
||||
|
||||
local c=BLOCK_COLORS[color]
|
||||
local r,g,b=c[1]*2,c[2]*2,c[3]*2
|
||||
|
||||
local a=GAME.modeEnv.royaleMode and not(self.type=='human'or R.type=='human')and .2 or 1
|
||||
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a*(power+2)*.0626)
|
||||
local a=(power+2)*.0626
|
||||
if self.type~='human'and R.type~='human'then a=a*.2 end
|
||||
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a)
|
||||
end
|
||||
end
|
||||
--------------------------</FX>--------------------------
|
||||
@@ -1847,7 +1847,7 @@ do
|
||||
end
|
||||
|
||||
--Bonus atk/def when focused
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if ENV.layout=='royale'then
|
||||
local i=min(#self.atker,9)
|
||||
if i>1 then
|
||||
atk=atk+reAtk[i]
|
||||
@@ -1870,7 +1870,7 @@ do
|
||||
off=off+_
|
||||
if send>0 then
|
||||
local T
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if ENV.layout=='royale'then
|
||||
if self.atkMode==4 then
|
||||
local M=#self.atker
|
||||
if M>0 then
|
||||
@@ -2144,7 +2144,7 @@ local function task_lose(self)
|
||||
return
|
||||
end
|
||||
end
|
||||
if not GAME.modeEnv.royaleMode and #PLAYERS>1 then
|
||||
if not self.gameEnv.layout=='royale'and #PLAYERS>1 then
|
||||
self.y=self.y+self.endCounter*.26
|
||||
self.absFieldY=self.absFieldY+self.endCounter*.26
|
||||
end
|
||||
@@ -2339,7 +2339,7 @@ local function update_alive(P)
|
||||
P.dropSpeed=P.dropSpeed*.99+v*.01
|
||||
end
|
||||
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if P.gameEnv.layout=='royale'then
|
||||
local v=P.swappingAtkMode
|
||||
local tar=#P.field>15 and 4 or 8
|
||||
if v~=tar then
|
||||
@@ -2596,7 +2596,7 @@ local function update_dead(P)
|
||||
--Final average speed
|
||||
P.dropSpeed=P.dropSpeed*.96+S.piece/S.frame*144
|
||||
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if P.gameEnv.layout=='royale'then
|
||||
P.swappingAtkMode=min(P.swappingAtkMode+2,30)
|
||||
end
|
||||
|
||||
@@ -2714,7 +2714,7 @@ function Player:win(result)
|
||||
end
|
||||
self:_die()
|
||||
self.result='win'
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if self.gameEnv.layout=='royale'then
|
||||
self.modeData.place=1
|
||||
self:changeAtk()
|
||||
end
|
||||
@@ -2729,7 +2729,7 @@ function Player:win(result)
|
||||
GAME.result=result or'gamewin'
|
||||
SFX.play('win')
|
||||
VOC.play('win')
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if self.gameEnv.layout=='royale'then
|
||||
BGM.play('8-bit happiness')
|
||||
end
|
||||
end
|
||||
@@ -2760,7 +2760,7 @@ function Player:lose(force)
|
||||
self:_die()
|
||||
self.result='lose'
|
||||
do local p=TABLE.find(PLY_ALIVE,self)if p then rem(PLY_ALIVE,p)end end
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if self.gameEnv.layout=='royale'then
|
||||
self:changeAtk()
|
||||
self.modeData.place=#PLY_ALIVE+1
|
||||
self.strength=0
|
||||
@@ -2802,7 +2802,7 @@ function Player:lose(force)
|
||||
GAME.result='gameover'
|
||||
SFX.play('fail')
|
||||
VOC.play('lose')
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if self.gameEnv.layout=='royale'then
|
||||
BGM.play('end')
|
||||
end
|
||||
gameOver()
|
||||
|
||||
@@ -59,7 +59,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='staff', x=1140,y=380,w=220,h=80,font=35,code=goScene'staff'},
|
||||
WIDGET.newButton{name='his', x=1140,y=480,w=220,h=80,font=35,code=goScene'history'},
|
||||
WIDGET.newButton{name='legals', x=1140,y=580,w=220,h=80,font=35,code=goScene'legals'},
|
||||
WIDGET.newButton{name='back', x=640, y=600,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=640, y=600,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -8,7 +8,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title',x=80,y=50,font=70,align='L'},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -315,7 +315,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='slide', x=240, y=420,lim=200,font=40,disp=function()return slide end, code=pressKey'e',hideF=ifGaming},
|
||||
WIDGET.newSwitch{name='pathVis',x=240, y=510,lim=200,font=40,disp=function()return pathVis end,code=pressKey'r',hideF=function()return state==1 or not slide end},
|
||||
WIDGET.newSwitch{name='revKB', x=240, y=600,lim=200,font=40,disp=function()return revKB end, code=pressKey't',hideF=ifGaming},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -493,7 +493,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='record2', x=1100,y=450,w=220,h=50,fText="", color='H',code=pressKey'2', hideF=function()return state==2 end},
|
||||
WIDGET.newKey{name='replay1', x=1245,y=390,w=50,fText="!", color='G',code=pressKey'c1', hideF=function()return state==2 or #repeater.seq[1]==0 end},
|
||||
WIDGET.newKey{name='replay2', x=1245,y=450,w=50,fText="!", color='G',code=pressKey'c2', hideF=function()return state==2 or #repeater.seq[2]==0 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -119,7 +119,7 @@ scene.widgetList={
|
||||
WIDGET.newSelector{name='level', x=640,y=640,w=200,list={'A_Z','Z_A','Tech1','Tech2','KeyTest1','KeyTest2','Hello','Roll1','Roll2','Roll3','ZZZ','ZXZX','ZMZM','Stair','Stair2','Stair3','BPW'},disp=function()return levelName end,code=function(i)levelName=i;targetString=levels[i]end,hideF=function()return state>0 end},
|
||||
WIDGET.newButton{name='reset', x=160,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'space'},
|
||||
WIDGET.newButton{name='keyboard',x=160,y=210,w=180,h=100,code=function()love.keyboard.setTextInput(true,0,select(2,SCR.xOy:transformPoint(0,500)),1,1)end,hide=not MOBILE},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -232,7 +232,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=1140,y=540,w=170,h=80,font=50,fText=CHAR.icon.retry_spin,color='lG',code=restart},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -231,7 +231,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='7',x=540,y=320,w=90,font=60,fText="7",code=pressKey'7'},
|
||||
WIDGET.newKey{name='8',x=640,y=320,w=90,font=60,fText="8",code=pressKey'8'},
|
||||
WIDGET.newKey{name='9',x=740,y=320,w=90,font=60,fText="9",code=pressKey'9'},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=45,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -165,7 +165,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='/',x=445,y=600,w=90,sound=false,fText="/",color='lB',font=50,code=pressKey'/'},
|
||||
WIDGET.newKey{name='<',x=545,y=300,w=90,sound=false,fText=CHAR.key.backspace,color='lR',font=50,code=pressKey'backspace'},
|
||||
WIDGET.newKey{name='=',x=545,y=400,w=90,sound=false,fText="=",color='lY',font=50,code=pressKey'return'},
|
||||
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -127,7 +127,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -318,7 +318,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -236,7 +236,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -383,7 +383,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=155,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
modeSelector,bgmSelector,colorSelector,
|
||||
arcadeSwitch,
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -399,7 +399,7 @@ end
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=80,y=60,w=110,h=60,color='lG',fText=CHAR.icon.retry_spin,code=pressKey'r',hideF=function()return state==0 end},
|
||||
WIDGET.newSwitch{name='invis',x=100,y=140,lim=80,disp=function()return invis end,code=pressKey'q',hideF=function()return state==1 end},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,font=50,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,font=45,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -120,7 +120,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='7',x=540,y=320,w=90,font=60,fText="7",code=pressKey'7'},
|
||||
WIDGET.newKey{name='8',x=640,y=320,w=90,font=60,fText="8",code=pressKey'8'},
|
||||
WIDGET.newKey{name='9',x=740,y=320,w=90,font=60,fText="9",code=pressKey'9'},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=45,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -48,6 +48,6 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -165,7 +165,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -177,7 +177,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='reset',x=640,y=45,w=150,h=50,font=35,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -131,7 +131,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -175,7 +175,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='invis', x=240,y=330,lim=200,font=40,disp=function()return invis end, code=pressKey'q',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='disappear',x=240,y=420,lim=200,font=40,disp=function()return disappear end,code=pressKey'w',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='tapFX', x=240,y=510,lim=200,font=40,disp=function()return tapFX end, code=pressKey'e',hideF=function()return state==1 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -43,6 +43,6 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="spin", x=1140,y=360,w=120,font=60,fText=CHAR.icon.retry_spin,code=pressKey'space'},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -26,7 +26,7 @@ function scene.keyDown(key,isRep)
|
||||
else
|
||||
ins(keyTime,1,TIME())
|
||||
keyTime[41]=nil
|
||||
SFX.play('click',.3)
|
||||
SFX.play('lock')
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -71,8 +71,8 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='tap',x=640,y=540,w=626,h=260,fText="TAP",color='Z',font=100,code=function(i)love.keypressed('b'..i)end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='tap',x=640,y=540,w=626,h=260,sound='touch',fText="TAP",color='Z',font=100,code=function(i)love.keypressed('b'..i)end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -308,7 +308,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='next', x=240,y=235,lim=200,font=40,disp=function()return nexts end,code=pressKey'q',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='invis',x=240,y=305,lim=200,font=40,disp=function()return invis end,code=pressKey'w',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='fast', x=240,y=375,lim=200,font=30,disp=function()return fast end,code=pressKey'e',hideF=function()return state==1 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -345,6 +345,6 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=160,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -210,7 +210,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='paste', x=1070,y=380,w=310,h=70,color='lB',font=25,code=pressKey'cV'},
|
||||
WIDGET.newButton{name='play_clear', x=1070,y=460,w=310,h=70,color='lY',font=35,code=pressKey'play1'},
|
||||
WIDGET.newButton{name='play_puzzle', x=1070,y=540,w=310,h=70,color='lM',font=35,code=pressKey'play2',hideF=function()return #FIELD[1]==0 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
|
||||
--Rule set
|
||||
WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=CUSval('eventSet'),code=CUSsto('eventSet')},
|
||||
|
||||
@@ -428,8 +428,8 @@ function scene.draw()
|
||||
setFont(55)
|
||||
gc.setColor(1,1,1)
|
||||
for i=1,7 do
|
||||
local skin=SETTING.skin[i]
|
||||
mStr(text.block[i],500+skin%8*80,90+80*int(skin/8))
|
||||
local skin=SETTING.skin[i]-1
|
||||
mStr(text.block[i],580+(skin%8)*80,90+80*int(skin/8))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -481,7 +481,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='prevPg', x=100, y=350,w=160,h=110,color='lG',font=20,code=pressKey'pageup',hideF=function()return page==1 end},
|
||||
WIDGET.newButton{name='nextPg', x=100, y=470,w=160,h=110,color='lG',font=20,code=pressKey'pagedown',hideF=function()return page==#FIELD end},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -224,7 +224,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='paste', x=1140,y=540,w=170,h=80,color='lB',font=50,code=pressKey'cV', fText=CHAR.icon.import},
|
||||
WIDGET.newSwitch{name='mission',x=1150,y=340,lim=280,disp=CUSval('missionKill'),code=CUSrev('missionKill')},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -220,7 +220,7 @@ scene.widgetList={
|
||||
|
||||
WIDGET.newButton{name='copy', x=1140,y=460,w=170,h=80,color='lR',font=50,fText=CHAR.icon.export,code=pressKey'cC',hideF=function()return #BAG==0 end},
|
||||
WIDGET.newButton{name='paste',x=1140,y=550,w=170,h=80,color='lB',font=50,fText=CHAR.icon.import,code=pressKey'cV'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -221,7 +221,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='down', x=1120,y=565,w=80,font=50,fText=CHAR.key.down, code=pressKey'down',hide=not MOBILE},
|
||||
WIDGET.newKey{name='pageup', x=1210,y=475,w=80,font=50,fText=CHAR.icon.toUp, code=pressKey'pageup',hide=not MOBILE},
|
||||
WIDGET.newKey{name='pagedown',x=1210,y=565,w=80,font=50,fText=CHAR.icon.toDown,code=pressKey'pagedown',hide=not MOBILE},
|
||||
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -293,7 +293,7 @@ local function _update_common(dt)
|
||||
for p=1,#PLAYERS do PLAYERS[p]:update(dt)end
|
||||
|
||||
--Fresh royale target
|
||||
if GAME.modeEnv.royaleMode and PLAYERS[1].frameRun%120==0 then
|
||||
if PLAYERS[1].frameRun%120==0 and PLAYERS[1].gameEnv.layout=='royale'then
|
||||
freshMostDangerous()
|
||||
end
|
||||
|
||||
@@ -339,7 +339,7 @@ function scene.draw()
|
||||
VK.draw()
|
||||
|
||||
--Attacking & Being attacked
|
||||
if GAME.modeEnv.royaleMode then
|
||||
if PLAYERS[1].gameEnv.layout=='royale'then
|
||||
local P=PLAYERS[1]
|
||||
gc_setLineWidth(5)
|
||||
gc_setColor(.8,1,0,.2)
|
||||
|
||||
@@ -24,7 +24,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=20,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -4,7 +4,7 @@ local langList={
|
||||
zh_trad="繁體中文",
|
||||
en="English",
|
||||
fr="Français",
|
||||
es="Español\n(Castellano)",
|
||||
es=" Español\n(Castellano)",
|
||||
pt="Português",
|
||||
|
||||
zh_grass="机翻",
|
||||
@@ -33,17 +33,17 @@ function scene.sceneBack()
|
||||
end
|
||||
|
||||
function scene.update(dt)
|
||||
curLang=curLang+dt*0.6
|
||||
curLang=curLang+dt*1.626
|
||||
if curLang>=#languages+1 then
|
||||
curLang=1
|
||||
end
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
setFont(60)
|
||||
love.graphics.setColor(1,1,1,1-curLang%1)
|
||||
setFont(80)
|
||||
love.graphics.setColor(1,1,1,1-curLang%1*2)
|
||||
GC.mStr(languages[curLang-curLang%1],640,20)
|
||||
love.graphics.setColor(1,1,1,curLang%1)
|
||||
love.graphics.setColor(1,1,1,curLang%1*2)
|
||||
GC.mStr(languages[curLang-curLang%1+1]or languages[1],640,20)
|
||||
end
|
||||
|
||||
@@ -53,22 +53,24 @@ local function _setLang(lid)
|
||||
TEXT.clear()
|
||||
TEXT.show(langList[lid],640,360,100,'appear',.626)
|
||||
collectgarbage()
|
||||
if FIRSTLAUNCH then SCN.back()end
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{x=271,y=190,w=346,h=120,font=40, fText=langList.zh, color='O',code=function()_setLang('zh')end},
|
||||
WIDGET.newButton{x=637,y=190,w=346,h=120,font=40, fText=langList.zh_trad, color='F',code=function()_setLang('zh_trad')end},
|
||||
WIDGET.newButton{x=1003,y=190,w=346,h=120,font=40,fText=langList.zh_full, color='R',code=function()_setLang('zh_full')end},
|
||||
WIDGET.newButton{x=271,y=210,w=346,h=100,font=40, fText=langList.en, color='R',code=function()_setLang('en')end},
|
||||
WIDGET.newButton{x=271,y=329,w=346,h=100,font=40, fText=langList.fr, color='F',code=function()_setLang('fr')end},
|
||||
WIDGET.newButton{x=271,y=508,w=346,h=220,font=40, fText=langList.es, color='O',code=function()_setLang('es')end},
|
||||
|
||||
WIDGET.newButton{x=225,y=331,w=255,h=120,font=40, fText=langList.en, color='L',code=function()_setLang('en')end},
|
||||
WIDGET.newButton{x=500,y=331,w=255,h=120,font=40, fText=langList.fr, color='J',code=function()_setLang('fr')end},
|
||||
WIDGET.newButton{x=775,y=331,w=255,h=120,font=33, fText=langList.es, color='G',code=function()_setLang('es')end},
|
||||
WIDGET.newButton{x=1050,y=331,w=255,h=120,font=40,fText=langList.pt, color='A',code=function()_setLang('pt')end},
|
||||
WIDGET.newButton{x=637,y=210,w=346,h=100,font=40, fText=langList.pt, color='G',code=function()_setLang('pt')end},
|
||||
WIDGET.newButton{x=637,y=329,w=346,h=100,font=40, fText=langList.symbol, color='J',code=function()_setLang('symbol')end},
|
||||
WIDGET.newButton{x=637,y=449,w=346,h=100,font=40, fText=langList.zh_yygq, color='L',code=function()_setLang('zh_yygq')end},
|
||||
WIDGET.newButton{x=637,y=568,w=346,h=100,font=40, fText=langList.zh_grass,color='Y',code=function()_setLang('zh_grass')end},
|
||||
|
||||
WIDGET.newButton{x=271,y=472,w=346,h=120,font=45, fText=langList.zh_grass,color='N',code=function()_setLang('zh_grass')end},
|
||||
WIDGET.newButton{x=637,y=472,w=346,h=120,font=45, fText=langList.zh_yygq, color='S',code=function()_setLang('zh_yygq')end},
|
||||
WIDGET.newButton{x=1003,y=472,w=346,h=120,font=45,fText=langList.symbol, color='B',code=function()_setLang('symbol')end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{x=1003,y=210,w=346,h=100,font=40,fText=langList.zh, color='B',code=function()_setLang('zh')end},
|
||||
WIDGET.newButton{x=1003,y=329,w=346,h=100,font=40,fText=langList.zh_full, color='S',code=function()_setLang('zh_full')end},
|
||||
WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='N',code=function()_setLang('zh_trad')end},
|
||||
|
||||
WIDGET.newButton{name='back',x=1003,y=568,w=346,h=100,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -287,7 +287,7 @@ scene.widgetList={
|
||||
WIDGET.newSlider{name='voc', x=1000,y=220,lim=130,w=250,disp=SETval('voc'),code=function(v)SETTING.voc=v VOC.setVol(SETTING.voc)end},
|
||||
WIDGET.newSwitch{name='label',x=1200,y=290,lim=160,disp=function()return showLabel end,code=pressKey'space',},
|
||||
WIDGET.newButton{name='music',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -28,7 +28,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -10,6 +10,7 @@ local function _login()
|
||||
elseif #password==0 then
|
||||
MES.new('error',text.noPassword)return
|
||||
end
|
||||
-- password=STRING.digezt(password)
|
||||
NET.wsconn_user_pswd(email,password)
|
||||
if savePW then
|
||||
saveFile({email,password},'conf/account')
|
||||
@@ -36,7 +37,7 @@ scene.widgetList={
|
||||
passwordBox,
|
||||
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
|
||||
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -30,7 +30,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -158,7 +158,7 @@ scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
||||
WIDGET.newText{name='unranked',x=1200,y=60,color='Y',font=50,align='R'},
|
||||
WIDGET.newButton{name='reset', x=1140,y=540,w=170,h=80,font=25,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -331,7 +331,7 @@ end
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='mod', x=140,y=655,w=220,h=80,font=35,code=goScene'mod'},
|
||||
WIDGET.newButton{name='start',x=1040,y=655,w=180,h=80,font=40,code=pressKey'return',hideF=function()return not mapCam.sel end},
|
||||
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -55,11 +55,10 @@ function scene.keyDown(key,isRep)
|
||||
if key=='return'or key=='space'then
|
||||
if BGM.nowPlay~=bgmList[S]then
|
||||
BGM.play(bgmList[S])
|
||||
if SETTING.bgm>0 then
|
||||
SFX.play('click')
|
||||
end
|
||||
SFX.play('click')
|
||||
else
|
||||
BGM.stop()
|
||||
SFX.play('click')
|
||||
end
|
||||
elseif key=='tab'then
|
||||
SCN.swapTo('launchpad','none')
|
||||
@@ -126,10 +125,10 @@ scene.widgetList={
|
||||
},
|
||||
WIDGET.newSlider{name='bgm', x=760,y=80,w=400,disp=SETval('bgm'),code=function(v)SETTING.bgm=v BGM.setVol(SETTING.bgm)end},
|
||||
WIDGET.newButton{name='up', x=200,y=250,w=120,code=pressKey'up',hideF=function()return selected==1 end,font=60,fText=CHAR.key.up},
|
||||
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',font=65,fText=CHAR.icon.play_pause},
|
||||
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',sound=false,font=65,fText=CHAR.icon.play_pause},
|
||||
WIDGET.newButton{name='down', x=200,y=530,w=120,code=pressKey'down',hideF=function()return selected==#bgmList end,font=60,fText=CHAR.key.down},
|
||||
WIDGET.newButton{name='sound',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -17,7 +17,7 @@ end
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='setting',x=1200,y=160,w=90,h=90,font=60,fText=CHAR.icon.settings,code=goScene'setting_game'},
|
||||
WIDGET.newKey{name='match',x=640,y=500,w=760,h=140,font=60,code=function()MES.new('warn',text.notFinished)end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -30,7 +30,7 @@ scene.widgetList={
|
||||
end
|
||||
end
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -86,7 +86,7 @@ scene.widgetList={
|
||||
--Capacity & Create & Back
|
||||
WIDGET.newSelector{name='capacity', x=1070,y=330,w=310,color='lY',list={2,3,4,5,7,10,17,31,49,99},disp=ROOMval('capacity'),code=ROOMsto('capacity')},
|
||||
WIDGET.newButton{name='create', x=1070,y=480,w=310,h=140,color='lN',font=40,code=_createRoom},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
|
||||
--Special rules
|
||||
WIDGET.newSwitch{name='ospin', x=850, y=850, lim=210,disp=ROOMval('ospin'), code=ROOMrev('ospin')},
|
||||
|
||||
@@ -140,7 +140,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='refresh', x=250,y=630,w=140,h=120,code=_fetchRoom,hideF=function()return fetchTimer>7 end},
|
||||
WIDGET.newKey{name='new', x=510,y=630,w=260,h=120,code=goScene'net_newRoom'},
|
||||
WIDGET.newKey{name='join', x=780,y=630,w=140,h=120,code=pressKey'join',hideF=function()return roomList:getLen()==0 or NET.getlock('enterRoom')end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -36,8 +36,8 @@ function scene.sceneInit(org)
|
||||
("%d(%d) %.2fLPM"):format(S.row,S.dig,S.row/S.time*60),
|
||||
("%d(%d) %.2fAPM"):format(S.atk,S.digatk,S.atk/S.time*60),
|
||||
("%d(%d-%d)"):format(S.pend,S.recv,S.recv-S.pend),
|
||||
("%d/%d/%d/%d"):format(S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
|
||||
("(%d)/%d/%d/%d"):format(S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
|
||||
("[1] %-7d[2] %-7d[3] %-7d[4] %-7d"):format(S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
|
||||
(CHAR.icon.num0InSpin.." %-8d"..CHAR.icon.num1InSpin.." %-8d"..CHAR.icon.num2InSpin.." %-8d"..CHAR.icon.num3InSpin.." %-8d"):format(S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
|
||||
("%d/%d ; %d/%d"):format(S.b2b,S.b3b,S.pc,S.hpc),
|
||||
("%d/%dx/%.2f%%"):format(S.extraPiece,S.maxFinesseCombo,S.finesseRate*20/S.piece),
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='register', x=640, y=640,w=300,h=80,font=40,code=_register,hideF=function()return NET.getlock('register')end},
|
||||
WIDGET.newText{name='registering', x=640, y=605,font=50,hideF=function()return not NET.getlock('register')end},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -130,6 +130,8 @@ function scene.keyDown(key)
|
||||
SFX.play('finesseError',.7)
|
||||
end
|
||||
end
|
||||
elseif key=='up'or key=='down'then
|
||||
listBox:arrowKey(key)
|
||||
else
|
||||
return true
|
||||
end
|
||||
@@ -141,7 +143,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='import',x=350,y=640,w=140,h=80,color='lN',code=pressKey'cV',font=50,fText=CHAR.icon.import},
|
||||
WIDGET.newButton{name='play', x=700,y=640,w=170,h=80,color='lY',code=pressKey'return',font=65,fText=CHAR.icon.play},
|
||||
WIDGET.newButton{name='delete',x=850,y=640,w=80,h=80,color='lR',code=pressKey'delete',font=50,fText=CHAR.icon.trash},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -82,7 +82,7 @@ scene.widgetList={
|
||||
WIDGET.newText{name='notLogin', x=55,y=550,color='dB',align='L',font=30,hideF=function()return WS.status('user')=='running'end},
|
||||
WIDGET.newButton{name='upload', x=190,y=610,w=280,h=90,color='lB',font=25,code=NET.uploadSave,hideF=function()return WS.status('user')~='running'end},
|
||||
WIDGET.newButton{name='download', x=490,y=610,w=280,h=90,color='lB',font=25,code=NET.downloadSave,hideF=function()return WS.status('user')~='running'end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -105,7 +105,7 @@ scene.widgetList={
|
||||
_.sddas,_.sdarr=0,2
|
||||
_.ihs,_.irs,_.ims=false,false,false
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -36,7 +36,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='graphic', x=200, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_video','swipeR')},
|
||||
WIDGET.newButton{name='sound', x=1080, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_sound','swipeL')},
|
||||
|
||||
WIDGET.newButton{name='layout', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
|
||||
WIDGET.newButton{name='style', 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'},
|
||||
@@ -59,7 +59,7 @@ scene.widgetList={
|
||||
end
|
||||
end
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -231,7 +231,7 @@ scene.widgetList={
|
||||
|
||||
WIDGET.newKey{name='restart',x=150,y=670,w=180,h=60,code=function()_setSel(0)end},
|
||||
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=190,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -78,43 +78,42 @@ local function _nextDir(i)
|
||||
end
|
||||
playEgg.hide=not selEggMode
|
||||
end
|
||||
SFX.play('rotate')
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
||||
|
||||
WIDGET.newSelector{name='skinSet',x=780,y=100,w=320,list=SKIN.getList(),disp=SETval('skinSet'),code=SETsto('skinSet')},
|
||||
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(1)end},
|
||||
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(2)end},
|
||||
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(3)end},
|
||||
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(4)end},
|
||||
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(5)end},
|
||||
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(6)end},
|
||||
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(7)end},
|
||||
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(1)end},
|
||||
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(2)end},
|
||||
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(3)end},
|
||||
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(4)end},
|
||||
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(5)end},
|
||||
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(6)end},
|
||||
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(7)end},
|
||||
|
||||
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(1)end},
|
||||
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(2)end},
|
||||
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(3)end},
|
||||
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(4)end},
|
||||
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(5)end},
|
||||
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(6)end},
|
||||
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(7)end},
|
||||
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(1)end},
|
||||
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(2)end},
|
||||
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(3)end},
|
||||
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(4)end},
|
||||
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(5)end},
|
||||
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(6)end},
|
||||
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(7)end},
|
||||
|
||||
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,code=function()_nextDir(1)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,code=function()_nextDir(2)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,code=function()_nextDir(3)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,code=function()_nextDir(4)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,code=function()_nextDir(5)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,code=function()_nextDir(6)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,code=function()_nextDir(7)end,font=50,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(1)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(2)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(3)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(4)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(5)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(6)end,fText=CHAR.icon.retry_spin},
|
||||
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(7)end,fText=CHAR.icon.retry_spin},
|
||||
|
||||
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,
|
||||
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,sound='back',
|
||||
code=function()
|
||||
SETTING.skin={1,7,11,3,14,4,9,1,7,2,6,10,2,13,5,9,15,10,11,3,10,2,16,8,4,10,13,2,8}
|
||||
SFX.play('rotate')
|
||||
end},
|
||||
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,
|
||||
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,sound='back',
|
||||
code=function()
|
||||
for i=1,29 do
|
||||
SETTING.face[i]=0
|
||||
@@ -124,7 +123,7 @@ scene.widgetList={
|
||||
end
|
||||
SFX.play('hold')
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
playEgg,
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='apply', x=1100,y=400,w=180,h=60,code=function()SETTING.sfxPack=sfxPack SFX.load('media/effect/'..sfxPack..'/')end,hideF=function()return SETTING.sfxPack==sfxPack end},
|
||||
WIDGET.newSelector{name='vocPack',x=1100,y=470,w=200,color='lV',list=VOCPACKS,disp=function()return vocPack end,code=function(i)vocPack=i end},
|
||||
WIDGET.newButton{name='apply', x=1100,y=540,w=180,h=60,code=function()SETTING.vocPack=vocPack VOC.load('media/vocal/'..vocPack..'/')end,hideF=function()return SETTING.vocPack==vocPack end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -115,7 +115,7 @@ scene.widgetList={
|
||||
end},
|
||||
WIDGET.newSelector{name='snap', x=750,y=90,w=200,h=80,color='Y',list={1,10,20,40,60,80},disp=function()return snapUnit end,code=function(i)snapUnit=i end},
|
||||
WIDGET.newButton{name='option', x=530,y=190,w=200,h=80,font=60,fText=CHAR.icon.menu,code=function()SCN.go('setting_touchSwitch')end},
|
||||
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='save1', x=475,y=290,w=90,h=70,code=_save1,font=45,fText=CHAR.icon.saveOne},
|
||||
WIDGET.newKey{name='load1', x=585,y=290,w=90,h=70,code=_load1,font=45,fText=CHAR.icon.loadOne},
|
||||
WIDGET.newKey{name='save2', x=695,y=290,w=90,h=70,code=_save2,font=45,fText=CHAR.icon.saveTwo},
|
||||
|
||||
@@ -62,7 +62,7 @@ scene.widgetList={
|
||||
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},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -113,7 +113,7 @@ scene.widgetList={
|
||||
code=function(v)SETTING.fieldSatur=v;applyFieldSatur(SETTING.fieldSatur)end
|
||||
},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -95,7 +95,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -131,7 +131,7 @@ scene.widgetList={
|
||||
end
|
||||
},
|
||||
WIDGET.newButton{name='save',x=820,y=640,w=250,h=80,font=25,code=goScene'savedata'},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -12,6 +12,19 @@ return[=[
|
||||
更自由的攻击系统; 更多消除方式; 可调场地宽度;
|
||||
task-Z(新AI); 自适应UI; 新联网游戏场景切换逻辑
|
||||
|
||||
0.17.1: 醒来 Wake Up
|
||||
新增:
|
||||
--TODO
|
||||
改动:
|
||||
修改选择模式音效
|
||||
优化皮肤设置页面交互效果
|
||||
略微降低master-h模式骨块出现后的难度
|
||||
修复:
|
||||
自定义场地16号色的方块名位置显示错误
|
||||
登录界面读取本地账号密码数据错误
|
||||
策略堆叠模式评级标准不当
|
||||
云存档/读档的一处小问题
|
||||
|
||||
0.17.0: 硬着陆 Hard Landing
|
||||
新增:
|
||||
新模式:策略堆叠(原设计来自游戏Cambridge by Milla, NOT_A_ROBOT移植)
|
||||
@@ -62,6 +75,7 @@ return[=[
|
||||
软降在sddas/sdarr很小的时候行为不正确
|
||||
机翻语言超级消除无行数显示 #462
|
||||
竞速-效率左侧信息颜色问题
|
||||
攻击竞速模式无重力
|
||||
|
||||
0.16.5: 新世界 New World
|
||||
新增:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
return{
|
||||
["apkCode"]=417,
|
||||
["code"]=1700,
|
||||
["string"]="V0.17.0",
|
||||
["apkCode"]=419,
|
||||
["code"]=1701,
|
||||
["string"]="V0.17.1",
|
||||
["room"]="ver A-2",
|
||||
["name"]="硬着陆 Hard Landing",
|
||||
["name"]="醒来 Wake Up",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user