注释后加空格
联网稍微推进
This commit is contained in:
@@ -24,18 +24,18 @@ function scene.keyDown(key)
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Texts
|
||||
-- Texts
|
||||
setFont(20)
|
||||
gc.setColor(COLOR.Z)
|
||||
for i=1,#text.aboutTexts do
|
||||
gc.print(text.aboutTexts[i],62,35*i)
|
||||
end
|
||||
|
||||
--Lib used
|
||||
-- Lib used
|
||||
setFont(15)
|
||||
gc.print(text.used,495,426)--❤Flandre❤
|
||||
gc.print(text.used,495,426)-- ❤Flandre❤
|
||||
|
||||
--Logo
|
||||
-- Logo
|
||||
gc.draw(TEXTURE.title,280,610,.1,.4+.03*sin(TIME()*2.6),nil,580,118)
|
||||
end
|
||||
|
||||
|
||||
@@ -198,31 +198,31 @@ local frontColor={
|
||||
COLOR.lG,COLOR.lB,COLOR.lB,COLOR.lB,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
},--Colored(rank)
|
||||
},-- Colored(rank)
|
||||
rainbow={
|
||||
COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR,
|
||||
COLOR.lO,COLOR.lY,COLOR.lY,COLOR.lY,
|
||||
COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB,
|
||||
COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB,
|
||||
},--Rainbow(rank)
|
||||
},-- Rainbow(rank)
|
||||
color2={
|
||||
COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR,
|
||||
COLOR.lB,COLOR.lB,COLOR.lB,COLOR.lB,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
},--Colored(row)
|
||||
},-- Colored(row)
|
||||
gray={
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
},--Gray
|
||||
},-- Gray
|
||||
black={
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
},--Black
|
||||
},-- Black
|
||||
}
|
||||
local backColor={
|
||||
color1={
|
||||
@@ -230,31 +230,31 @@ local backColor={
|
||||
COLOR.dG,COLOR.dB,COLOR.dB,COLOR.dB,
|
||||
COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP,
|
||||
COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP,
|
||||
},--Colored(rank)
|
||||
},-- Colored(rank)
|
||||
rainbow={
|
||||
COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR,
|
||||
COLOR.dO,COLOR.dY,COLOR.dY,COLOR.dY,
|
||||
COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB,
|
||||
COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB,
|
||||
},--Rainbow(rank)
|
||||
},-- Rainbow(rank)
|
||||
color2={
|
||||
COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR,
|
||||
COLOR.dB,COLOR.dB,COLOR.dB,COLOR.dB,
|
||||
COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP,
|
||||
COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP,
|
||||
},--Colored(row)
|
||||
},-- Colored(row)
|
||||
gray={
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
},--Gray
|
||||
},-- Gray
|
||||
black={
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
},--Black
|
||||
},-- Black
|
||||
}
|
||||
function scene.draw()
|
||||
FONT.set(40)
|
||||
@@ -266,15 +266,15 @@ function scene.draw()
|
||||
gc.print(push,1026,180)
|
||||
|
||||
if state==2 then
|
||||
--Draw no-setting area
|
||||
-- Draw no-setting area
|
||||
gc.setColor(1,0,0,.3)
|
||||
gc.rectangle('fill',15,295,285,340)
|
||||
|
||||
gc.setColor(.9,.9,0)--win
|
||||
gc.setColor(.9,.9,0)-- win
|
||||
elseif state==1 then
|
||||
gc.setColor(.9,.9,.9)--game
|
||||
gc.setColor(.9,.9,.9)-- game
|
||||
elseif state==0 then
|
||||
gc.setColor(.2,.8,.2)--ready
|
||||
gc.setColor(.2,.8,.2)-- ready
|
||||
end
|
||||
gc.setLineWidth(10)
|
||||
gc.rectangle('line',313,33,654,654,18)
|
||||
|
||||
@@ -54,13 +54,13 @@ local tileColor={
|
||||
{.22,.19,.17},
|
||||
}
|
||||
local tileFont={
|
||||
80,80,80,--2/4/8
|
||||
70,70,70,--16/32/64
|
||||
60,60,60,--128/256/512
|
||||
55,55,55,55,--1024/2048/4096/8192
|
||||
50,50,50,--16384/32768/65536
|
||||
45,45,45,--131072/262144/524288
|
||||
30,--1048576
|
||||
80,80,80,-- 2/4/8
|
||||
70,70,70,-- 16/32/64
|
||||
60,60,60,-- 128/256/512
|
||||
55,55,55,55,-- 1024/2048/4096/8192
|
||||
50,50,50,-- 16384/32768/65536
|
||||
45,45,45,-- 131072/262144/524288
|
||||
30,-- 1048576
|
||||
}
|
||||
local tileName={[0]="X","2","4","8","16","32","64","128","256","512","1024","2048","4096","8192","16384","32768","65536","131072","262144","524288","2^20"}
|
||||
local function airExist()
|
||||
@@ -71,7 +71,7 @@ local function airExist()
|
||||
end
|
||||
end
|
||||
local function newTile()
|
||||
--Select position & generate number
|
||||
-- Select position & generate number
|
||||
nextPos=(nextPos+6)%16+1
|
||||
while board[nextPos] do
|
||||
nextPos=(nextPos-4)%16+1
|
||||
@@ -80,11 +80,11 @@ local function newTile()
|
||||
prevPos=nextPos
|
||||
prevSpawnTime=0
|
||||
|
||||
--Fresh score
|
||||
-- Fresh score
|
||||
score=score+2^nextTile
|
||||
TEXT.show("+"..2^nextTile,1130+rnd(-60,60),575+rnd(-30,30),30,'score',1.5)
|
||||
|
||||
--Generate next number
|
||||
-- Generate next number
|
||||
nextCD=nextCD-1
|
||||
if nextCD>0 then
|
||||
nextTile=1
|
||||
@@ -93,10 +93,10 @@ local function newTile()
|
||||
nextCD=rnd(8,12)
|
||||
end
|
||||
|
||||
--Check if board is full
|
||||
-- Check if board is full
|
||||
if airExist() then return end
|
||||
|
||||
--Check if board is locked in all-directions
|
||||
-- Check if board is locked in all-directions
|
||||
for i=1,12 do
|
||||
if board[i]==board[i+4] then
|
||||
return
|
||||
@@ -112,7 +112,7 @@ local function newTile()
|
||||
end
|
||||
end
|
||||
|
||||
--Die.
|
||||
-- Die.
|
||||
state=2
|
||||
SFX.play(maxTile>=10 and 'win' or 'fail')
|
||||
end
|
||||
@@ -139,10 +139,10 @@ local function squash(L)
|
||||
p1=p1+1
|
||||
end
|
||||
else
|
||||
if not L[p1] then--air←2
|
||||
if not L[p1] then-- air←2
|
||||
L[p1],L[p2]=L[p2],false
|
||||
moved=true
|
||||
elseif L[p1]==L[p2] then--2←2
|
||||
elseif L[p1]==L[p2] then-- 2←2
|
||||
L[p1],L[p2]=L[p1]+1,false
|
||||
if L[p1]>maxTile then
|
||||
freshMaxTile()
|
||||
@@ -150,11 +150,11 @@ local function squash(L)
|
||||
L[p2]=false
|
||||
p1=p1+1
|
||||
moved=true
|
||||
elseif p1+1~=p2 then--2←4
|
||||
elseif p1+1~=p2 then-- 2←4
|
||||
L[p1+1],L[p2]=L[p2],false
|
||||
p1=p1+1
|
||||
moved=true
|
||||
else--2,4
|
||||
else-- 2,4
|
||||
p1=p1+1
|
||||
end
|
||||
end
|
||||
@@ -351,14 +351,14 @@ function scene.draw()
|
||||
gc.print(("%.3f"):format(time),1000,10)
|
||||
gc.print(move,1000,45)
|
||||
|
||||
--Progress time list
|
||||
-- Progress time list
|
||||
setFont(20)
|
||||
setColor(.6,.6,.6)
|
||||
for i=1,#progress do
|
||||
gc.print(progress[i],1000,65+20*i)
|
||||
end
|
||||
|
||||
--Repeater
|
||||
-- Repeater
|
||||
gc.setLineWidth(6)
|
||||
setFont(25)
|
||||
for i=1,2 do
|
||||
@@ -377,27 +377,27 @@ function scene.draw()
|
||||
gc.print(repeater.seq[i],1000,313+60*i)
|
||||
end
|
||||
|
||||
--Score
|
||||
-- Score
|
||||
setFont(40)
|
||||
setColor(1,.7,.7)
|
||||
GC.mStr(score,1130,510)
|
||||
|
||||
--Messages
|
||||
-- Messages
|
||||
if state==2 then
|
||||
--Draw no-setting area
|
||||
-- Draw no-setting area
|
||||
setColor(1,0,0,.3)
|
||||
rectangle('fill',15,265,285,140)
|
||||
|
||||
setColor(.9,.9,0)--win
|
||||
setColor(.9,.9,0)-- win
|
||||
elseif state==1 then
|
||||
setColor(.9,.9,.9)--game
|
||||
setColor(.9,.9,.9)-- game
|
||||
elseif state==0 then
|
||||
setColor(.2,.8,.2)--ready
|
||||
setColor(.2,.8,.2)-- ready
|
||||
end
|
||||
gc.setLineWidth(10)
|
||||
rectangle('line',310,30,660,660)
|
||||
|
||||
--Board
|
||||
-- Board
|
||||
for i=1,16 do
|
||||
if board[i] then
|
||||
local x,y=1+(i-1)%4,int((i+3)/4)
|
||||
@@ -429,7 +429,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Next indicator
|
||||
-- Next indicator
|
||||
setColor(1,1,1)
|
||||
if nextCD<=12 then
|
||||
for i=1,nextCD do
|
||||
@@ -437,7 +437,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Next
|
||||
-- Next
|
||||
setFont(40)
|
||||
gc.print("Next",50,195)
|
||||
if nextTile>1 then
|
||||
@@ -446,27 +446,27 @@ function scene.draw()
|
||||
setFont(70)
|
||||
GC.mStr(tileName[nextTile],220,175)
|
||||
|
||||
--Skip CoolDown
|
||||
-- Skip CoolDown
|
||||
if skipper.cd and skipper.cd>0 then
|
||||
setFont(50)
|
||||
setColor(1,1,.5)
|
||||
GC.mStr(skipper.cd,155,600)
|
||||
end
|
||||
|
||||
--Skip mark
|
||||
-- Skip mark
|
||||
if skipper.used then
|
||||
setColor(1,1,.5)
|
||||
gc.circle('fill',280,675,10)
|
||||
end
|
||||
|
||||
--New tile position
|
||||
-- New tile position
|
||||
local x,y=1+(prevPos-1)%4,int((prevPos+3)/4)
|
||||
gc.setLineWidth(8)
|
||||
setColor(.2,.8,0,prevSpawnTime)
|
||||
local d=25-prevSpawnTime*25
|
||||
rectangle('line',x*160+163-d,y*160-117-d,154+2*d,154+2*d,15)
|
||||
|
||||
--Touch control border line
|
||||
-- Touch control border line
|
||||
if tapControl then
|
||||
gc.setLineWidth(6)
|
||||
setColor(1,1,1,.2)
|
||||
|
||||
@@ -96,11 +96,11 @@ function scene.draw()
|
||||
end
|
||||
|
||||
if state==2 then
|
||||
gc.setColor(.9,.9,0)--win
|
||||
gc.setColor(.9,.9,0)-- win
|
||||
elseif state==1 then
|
||||
gc.setColor(.9,.9,.9)--game
|
||||
gc.setColor(.9,.9,.9)-- game
|
||||
elseif state==0 then
|
||||
gc.setColor(.2,.8,.2)--ready
|
||||
gc.setColor(.2,.8,.2)-- ready
|
||||
end
|
||||
|
||||
FONT.set(100)
|
||||
|
||||
@@ -130,15 +130,15 @@ scene.touchUp=scene.mouseDown
|
||||
|
||||
function scene.draw()
|
||||
gc.push('transform')
|
||||
--origin pos:0,140; scale:4
|
||||
-- origin pos:0,140; scale:4
|
||||
gc.translate(280,0)
|
||||
gc.scale(8)
|
||||
|
||||
--Draw board
|
||||
-- Draw board
|
||||
gc.setColor(COLOR.dX)
|
||||
gc.rectangle('fill',0,0,90,90)
|
||||
|
||||
--Draw target area
|
||||
-- Draw target area
|
||||
gc.setColor(1,1,1,math.sin((TIME()-placeTime)*5)*.1+.15)
|
||||
if target then
|
||||
gc.rectangle('fill',(target-1)%3*30,int((target-1)/3)*30,30,30)
|
||||
@@ -146,7 +146,7 @@ function scene.draw()
|
||||
gc.rectangle('fill',0,0,90,90)
|
||||
end
|
||||
|
||||
--Draw cursor
|
||||
-- Draw cursor
|
||||
if curX then
|
||||
gc.setColor(1,1,1,.3)
|
||||
gc.rectangle('fill',(curX-1)%3*30+(curx-1)%3*10-.5,int((curX-1)/3)*30+int((curx-1)/3)*10-.5,11,11)
|
||||
@@ -181,7 +181,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Draw board line
|
||||
-- Draw board line
|
||||
gc.setLineWidth(.8)
|
||||
for x=0,9 do
|
||||
gc.setColor(1,1,1,x%3==0 and 1 or .3)
|
||||
@@ -189,7 +189,7 @@ function scene.draw()
|
||||
gc.line(0,10*x,90,10*x)
|
||||
end
|
||||
|
||||
--Draw last pos
|
||||
-- Draw last pos
|
||||
if lastX then
|
||||
gc.setColor(.5,1,.4,.8)
|
||||
local r=.5+.5*math.sin(TIME()*6.26)
|
||||
@@ -198,7 +198,7 @@ function scene.draw()
|
||||
gc.pop()
|
||||
|
||||
if gameover then
|
||||
--Draw result
|
||||
-- Draw result
|
||||
FONT.set(60)
|
||||
if gameover==0 then
|
||||
gc.setColor(1,.6,.6)
|
||||
@@ -211,7 +211,7 @@ function scene.draw()
|
||||
GC.mStr("TIE",1140,240)
|
||||
end
|
||||
else
|
||||
--Draw current round mark
|
||||
-- Draw current round mark
|
||||
gc.setColor(COLOR.X)
|
||||
gc.rectangle('fill',80,80,160,160)
|
||||
gc.setColor(COLOR.Z)
|
||||
|
||||
@@ -12,9 +12,9 @@ local keySounds={
|
||||
|
||||
local scene={}
|
||||
|
||||
local reg--register
|
||||
local val--result value
|
||||
local sym--symbol
|
||||
local reg-- register
|
||||
local val-- result value
|
||||
local sym-- symbol
|
||||
|
||||
local function _autoReturn()
|
||||
if reg and sym then
|
||||
|
||||
@@ -75,24 +75,24 @@ function scene.update()
|
||||
end
|
||||
|
||||
local scoreColor={
|
||||
'Z',--0
|
||||
'A',--20
|
||||
'N',--40
|
||||
'B',--60
|
||||
'P',--80
|
||||
'W',--100
|
||||
'R','F','O','Y','lA',--200
|
||||
'lN','lB','lP','lW','lR',--300
|
||||
'lF','lO','lY','dA','dN',--400
|
||||
'dB','dP','dW','dR','dF',--500
|
||||
'dY','lH','H','dH',--before 600, black after
|
||||
'Z',-- 0
|
||||
'A',-- 20
|
||||
'N',-- 40
|
||||
'B',-- 60
|
||||
'P',-- 80
|
||||
'W',-- 100
|
||||
'R','F','O','Y','lA',-- 200
|
||||
'lN','lB','lP','lW','lR',-- 300
|
||||
'lF','lO','lY','dA','dN',-- 400
|
||||
'dB','dP','dW','dR','dF',-- 500
|
||||
'dY','lH','H','dH',-- before 600, black after
|
||||
}
|
||||
function scene.draw()
|
||||
--Spawn area
|
||||
-- Spawn area
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.rectangle('fill',85,0,190,720)
|
||||
|
||||
--Power & Angle
|
||||
-- Power & Angle
|
||||
gc.setColor(COLOR.Z)
|
||||
if state~=2 then
|
||||
gc.setLineWidth(2)
|
||||
@@ -104,7 +104,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Info
|
||||
-- Info
|
||||
FONT.set(40)
|
||||
if combo>1 then
|
||||
gc.setColor(1,1,.6)
|
||||
@@ -113,15 +113,15 @@ function scene.draw()
|
||||
gc.setColor(COLOR[scoreColor[int(score/20)+1] or 'D'])
|
||||
gc.print(score,300,30)
|
||||
|
||||
--Cannon ball
|
||||
-- Cannon ball
|
||||
gc.circle('fill',x,y,15)
|
||||
|
||||
--Arrow
|
||||
-- Arrow
|
||||
if y<-15 then
|
||||
gc.print("↑",x-20.5,0)
|
||||
end
|
||||
|
||||
--Target
|
||||
-- Target
|
||||
gc.setColor(1,1,.4)
|
||||
gc.circle('fill',ex,ey,15)
|
||||
end
|
||||
|
||||
@@ -27,13 +27,13 @@ local commands={} do
|
||||
details: an array of strings containing documents, shows when user types 'help [command]'.
|
||||
]]
|
||||
|
||||
local cmdList={}--List of all non-alias commands
|
||||
local cmdList={}-- List of all non-alias commands
|
||||
|
||||
--Basic
|
||||
-- Basic
|
||||
commands.help={
|
||||
code=function(arg)
|
||||
if #arg>0 then
|
||||
--help [command]
|
||||
-- help [command]
|
||||
if commands[arg] then
|
||||
if commands[arg].description then
|
||||
log{C.H,("%s"):format(commands[arg].description)}
|
||||
@@ -47,7 +47,7 @@ local commands={} do
|
||||
log{C.Y,("No command called '%s'"):format(arg)}
|
||||
end
|
||||
else
|
||||
--help
|
||||
-- help
|
||||
for i=1,#cmdList do
|
||||
local cmd=cmdList[i]
|
||||
local body=commands[cmd]
|
||||
@@ -111,8 +111,8 @@ local commands={} do
|
||||
},
|
||||
}
|
||||
|
||||
--File
|
||||
do--tree
|
||||
-- File
|
||||
do-- tree
|
||||
local function tree(path,name,depth)
|
||||
local info=love.filesystem.getInfo(path..name)
|
||||
if info.type=='file' then
|
||||
@@ -144,7 +144,7 @@ local commands={} do
|
||||
},
|
||||
}
|
||||
end
|
||||
do--del
|
||||
do-- del
|
||||
local function delFile(name)
|
||||
if love.filesystem.remove(name) then
|
||||
log{C.Y,("Deleted: '%s'"):format(name)}
|
||||
@@ -231,7 +231,7 @@ local commands={} do
|
||||
end
|
||||
commands.mv={
|
||||
code=function(arg)
|
||||
--Check arguments
|
||||
-- Check arguments
|
||||
arg=arg:split(" ")
|
||||
if #arg>2 then
|
||||
log{C.lY,"Warning: file names must have no spaces"}
|
||||
@@ -241,7 +241,7 @@ local commands={} do
|
||||
return
|
||||
end
|
||||
|
||||
--Check file exist
|
||||
-- Check file exist
|
||||
local info
|
||||
info=love.filesystem.getInfo(arg[1])
|
||||
if not (info and info.type=='file') then
|
||||
@@ -254,21 +254,21 @@ local commands={} do
|
||||
return
|
||||
end
|
||||
|
||||
--Read file
|
||||
-- Read file
|
||||
local data,err1=love.filesystem.read('data',arg[1])
|
||||
if not data then
|
||||
log{C.R,("Failed to read file '%s': "):format(arg[1],err1 or "Unknown error")}
|
||||
return
|
||||
end
|
||||
|
||||
--Write file
|
||||
-- Write file
|
||||
local res,err2=love.filesystem.write(arg[2],data)
|
||||
if not res then
|
||||
log{C.R,("Failed to write file: "):format(err2 or "Unknown error")}
|
||||
return
|
||||
end
|
||||
|
||||
--Delete file
|
||||
-- Delete file
|
||||
if not love.filesystem.remove(arg[1]) then
|
||||
log{C.R,("Failed to delete old file ''"):format(arg[1])}
|
||||
return
|
||||
@@ -315,7 +315,7 @@ local commands={} do
|
||||
},
|
||||
}
|
||||
|
||||
--System
|
||||
-- System
|
||||
commands.crash={
|
||||
code=function() error("ERROR") end,
|
||||
description="Manually crash the game",
|
||||
@@ -545,7 +545,7 @@ local commands={} do
|
||||
"Usage: support",
|
||||
},
|
||||
}
|
||||
do--app
|
||||
do-- app
|
||||
local APPs={
|
||||
{
|
||||
code="calc",
|
||||
@@ -754,7 +754,7 @@ local commands={} do
|
||||
end,
|
||||
}
|
||||
|
||||
--Game
|
||||
-- Game
|
||||
commands.rmconf={
|
||||
code=function(key)
|
||||
if #key>0 then
|
||||
@@ -869,7 +869,7 @@ local commands={} do
|
||||
description="Show a random tip",
|
||||
}
|
||||
|
||||
--Network
|
||||
-- Network
|
||||
commands.switchhost={
|
||||
code=function(arg)
|
||||
arg=arg:split(" ")
|
||||
@@ -944,7 +944,7 @@ local combKey={
|
||||
end,
|
||||
}
|
||||
|
||||
--Environment for user's function
|
||||
-- Environment for user's function
|
||||
local userG={
|
||||
timer=TIME,
|
||||
|
||||
@@ -992,7 +992,7 @@ setmetatable(userG.package,dangerousLibMeta)
|
||||
setmetatable(userG.io,dangerousLibMeta)
|
||||
setmetatable(userG.os,dangerousLibMeta)
|
||||
|
||||
--Puzzle box
|
||||
-- Puzzle box
|
||||
local first_key={}
|
||||
local fleg={
|
||||
pw=the_secret,
|
||||
@@ -1028,16 +1028,16 @@ function scene.keyDown(key)
|
||||
local input=STRING.trim(inputBox:getText())
|
||||
if input=="" then return end
|
||||
|
||||
--Write History
|
||||
-- Write History
|
||||
ins(history,input)
|
||||
if history[27] then
|
||||
rem(history,1)
|
||||
end
|
||||
hisPtr=nil
|
||||
|
||||
--Execute
|
||||
-- Execute
|
||||
if input:byte()==35 then
|
||||
--Execute lua code
|
||||
-- Execute lua code
|
||||
log{C.lC,"> "..input}
|
||||
local code,err=loadstring(input:sub(2))
|
||||
if code then
|
||||
@@ -1062,7 +1062,7 @@ function scene.keyDown(key)
|
||||
log{C.R,"[SyntaxErr] ",C.R,err}
|
||||
end
|
||||
else
|
||||
--Execute builtin command
|
||||
-- Execute builtin command
|
||||
log{C.lS,"> "..input}
|
||||
local p=input:find(" ")
|
||||
local cmd,arg
|
||||
@@ -1081,7 +1081,7 @@ function scene.keyDown(key)
|
||||
end
|
||||
inputBox:clear()
|
||||
|
||||
--Insert empty line
|
||||
-- Insert empty line
|
||||
log""
|
||||
elseif key=='up' then
|
||||
if not hisPtr then
|
||||
|
||||
@@ -125,7 +125,7 @@ function scene.update(dt)
|
||||
if dt>.06 then dt=.06 end
|
||||
dt=dt*600
|
||||
|
||||
--Update cubes' position
|
||||
-- Update cubes' position
|
||||
local cy=cubesY
|
||||
local step=speed*dt*.005
|
||||
for i=1,40 do
|
||||
@@ -141,7 +141,7 @@ function scene.update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
--Collision detect
|
||||
-- Collision detect
|
||||
if play then
|
||||
for j=1,40 do
|
||||
local i=(j+lastCube-2)%40+1
|
||||
@@ -159,7 +159,7 @@ function scene.update(dt)
|
||||
end
|
||||
end
|
||||
|
||||
--Screen rotation
|
||||
-- Screen rotation
|
||||
if moveDir~=0 then
|
||||
player=player+moveDir*dt*.003*speed^.8
|
||||
if abs(rot)<.16 or moveDir*rot>0 then
|
||||
@@ -220,42 +220,42 @@ local function _sunStencil()
|
||||
gc.rectangle('fill',-60,-440,120,120)
|
||||
end
|
||||
function scene.draw()
|
||||
--Health bar
|
||||
-- Health bar
|
||||
if life1>0 then
|
||||
gc.setColor(1,0,0)
|
||||
gc.rectangle('fill',640-life1*.64,710,life1*1.28,10)
|
||||
end
|
||||
|
||||
--Draw player
|
||||
-- Draw player
|
||||
if play and inv%8<4 then
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.rectangle('fill',620,670,40,40)
|
||||
end
|
||||
|
||||
--Set screen rotation
|
||||
-- Set screen rotation
|
||||
gc.push('transform')
|
||||
gc.translate(640,690)
|
||||
gc.rotate(rot)
|
||||
|
||||
--Draw sun
|
||||
-- Draw sun
|
||||
gc.setStencilTest('notequal',1)
|
||||
gc.stencil(_sunStencil)
|
||||
gc.setColor(.7,.5,.3)
|
||||
gc.circle('fill',0,-380-sunH,60)
|
||||
gc.setStencilTest()
|
||||
|
||||
--Draw direction
|
||||
-- Draw direction
|
||||
if play then
|
||||
gc.setLineWidth(3)
|
||||
gc.setColor(1,1,1,.1)
|
||||
gc.polygon('fill',-15,30,0,-440,15,30)
|
||||
end
|
||||
|
||||
--Draw Horizon/Direction
|
||||
-- Draw Horizon/Direction
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.line(-942,-440,942,-440)
|
||||
|
||||
--Draw cubes
|
||||
-- Draw cubes
|
||||
for j=1,40 do
|
||||
local i=(j+lastCube-2)%40+1
|
||||
local Y=cubesY[i]
|
||||
@@ -273,7 +273,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Draw menu
|
||||
-- Draw menu
|
||||
if play then
|
||||
setFont(60)
|
||||
mStr(int(score),-300,-640)
|
||||
|
||||
@@ -2,9 +2,9 @@ local gc=love.graphics
|
||||
local rnd,int,max=math.random,math.floor,math.max
|
||||
local setFont,mStr=FONT.set,GC.mStr
|
||||
|
||||
--This mini-game is written for TI-nSpire CX CAS many years ago.
|
||||
--Deliberately, some grammar mistakes and typos in the 'great' list remained.
|
||||
--So no need to correct them.
|
||||
-- This mini-game is written for TI-nSpire CX CAS many years ago.
|
||||
-- Deliberately, some grammar mistakes and typos in the 'great' list remained.
|
||||
-- So no need to correct them.
|
||||
|
||||
local perfect={"Perfect!","Excellent!","Nice!","Good!","Great!","Just!","300"}
|
||||
local great={"Pay attention!","Be carefully!","Teacher behind you!","Feel tired?","You are in danger!","Do your homework!","A good game!","Minecraft!","y=ax^2+bx+c!","No music?","Internet unavailable.","It's raining!","Too hard!","Shorter?","Higher!","English messages!","Hi!","^_^","Drop!","Colorful!",":)","100$","~~~wave~~~","★★★","中文!","NOW!!!!!","Also try the TEN!","I'm a programer!","Also try minesweeperZ!","This si Dropper!","Hold your calculatoor!","Look! UFO!","Bonjour!","[string]","Author:MrZ","Boom!","PvZ!","China!","TI-nspire!","I love LUA!"}
|
||||
@@ -175,7 +175,7 @@ backColor.__index=function(t,lv)
|
||||
end
|
||||
setmetatable(backColor,backColor)
|
||||
function scene.draw()
|
||||
--Background
|
||||
-- Background
|
||||
local lv,height=int(camY/700),camY%700
|
||||
gc.setColor(backColor[lv+1] or COLOR.D)
|
||||
gc.rectangle('fill',0,720,1280,height-700)
|
||||
@@ -205,7 +205,7 @@ function scene.draw()
|
||||
gc.print("Ported / Rewritten / Balanced by MrZ",740,260)
|
||||
end
|
||||
if state~='menu' then
|
||||
--High floor
|
||||
-- High floor
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.setLineWidth(2)
|
||||
local y=690+camY-30*highFloor
|
||||
|
||||
@@ -20,7 +20,7 @@ local keyTime
|
||||
local speed,maxSpeed
|
||||
local arcade,rollSpeed
|
||||
|
||||
local reset=error--function, defined later
|
||||
local reset=error-- function, defined later
|
||||
|
||||
local bgm="secret7th"
|
||||
local tileColor="black"
|
||||
@@ -134,37 +134,37 @@ local generator={
|
||||
Singlestream=function()
|
||||
ins(pos,get1(pos[#pos] or 0))
|
||||
end,
|
||||
Light_Jumpstream=function()--2111
|
||||
Light_Jumpstream=function()-- 2111
|
||||
ins(pos,get2(pos[#pos] or 0))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
end,
|
||||
Dense_Jumpstream=function()--2121
|
||||
Dense_Jumpstream=function()-- 2121
|
||||
ins(pos,get2(pos[#pos] or 0))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get2(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
end,
|
||||
Light_Handstream=function()--3111
|
||||
Light_Handstream=function()-- 3111
|
||||
ins(pos,get3(pos[#pos] or 0))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
end,
|
||||
Dense_Handstream=function()--3121
|
||||
Dense_Handstream=function()-- 3121
|
||||
ins(pos,get3(pos[#pos] or 0))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get2(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
end,
|
||||
Light_Quadstream=function()--4111
|
||||
Light_Quadstream=function()-- 4111
|
||||
ins(pos,1234)
|
||||
ins(pos,get1(pos[#pos-1] or 0))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
ins(pos,get1(pos[#pos]))
|
||||
end,
|
||||
Quadstream=function()--4121
|
||||
Quadstream=function()-- 4121
|
||||
ins(pos,1234)
|
||||
ins(pos,get1(pos[#pos-1] or 0))
|
||||
ins(pos,get2(pos[#pos]))
|
||||
@@ -306,36 +306,36 @@ local function boardStencil() gc.rectangle('fill',300,0,680,720) end
|
||||
function scene.draw()
|
||||
setFont(50)
|
||||
if arcade then
|
||||
--Draw rolling speed
|
||||
-- Draw rolling speed
|
||||
mStr(("%.2f/s"):format(rollSpeed/2),155,490)
|
||||
else
|
||||
--Draw speed
|
||||
-- Draw speed
|
||||
setFont(45)
|
||||
gc.setColor(1,.6,.6)
|
||||
mStr(("%.2f"):format(maxSpeed/60),155,460)
|
||||
gc.setColor(COLOR.Z)
|
||||
mStr(("%.2f"):format(speed/60),155,520)
|
||||
|
||||
--Progress time list
|
||||
-- Progress time list
|
||||
setFont(30)
|
||||
gc.setColor(.6,.6,.6)
|
||||
for i=1,#progress do
|
||||
gc.print(progress[i],1030,120+25*i)
|
||||
end
|
||||
|
||||
--Draw time
|
||||
-- Draw time
|
||||
gc.setColor(COLOR.Z)
|
||||
setFont(45)
|
||||
gc.print(("%.3f"):format(time),1030,70)
|
||||
end
|
||||
|
||||
--Draw mode
|
||||
-- Draw mode
|
||||
if state~=0 then
|
||||
gc.setColor(COLOR.Z)
|
||||
setFont(30)mStr(mode,155,212)
|
||||
end
|
||||
|
||||
--Draw tiles
|
||||
-- Draw tiles
|
||||
gc.stencil(boardStencil)
|
||||
gc.setStencilTest('equal',1)
|
||||
gc.rectangle('fill',300,0,680,720)
|
||||
@@ -351,7 +351,7 @@ function scene.draw()
|
||||
end
|
||||
gc.pop()
|
||||
gc.setStencilTest()
|
||||
--Draw track line
|
||||
-- Draw track line
|
||||
gc.setColor(COLOR.D)
|
||||
gc.setLineWidth(2)
|
||||
for x=1,5 do
|
||||
@@ -363,13 +363,13 @@ function scene.draw()
|
||||
gc.line(300,y,980,y)
|
||||
end
|
||||
|
||||
--Draw red tile
|
||||
-- Draw red tile
|
||||
if diePos then
|
||||
gc.setColor(1,.2,.2)
|
||||
gc.rectangle('fill',130+170*diePos+8,600-height+8,170-16,120-16)
|
||||
end
|
||||
|
||||
--Draw score
|
||||
-- Draw score
|
||||
setFont(100)
|
||||
gc.push('transform')
|
||||
gc.translate(640,26)
|
||||
|
||||
@@ -72,7 +72,7 @@ local function resetBoard()
|
||||
local colors=levels[level].color
|
||||
field.c,field.r=levels[level].c,levels[level].r
|
||||
|
||||
local total=field.r*field.c/2--Total cell count
|
||||
local total=field.r*field.c/2-- Total cell count
|
||||
local pool=TABLE.new(int(total/colors),colors)
|
||||
for i=1,total%colors do pool[i]=pool[i]+1 end
|
||||
for i=1,#pool do pool[i]=pool[i]*2 end
|
||||
@@ -117,7 +117,7 @@ local function addPoint(list,x,y)
|
||||
end
|
||||
end
|
||||
local function checkLink(x1,y1,x2,y2)
|
||||
--Y-X-Y Check
|
||||
-- Y-X-Y Check
|
||||
local bestLen,bestLine=1e99,false
|
||||
do
|
||||
if x1>x2 then x1,y1,x2,y2=x2,y2,x1,y1 end
|
||||
@@ -141,7 +141,7 @@ local function checkLink(x1,y1,x2,y2)
|
||||
::CONTINUE_nextRow::
|
||||
end
|
||||
end
|
||||
--X-Y-X Check
|
||||
-- X-Y-X Check
|
||||
do
|
||||
if y1>y2 then x1,y1,x2,y2=x2,y2,x1,y1 end
|
||||
local ulx,urx,dlx,drx=x1,x1,x2,x2
|
||||
@@ -177,18 +177,18 @@ local function tap(x,y)
|
||||
if line then
|
||||
ins(lines,{time=0,line=line})
|
||||
|
||||
--Clear
|
||||
-- Clear
|
||||
field[y][x]=false
|
||||
field[selY][selX]=false
|
||||
field.remain=field.remain-1
|
||||
field.full=false
|
||||
|
||||
--Score
|
||||
-- Score
|
||||
local s=1000+int(combo^.9)
|
||||
score=score+s
|
||||
TEXT.show("+"..s,1205,600,20,'score')
|
||||
|
||||
--Combo
|
||||
-- Combo
|
||||
if comboTime==0 then
|
||||
combo=0
|
||||
noComboBreak=false
|
||||
@@ -197,7 +197,7 @@ local function tap(x,y)
|
||||
combo=combo+1
|
||||
if combo>maxCombo then maxCombo=combo end
|
||||
|
||||
--Check win
|
||||
-- Check win
|
||||
if field.remain==0 then
|
||||
if noComboBreak then
|
||||
SFX.play('emit')
|
||||
@@ -295,15 +295,15 @@ end
|
||||
|
||||
function scene.draw()
|
||||
gc.push('transform')
|
||||
--Camera
|
||||
-- Camera
|
||||
gc.translate(field.x,field.y)
|
||||
gc.scale(field.w/field.c,field.h/field.r)
|
||||
|
||||
--Background
|
||||
-- Background
|
||||
gc.setColor(COLOR.dX)
|
||||
gc.rectangle('fill',0,0,field.w,field.h)
|
||||
|
||||
--Matrix
|
||||
-- Matrix
|
||||
local mono=state==0 or invis and not field.full
|
||||
if mono then
|
||||
gc_setColor(COLOR.dH)
|
||||
@@ -328,51 +328,51 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Selecting box
|
||||
-- Selecting box
|
||||
gc.setLineWidth(.1)
|
||||
if selX then
|
||||
gc_setColor(1,1,1)
|
||||
gc_rectangle('line',selX-1+.05,selY-1+.05,.9,.9)
|
||||
end
|
||||
|
||||
--Clearing lines
|
||||
-- Clearing lines
|
||||
gc.translate(-.5,-.5)
|
||||
for i=1,#lines do
|
||||
gc_setColor(1,1,1,1-lines[i].time)
|
||||
gc.line(lines[i].line)
|
||||
end
|
||||
gc.pop()
|
||||
--Frame
|
||||
-- Frame
|
||||
|
||||
if state==2 then
|
||||
gc.setColor(.9,.9,0)--win
|
||||
gc.setColor(.9,.9,0)-- win
|
||||
elseif state==1 then
|
||||
gc.setColor(.9,.9,.9)--game
|
||||
gc.setColor(.9,.9,.9)-- game
|
||||
elseif state==0 then
|
||||
gc.setColor(.2,.8,.2)--ready
|
||||
gc.setColor(.2,.8,.2)-- ready
|
||||
end
|
||||
gc.setLineWidth(6)
|
||||
gc.rectangle('line',field.x-5,field.y-5,field.w+10,field.h+10)
|
||||
|
||||
--Draw no-setting area
|
||||
-- Draw no-setting area
|
||||
if state==2 then
|
||||
gc.setColor(1,0,0,.3)
|
||||
gc.rectangle('fill',0,100,155,80)
|
||||
end
|
||||
|
||||
--Maxcombo
|
||||
-- Maxcombo
|
||||
setFont(20)gc.setColor(COLOR.dF)
|
||||
gc.print(maxCombo,1142,1)
|
||||
|
||||
--Time
|
||||
-- Time
|
||||
setFont(30)gc.setColor(COLOR.Z)
|
||||
gc.print(("%.3f"):format(time),1140,20)
|
||||
|
||||
--Progress time list
|
||||
-- Progress time list
|
||||
setFont(15)gc.setColor(.6,.6,.6)
|
||||
for i=1,#progress do gc.print(progress[i],1140,40+20*i) end
|
||||
|
||||
--Combo Rectangle
|
||||
-- Combo Rectangle
|
||||
if comboTime>0 then
|
||||
local r=32*comboTime^.3
|
||||
gc.setColor(1,1,1,min(.6+comboTime,1)*.25)
|
||||
@@ -382,7 +382,7 @@ function scene.draw()
|
||||
gc.rectangle('line',1205-r,440-r,2*r,2*r,4)
|
||||
end
|
||||
|
||||
--Combo Text
|
||||
-- Combo Text
|
||||
setFont(60)
|
||||
if combo>50 then
|
||||
gc.setColor(1,.2,.2,min(.3+comboTime*.5,1)*min(comboTime,1))
|
||||
@@ -391,7 +391,7 @@ function scene.draw()
|
||||
gc.setColor(1,1,max(1-combo*.001,.5),min(.4+comboTime,1))
|
||||
mStr(combo,1205,398)
|
||||
|
||||
--Score
|
||||
-- Score
|
||||
setFont(25)gc.setColor(COLOR.Z)
|
||||
mStr(score1,1205,560)
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local gc=love.graphics
|
||||
|
||||
local state--0=playing, 1=gameover
|
||||
local state-- 0=playing, 1=gameover
|
||||
local timeUsed
|
||||
local level
|
||||
local showNum
|
||||
|
||||
@@ -19,7 +19,7 @@ function scene.sceneInit()
|
||||
end
|
||||
|
||||
function scene.touchDown(x,y,k)
|
||||
--TODO
|
||||
-- TODO
|
||||
end
|
||||
scene.mouseDown=scene.touchDown
|
||||
|
||||
|
||||
@@ -49,11 +49,11 @@ function scene.keyDown(key,isRep)
|
||||
SCN.back()
|
||||
end
|
||||
elseif key=='space' then
|
||||
if state==0 then--main
|
||||
if state==0 then-- main
|
||||
if timer==0 then
|
||||
state=1
|
||||
end
|
||||
elseif state==3 then--play
|
||||
elseif state==3 then-- play
|
||||
local c=(math.floor((pos-ang)*side/tau)-1)%side+1
|
||||
if hit[c]==0 then
|
||||
hit[c]=1
|
||||
@@ -87,12 +87,12 @@ function scene.touchDown()
|
||||
end
|
||||
|
||||
function scene.update()
|
||||
if state==0 then--main
|
||||
if state==0 then-- main
|
||||
ang=ang-.02
|
||||
if ang>0 then ang=ang-tau end
|
||||
if pos<ang then pos=pos+tau end
|
||||
if timer>0 then timer=timer-1 end
|
||||
elseif state==1 or state==2 then--zoom
|
||||
elseif state==1 or state==2 then-- zoom
|
||||
ang=ang+.02+timer/260
|
||||
pos=pos-.016
|
||||
if ang>0 then ang=ang-tau end
|
||||
@@ -115,7 +115,7 @@ function scene.update()
|
||||
state=3
|
||||
end
|
||||
end
|
||||
elseif state==3 then--play
|
||||
elseif state==3 then-- play
|
||||
ang=ang+.02
|
||||
pos=pos-.016
|
||||
if ang>0 then
|
||||
|
||||
@@ -8,11 +8,11 @@ local rnd=math.random
|
||||
local scene={}
|
||||
|
||||
local state
|
||||
local bx,by=640,360--Ball posotion
|
||||
local vx,vy=0,0--Ball velocity
|
||||
local ry=0--Rotation Y
|
||||
local bx,by=640,360-- Ball posotion
|
||||
local vx,vy=0,0-- Ball velocity
|
||||
local ry=0-- Rotation Y
|
||||
|
||||
local p1,p2--Player data
|
||||
local p1,p2-- Player data
|
||||
|
||||
function scene.sceneInit()
|
||||
BG.set('none')
|
||||
@@ -70,9 +70,9 @@ end
|
||||
function scene.touchMove(x,y)(x<640 and p1 or p2).y0=y end
|
||||
function scene.mouseMove(x,y)(x<640 and p1 or p2).y0=y end
|
||||
|
||||
--Rect Area X:150~1130 Y:20~700
|
||||
-- Rect Area X:150~1130 Y:20~700
|
||||
function scene.update()
|
||||
--Update pads
|
||||
-- Update pads
|
||||
local P=p1
|
||||
while P do
|
||||
if P.y0 then
|
||||
@@ -105,7 +105,7 @@ function scene.update()
|
||||
P=P==p1 and p2
|
||||
end
|
||||
|
||||
--Update ball
|
||||
-- Update ball
|
||||
bx,by=bx+vx,by+vy
|
||||
if ry~=0 then
|
||||
if ry>0 then
|
||||
@@ -116,7 +116,7 @@ function scene.update()
|
||||
vy=vy+.1
|
||||
end
|
||||
end
|
||||
if state==1 then--Playing
|
||||
if state==1 then-- Playing
|
||||
if bx<160 or bx>1120 then
|
||||
P=bx<160 and p1 or p2
|
||||
local d=by-P.y
|
||||
@@ -134,7 +134,7 @@ function scene.update()
|
||||
vy,ry=-vy,-ry
|
||||
SFX.play('collect')
|
||||
end
|
||||
elseif state==2 then--Game over
|
||||
elseif state==2 then-- Game over
|
||||
if bx<-120 or bx>1400 or by<-40 or by>760 then
|
||||
P=bx>640 and p1 or p2
|
||||
P.score=P.score+1
|
||||
@@ -150,25 +150,25 @@ function scene.update()
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Draw score
|
||||
-- Draw score
|
||||
gc.setColor(.4,.4,.4)
|
||||
FONT.set(100)
|
||||
GC.mStr(p1.score,470,20)
|
||||
GC.mStr(p2.score,810,20)
|
||||
|
||||
--Draw boundary
|
||||
-- Draw boundary
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.setLineWidth(4)
|
||||
gc.line(134,20,1146,20)
|
||||
gc.line(134,700,1146,700)
|
||||
|
||||
--Draw ball & speed line
|
||||
-- Draw ball & speed line
|
||||
gc.setColor(1,1,1-abs(ry)*.16)
|
||||
gc.circle('fill',bx,by,10)
|
||||
gc.setColor(1,1,1,.1)
|
||||
gc.line(bx+vx*22,by+vy*22,bx+vx*30,by+vy*30)
|
||||
|
||||
--Draw pads
|
||||
-- Draw pads
|
||||
gc.setColor(1,.8,.8)
|
||||
gc.rectangle('fill',134,p1.y-50,16,100)
|
||||
gc.setColor(.8,.8,1)
|
||||
|
||||
@@ -31,12 +31,12 @@ function scene.keyDown(key,isRep)
|
||||
elseif state==2 and #key==1 then
|
||||
key=("qapl"):find(key,nil,true)
|
||||
if key then
|
||||
--BEAUTIFUL LOGIC BELOW:
|
||||
-- BEAUTIFUL LOGIC BELOW:
|
||||
|
||||
--early = error, [UP-key]==[target is up] = correct sfx, else = wrong sfx
|
||||
-- early = error, [UP-key]==[target is up] = correct sfx, else = wrong sfx
|
||||
SFX.play(ct>6 and 'finesseError' or key%2==1==up and 'reach' or 'fail')
|
||||
|
||||
--(early && P2-key || not early && [P1-key]==[target is up]) = P1 win, else P2 win
|
||||
-- (early && P2-key || not early && [P1-key]==[target is up]) = P1 win, else P2 win
|
||||
if ct>6 and key>2 or ct<=6 and key%4<2==up then
|
||||
winner=1; s1=s1+1
|
||||
else
|
||||
@@ -56,20 +56,20 @@ function scene.touchDown(x,y)
|
||||
)
|
||||
end
|
||||
function scene.update()
|
||||
if state==0 then--Menu
|
||||
if state==0 then-- Menu
|
||||
if ct>0 then
|
||||
ct=ct-1
|
||||
elseif rnd()<.00626 then
|
||||
ct=30
|
||||
end
|
||||
elseif state==1 then--Waiting
|
||||
elseif state==1 then-- Waiting
|
||||
ct=ct-1
|
||||
if ct==0 then
|
||||
ct=rnd(26,162)
|
||||
up=rnd()<.5
|
||||
state=2
|
||||
end
|
||||
elseif state==2 then--Winking
|
||||
elseif state==2 then-- Winking
|
||||
ct=ct-1
|
||||
if ct==0 then ct=6 end
|
||||
elseif state==3 then
|
||||
@@ -85,21 +85,21 @@ function scene.update()
|
||||
end
|
||||
end
|
||||
function scene.draw()
|
||||
--Dividing line
|
||||
-- Dividing line
|
||||
gc.setLineWidth(10)
|
||||
gc.setColor(1,1,1,.9)
|
||||
gc.line(640,0,640,720)
|
||||
gc.setColor(1,1,1,.3)
|
||||
gc.line(500,360,780,360)
|
||||
|
||||
--Help
|
||||
-- Help
|
||||
setFont(100)
|
||||
mStr("Q",80,100)
|
||||
mStr("A",80,480)
|
||||
mStr("P",1200,100)
|
||||
mStr("L",1200,480)
|
||||
|
||||
--Score
|
||||
-- Score
|
||||
setFont(80)
|
||||
gc.printf(s1,50,300,200)
|
||||
gc.printf(s2,1030,300,200,'right')
|
||||
|
||||
@@ -128,16 +128,16 @@ function scene.draw()
|
||||
gc.setColor(COLOR.dX)
|
||||
gc.rectangle('fill',310,30,660,660)
|
||||
if state==2 then
|
||||
gc.setColor(.9,.9,0)--win
|
||||
gc.setColor(.9,.9,0)-- win
|
||||
elseif state==1 then
|
||||
gc.setColor(.9,.9,.9)--game
|
||||
gc.setColor(.9,.9,.9)-- game
|
||||
elseif state==0 then
|
||||
gc.setColor(.2,.8,.2)--ready
|
||||
gc.setColor(.2,.8,.2)-- ready
|
||||
end
|
||||
gc.setLineWidth(10)
|
||||
gc.rectangle('line',310,30,660,660)
|
||||
|
||||
--Draw no-setting area
|
||||
-- Draw no-setting area
|
||||
if state==2 then
|
||||
gc.setColor(1,0,0,.3)
|
||||
gc.rectangle('fill',15,295,285,250)
|
||||
|
||||
@@ -232,14 +232,14 @@ function scene.draw()
|
||||
gc.print(("%.3f"):format(time),1026,50)
|
||||
gc.print(score,1026,100)
|
||||
|
||||
--Progress time list
|
||||
-- Progress time list
|
||||
setFont(25)
|
||||
setColor(.7,.7,.7)
|
||||
for i=1,#progress do
|
||||
gc.print(progress[i],1000,140+30*i)
|
||||
end
|
||||
|
||||
--Previews
|
||||
-- Previews
|
||||
if nexts then
|
||||
gc.setColor(COLOR.dX)
|
||||
rectangle('fill',20,450,280,75)
|
||||
@@ -254,7 +254,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
if state==2 then
|
||||
--Draw no-setting area
|
||||
-- Draw no-setting area
|
||||
setColor(1,0,0,.3)
|
||||
rectangle('fill',15,200,285,210)
|
||||
end
|
||||
|
||||
@@ -7,20 +7,20 @@ local ins,rem=table.insert,table.remove
|
||||
local setFont,mStr=FONT.set,GC.mStr
|
||||
|
||||
local tileColor={
|
||||
[-2]=COLOR.R, --Bomb
|
||||
[-1]=COLOR.H, --Stone
|
||||
{.39, 1.0, .39},--Tile 1
|
||||
{.39, .39, 1.0},--Tile 2
|
||||
{1.0, .70, .31},--Tile 3
|
||||
{.94, .31, .31},--Tile 4
|
||||
{.00, .71, .12},--Tile 5
|
||||
{.90, .20, .90},--Tile 6
|
||||
{.94, .47, .39},--Tile 7
|
||||
{.90, .00, .00},--Tile 8
|
||||
{.86, .86, .31},--Tile 9
|
||||
{.78, .31, .00},--Tile 10
|
||||
{.78, .55, .04},--Tile 11
|
||||
{.12, .12, .51},--Tile 12
|
||||
[-2]=COLOR.R, -- Bomb
|
||||
[-1]=COLOR.H, -- Stone
|
||||
{.39, 1.0, .39},-- Tile 1
|
||||
{.39, .39, 1.0},-- Tile 2
|
||||
{1.0, .70, .31},-- Tile 3
|
||||
{.94, .31, .31},-- Tile 4
|
||||
{.00, .71, .12},-- Tile 5
|
||||
{.90, .20, .90},-- Tile 6
|
||||
{.94, .47, .39},-- Tile 7
|
||||
{.90, .00, .00},-- Tile 8
|
||||
{.86, .86, .31},-- Tile 9
|
||||
{.78, .31, .00},-- Tile 10
|
||||
{.78, .55, .04},-- Tile 11
|
||||
{.12, .12, .51},-- Tile 12
|
||||
}
|
||||
local textColor={
|
||||
[-2]=COLOR.dR,
|
||||
@@ -222,29 +222,29 @@ function player:drawBoard()
|
||||
gc.push('transform')
|
||||
gc.translate(self.x,self.y)
|
||||
|
||||
--Board background
|
||||
-- Board background
|
||||
setColor(COLOR.dX)
|
||||
rectangle("fill",0,0,600,600)
|
||||
|
||||
|
||||
--Hold slot
|
||||
-- Hold slot
|
||||
setColor(0,1,1,.4)
|
||||
rectangle("fill",0,0,100,100)
|
||||
gc.setLineWidth(10)
|
||||
setColor(COLOR.lC)
|
||||
rectangle("line",5,5,90,90)
|
||||
|
||||
--Hold tile
|
||||
-- Hold tile
|
||||
setFont(60)
|
||||
drawTile(1,1,self.hold)
|
||||
|
||||
--Board tiles
|
||||
-- Board tiles
|
||||
local b=self.board
|
||||
for y=1,6 do for x=1,6 do
|
||||
drawTile(x,y,b[y][x])
|
||||
end end
|
||||
|
||||
--Board lines
|
||||
-- Board lines
|
||||
setColor(COLOR.Z)
|
||||
gc.setLineWidth(2)
|
||||
for x=1,5 do gc.line(x*100,0,x*100,600) end
|
||||
@@ -252,7 +252,7 @@ function player:drawBoard()
|
||||
gc.setLineWidth(6)
|
||||
rectangle("line",0,0,600,600)
|
||||
|
||||
--Select box
|
||||
-- Select box
|
||||
if self.selectX then
|
||||
local c=tileColor[self.nexts[1]]
|
||||
setColor(c[1],c[2],c[3],.6+.3*math.sin(TIME()*9.29))
|
||||
@@ -325,7 +325,7 @@ function scene.draw()
|
||||
gc.print(("%.3f"):format(player.time),1026,50)
|
||||
gc.print(player.score,1026,100)
|
||||
|
||||
--Progress time list
|
||||
-- Progress time list
|
||||
setFont(25)
|
||||
setColor(.7,.7,.7)
|
||||
for i=1,#player.progress do
|
||||
|
||||
@@ -127,13 +127,13 @@ function scene.draw()
|
||||
gc.translate(0,-WIDGET.scrollPos)
|
||||
setFont(30)
|
||||
|
||||
--Sequence
|
||||
-- Sequence
|
||||
if #MISSION>0 then
|
||||
gc.setColor(1,CUSTOMENV.missionKill and 0 or 1,int(TIME()*6.26)%2)
|
||||
gc.print("#"..#MISSION,70,220)
|
||||
end
|
||||
|
||||
--Field content
|
||||
-- Field content
|
||||
if #FIELD[1]>0 then
|
||||
gc.push('transform')
|
||||
gc.translate(330,240)
|
||||
@@ -159,7 +159,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Sequence
|
||||
-- Sequence
|
||||
if #BAG>0 then
|
||||
gc.setColor(1,1,int(TIME()*6.26)%2)
|
||||
gc.print("#"..#BAG,615,220)
|
||||
@@ -178,7 +178,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='reset', x=1110,y=90,w=230,h=90,color='R',code=pressKey'delete'},
|
||||
WIDGET.newKey{name='mod', x=1110,y=200,w=230,h=90,color='Z',code=pressKey'f1'},
|
||||
|
||||
--Mission / Field / Sequence
|
||||
-- Mission / Field / Sequence
|
||||
WIDGET.newKey{name='mission', x=170,y=180,w=240,h=80,color='N',font=25,code=pressKey'm'},
|
||||
WIDGET.newKey{name='field', x=450,y=180,w=240,h=80,color='A',font=25,code=pressKey'f'},
|
||||
WIDGET.newKey{name='sequence', x=730,y=180,w=240,h=80,color='W',font=25,code=pressKey's'},
|
||||
@@ -186,7 +186,7 @@ scene.widgetList={
|
||||
WIDGET.newText{name='noMsn', x=50, y=220,align='L',color='H',hideF=function() return MISSION[1] end},
|
||||
WIDGET.newText{name='defSeq', x=610,y=220,align='L',color='H',hideF=function() return BAG[1] end},
|
||||
|
||||
--Selectors
|
||||
-- Selectors
|
||||
WIDGET.newSelector{name='opponent', x=170,y=330,w=260,color='R',list=sList.opponent, disp=CUSval('opponent'), code=CUSsto('opponent')},
|
||||
WIDGET.newSelector{name='life', x=170,y=410,w=260,color='R',list=sList.life, disp=CUSval('life'), code=CUSsto('life')},
|
||||
WIDGET.newSelector{name='pushSpeed', x=170,y=520,w=260,color='V',list=sList.pushSpeed, disp=CUSval('pushSpeed'), code=CUSsto('pushSpeed')},
|
||||
@@ -205,17 +205,17 @@ scene.widgetList={
|
||||
WIDGET.newSelector{name='hurry', x=730,y=680,w=260,color='G',list=sList.hurry,disp=CUSval('hurry'),code=CUSsto('hurry')},
|
||||
WIDGET.newSelector{name='hang', x=730,y=760,w=260,color='G',list=sList.hang,disp=CUSval('hang'),code=CUSsto('hang')},
|
||||
|
||||
--Copy / Paste / Start
|
||||
-- Copy / Paste / Start
|
||||
WIDGET.newButton{name='copy', x=1070,y=300,w=310,h=70,color='lR',font=25,code=pressKey'cC'},
|
||||
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,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
|
||||
--Rule set
|
||||
-- Rule set
|
||||
WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=CUSval('eventSet'),code=CUSsto('eventSet')},
|
||||
|
||||
--Special rules
|
||||
-- Special rules
|
||||
WIDGET.newSwitch{name='ospin', x=850, y=830, lim=210,disp=CUSval('ospin'), code=CUSrev('ospin')},
|
||||
WIDGET.newSwitch{name='fineKill', x=850, y=890, lim=210,disp=CUSval('fineKill'), code=CUSrev('fineKill')},
|
||||
WIDGET.newSwitch{name='b2bKill', x=850, y=950, lim=210,disp=CUSval('b2bKill'), code=CUSrev('b2bKill')},
|
||||
@@ -224,14 +224,14 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='deepDrop', x=1170,y=890, lim=250,disp=CUSval('deepDrop'), code=CUSrev('deepDrop')},
|
||||
WIDGET.newSwitch{name='bone', x=1170,y=950, lim=250,disp=CUSval('bone'), code=CUSrev('bone')},
|
||||
|
||||
--Next & Hold
|
||||
-- Next & Hold
|
||||
WIDGET.newSelector{name='holdMode', x=310, y=890, w=300,color='lY',list=sList.holdMode,disp=CUSval('holdMode'),code=CUSsto('holdMode'),hideF=function() return CUSTOMENV.holdCount==0 end},
|
||||
WIDGET.newSlider{name='nextCount', x=140, y=960, lim=130,w=180,axis={0,6,1},disp=CUSval('nextCount'),code=CUSsto('nextCount')},
|
||||
WIDGET.newSlider{name='holdCount', x=140, y=1030,lim=130,w=180,axis={0,6,1},disp=CUSval('holdCount'),code=CUSsto('holdCount')},
|
||||
WIDGET.newSwitch{name='infHold', x=560, y=960, lim=200, disp=CUSval('infHold'),code=CUSrev('infHold'),hideF=function() return CUSTOMENV.holdCount==0 end},
|
||||
WIDGET.newSwitch{name='phyHold', x=560, y=1030,lim=200, disp=CUSval('phyHold'),code=CUSrev('phyHold'),hideF=function() return CUSTOMENV.holdCount==0 end},
|
||||
|
||||
--BG & BGM
|
||||
-- BG & BGM
|
||||
WIDGET.newSelector{name='bg', x=840, y=1090,w=250,color='Y',list=BG.getList(),disp=CUSval('bg'),code=function(i) CUSTOMENV.bg=i BG.set(i) end},
|
||||
WIDGET.newSelector{name='bgm', x=1120,y=1090,w=250,color='Y',list=BGM.getList(),disp=CUSval('bgm'),code=function(i) CUSTOMENV.bgm=i BGM.play(i) end},
|
||||
}
|
||||
|
||||
@@ -8,11 +8,11 @@ local FIELD=FIELD
|
||||
local scene={}
|
||||
|
||||
local curPen
|
||||
local pens={-2,0,-1,[false]=false}--Color (air/smart)
|
||||
local pens={-2,0,-1,[false]=false}-- Color (air/smart)
|
||||
local penMode
|
||||
local penPath={}
|
||||
local penX,penY
|
||||
local demo--If show x
|
||||
local demo-- If show x
|
||||
local page
|
||||
|
||||
local function isEmpty(L)
|
||||
@@ -28,35 +28,35 @@ local penKey={
|
||||
z=0,x=-1,c=-2,
|
||||
}
|
||||
local minoPosCode={
|
||||
[102]=1,[1121]=1,--Z
|
||||
[195]=2,[610]=2,--S
|
||||
[39]=3,[1569]=3,[228]=3,[1091]=3,--J
|
||||
[135]=4,[547]=4,[225]=4,[1602]=4,--L
|
||||
[71]=5,[609]=5,[226]=5,[1122]=5,--T
|
||||
[99]=6,--O
|
||||
[15]=7,[4641]=7,--I
|
||||
[1606]=8,[2273]=8,--Z5
|
||||
[3139]=9,[740]=9,--S5
|
||||
[103]=10,[1633]=10,[230]=10,[1123]=10,--P
|
||||
[199]=11,[611]=11,[227]=11,[1634]=11,--Q
|
||||
[738]=12,[3170]=12,[1252]=12,[1219]=12,--F
|
||||
[2274]=13,[1126]=13,[1249]=13,[1730]=13,--E
|
||||
[1095]=14,[737]=14,[3650]=14,[2276]=14,--T5
|
||||
[167]=15,[1571]=15,[229]=15,[1603]=15,--U
|
||||
[2183]=16,[551]=16,[3617]=16,[3716]=16,--V
|
||||
[614]=17,[3169]=17,[1732]=17,[2243]=17,--W
|
||||
[1250]=18,--X
|
||||
[47]=19,[12833]=19,[488]=19,[9283]=19,--J5
|
||||
[271]=20,[4643]=20,[481]=20,[13378]=20,--L5
|
||||
[79]=21,[5665]=21,[484]=21,[9314]=21,--R
|
||||
[143]=22,[4705]=22,[482]=22,[9794]=22,--Y
|
||||
[110]=23,[9761]=23,[236]=23,[9313]=23,--N
|
||||
[391]=24,[4706]=24,[451]=24,[5698]=24,--H
|
||||
[31]=25,[21025]=25,--I5
|
||||
[7]=26,[545]=26,--I3
|
||||
[67]=27,[35]=27,[97]=27,[98]=27,--C
|
||||
[3]=28,[33]=28,--I2
|
||||
[1]=29,--O1
|
||||
[102]=1,[1121]=1,-- Z
|
||||
[195]=2,[610]=2,-- S
|
||||
[39]=3,[1569]=3,[228]=3,[1091]=3,-- J
|
||||
[135]=4,[547]=4,[225]=4,[1602]=4,-- L
|
||||
[71]=5,[609]=5,[226]=5,[1122]=5,-- T
|
||||
[99]=6,-- O
|
||||
[15]=7,[4641]=7,-- I
|
||||
[1606]=8,[2273]=8,-- Z5
|
||||
[3139]=9,[740]=9,-- S5
|
||||
[103]=10,[1633]=10,[230]=10,[1123]=10,-- P
|
||||
[199]=11,[611]=11,[227]=11,[1634]=11,-- Q
|
||||
[738]=12,[3170]=12,[1252]=12,[1219]=12,-- F
|
||||
[2274]=13,[1126]=13,[1249]=13,[1730]=13,-- E
|
||||
[1095]=14,[737]=14,[3650]=14,[2276]=14,-- T5
|
||||
[167]=15,[1571]=15,[229]=15,[1603]=15,-- U
|
||||
[2183]=16,[551]=16,[3617]=16,[3716]=16,-- V
|
||||
[614]=17,[3169]=17,[1732]=17,[2243]=17,-- W
|
||||
[1250]=18,-- X
|
||||
[47]=19,[12833]=19,[488]=19,[9283]=19,-- J5
|
||||
[271]=20,[4643]=20,[481]=20,[13378]=20,-- L5
|
||||
[79]=21,[5665]=21,[484]=21,[9314]=21,-- R
|
||||
[143]=22,[4705]=22,[482]=22,[9794]=22,-- Y
|
||||
[110]=23,[9761]=23,[236]=23,[9313]=23,-- N
|
||||
[391]=24,[4706]=24,[451]=24,[5698]=24,-- H
|
||||
[31]=25,[21025]=25,-- I5
|
||||
[7]=26,[545]=26,-- I3
|
||||
[67]=27,[35]=27,[97]=27,[98]=27,-- C
|
||||
[3]=28,[33]=28,-- I2
|
||||
[1]=29,-- O1
|
||||
}
|
||||
local function _pTouch(x,y)
|
||||
if not curPen then return end
|
||||
@@ -78,7 +78,7 @@ local function _pDraw()
|
||||
local l=#penPath
|
||||
if l==0 then return end
|
||||
|
||||
local C--Color
|
||||
local C-- Color
|
||||
if penMode==0 then
|
||||
if pens[curPen]==-2 then
|
||||
if l<=5 then
|
||||
@@ -227,7 +227,7 @@ function scene.keyDown(key)
|
||||
MES.new('check',text.exportSuccess)
|
||||
elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then
|
||||
local str=sys.getClipboardText()
|
||||
local p=str:find(":")--ptr*
|
||||
local p=str:find(":")-- ptr*
|
||||
if p then
|
||||
if not str:sub(1,p-1):find("Field") then
|
||||
MES.new('error',text.pasteWrongPlace)
|
||||
@@ -264,13 +264,13 @@ end
|
||||
function scene.draw()
|
||||
gc.translate(200,60)
|
||||
|
||||
--Draw grid
|
||||
-- Draw grid
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.setLineWidth(1)
|
||||
for x=1,9 do gc.line(30*x,0,30*x,600) end
|
||||
for y=0,19 do gc.line(0,30*y,300,30*y) end
|
||||
|
||||
--Draw field
|
||||
-- Draw field
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.setLineWidth(2)
|
||||
gc.rectangle('line',-2,-2,304,604,5)
|
||||
@@ -287,7 +287,7 @@ function scene.draw()
|
||||
end
|
||||
end end
|
||||
|
||||
--Draw pen
|
||||
-- Draw pen
|
||||
if penX and penY then
|
||||
local x,y=30*penX,600-30*penY
|
||||
if curPen==1 or curPen==2 then
|
||||
@@ -305,7 +305,7 @@ function scene.draw()
|
||||
gc.rectangle('fill',x-30,y,30,30,3)
|
||||
end
|
||||
|
||||
--Draw smart pen path
|
||||
-- Draw smart pen path
|
||||
if #penPath>0 then
|
||||
gc.setLineWidth(4)
|
||||
if penMode==0 then
|
||||
@@ -344,23 +344,23 @@ function scene.draw()
|
||||
end
|
||||
gc.translate(-200,-60)
|
||||
|
||||
--Draw page
|
||||
-- Draw page
|
||||
setFont(55)
|
||||
gc.setColor(COLOR.Z)
|
||||
GC.mStr(page,100,530)
|
||||
GC.mStr(#FIELD,100,600)
|
||||
gc.rectangle('fill',50,600,100,6)
|
||||
|
||||
--Draw mouse & pen color
|
||||
-- Draw mouse & pen color
|
||||
gc.translate(560,475)
|
||||
--Mouse
|
||||
-- Mouse
|
||||
gc.setLineWidth(2)
|
||||
gc.rectangle('line',0,0,80,110,5)
|
||||
gc.line(0,40,80,40)
|
||||
gc.line(33,0,33,25,47,25,47,0)
|
||||
gc.line(40,25,40,40)
|
||||
|
||||
--Left button
|
||||
-- Left button
|
||||
if pens[1]>0 then
|
||||
gc.setColor(BLOCK_COLORS[pens[1]])
|
||||
gc.rectangle('fill',5,5,23,30,3)
|
||||
@@ -381,7 +381,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Right button
|
||||
-- Right button
|
||||
if pens[2]>0 then
|
||||
gc.setColor(BLOCK_COLORS[pens[2]])
|
||||
gc.rectangle('fill',52,5,23,30,3)
|
||||
@@ -403,7 +403,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Middle button
|
||||
-- Middle button
|
||||
if pens[3]>0 then
|
||||
gc.setColor(BLOCK_COLORS[pens[3]])
|
||||
gc.rectangle('fill',35,2,10,21,3)
|
||||
@@ -426,7 +426,7 @@ function scene.draw()
|
||||
end
|
||||
gc.translate(-560,-475)
|
||||
|
||||
--Block name
|
||||
-- Block name
|
||||
setFont(55)
|
||||
gc.setColor(1,1,1)
|
||||
for i=1,7 do
|
||||
@@ -440,32 +440,32 @@ scene.widgetList={
|
||||
WIDGET.newText{name='title', x=1020,y=5,lim=480,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle', x=1030,y=50,lim=170,font=35,align='L',color='H'},
|
||||
|
||||
WIDGET.newButton{name='b1', x=580, y=130,w=73,fText="",color='R',code=_setPen(1)},--B1
|
||||
WIDGET.newButton{name='b2', x=660, y=130,w=73,fText="",color='F',code=_setPen(2)},--B2
|
||||
WIDGET.newButton{name='b3', x=740, y=130,w=73,fText="",color='O',code=_setPen(3)},--B3
|
||||
WIDGET.newButton{name='b4', x=820, y=130,w=73,fText="",color='Y',code=_setPen(4)},--B4
|
||||
WIDGET.newButton{name='b5', x=900, y=130,w=73,fText="",color='L',code=_setPen(5)},--B5
|
||||
WIDGET.newButton{name='b6', x=980, y=130,w=73,fText="",color='J',code=_setPen(6)},--B6
|
||||
WIDGET.newButton{name='b7', x=1060,y=130,w=73,fText="",color='G',code=_setPen(7)},--B7
|
||||
WIDGET.newButton{name='b8', x=1140,y=130,w=73,fText="",color='A',code=_setPen(8)},--B8
|
||||
WIDGET.newButton{name='b1', x=580, y=130,w=73,fText="",color='R',code=_setPen(1)},-- B1
|
||||
WIDGET.newButton{name='b2', x=660, y=130,w=73,fText="",color='F',code=_setPen(2)},-- B2
|
||||
WIDGET.newButton{name='b3', x=740, y=130,w=73,fText="",color='O',code=_setPen(3)},-- B3
|
||||
WIDGET.newButton{name='b4', x=820, y=130,w=73,fText="",color='Y',code=_setPen(4)},-- B4
|
||||
WIDGET.newButton{name='b5', x=900, y=130,w=73,fText="",color='L',code=_setPen(5)},-- B5
|
||||
WIDGET.newButton{name='b6', x=980, y=130,w=73,fText="",color='J',code=_setPen(6)},-- B6
|
||||
WIDGET.newButton{name='b7', x=1060,y=130,w=73,fText="",color='G',code=_setPen(7)},-- B7
|
||||
WIDGET.newButton{name='b8', x=1140,y=130,w=73,fText="",color='A',code=_setPen(8)},-- B8
|
||||
|
||||
WIDGET.newButton{name='b9', x=580, y=210,w=73,fText="",color='C',code=_setPen(9)},--B9
|
||||
WIDGET.newButton{name='b10', x=660, y=210,w=73,fText="",color='N',code=_setPen(10)},--B10
|
||||
WIDGET.newButton{name='b11', x=740, y=210,w=73,fText="",color='S',code=_setPen(11)},--B11
|
||||
WIDGET.newButton{name='b12', x=820, y=210,w=73,fText="",color='B',code=_setPen(12)},--B12
|
||||
WIDGET.newButton{name='b13', x=900, y=210,w=73,fText="",color='V',code=_setPen(13)},--B13
|
||||
WIDGET.newButton{name='b14', x=980, y=210,w=73,fText="",color='P',code=_setPen(14)},--B14
|
||||
WIDGET.newButton{name='b15', x=1060,y=210,w=73,fText="",color='M',code=_setPen(15)},--B15
|
||||
WIDGET.newButton{name='b16', x=1140,y=210,w=73,fText="",color='W',code=_setPen(16)},--B16
|
||||
WIDGET.newButton{name='b9', x=580, y=210,w=73,fText="",color='C',code=_setPen(9)},-- B9
|
||||
WIDGET.newButton{name='b10', x=660, y=210,w=73,fText="",color='N',code=_setPen(10)},-- B10
|
||||
WIDGET.newButton{name='b11', x=740, y=210,w=73,fText="",color='S',code=_setPen(11)},-- B11
|
||||
WIDGET.newButton{name='b12', x=820, y=210,w=73,fText="",color='B',code=_setPen(12)},-- B12
|
||||
WIDGET.newButton{name='b13', x=900, y=210,w=73,fText="",color='V',code=_setPen(13)},-- B13
|
||||
WIDGET.newButton{name='b14', x=980, y=210,w=73,fText="",color='P',code=_setPen(14)},-- B14
|
||||
WIDGET.newButton{name='b15', x=1060,y=210,w=73,fText="",color='M',code=_setPen(15)},-- B15
|
||||
WIDGET.newButton{name='b16', x=1140,y=210,w=73,fText="",color='W',code=_setPen(16)},-- B16
|
||||
|
||||
WIDGET.newButton{name='b17', x=580, y=290,w=73,font=40,fText=CHAR.icon.bone, color='dH',code=_setPen(17)},--BONE
|
||||
WIDGET.newButton{name='b18', x=660, y=290,w=73,font=40,fText=CHAR.icon.invis, color='D', code=_setPen(18)},--HIDE
|
||||
WIDGET.newButton{name='b19', x=740, y=290,w=73,font=40,fText=CHAR.icon.bomb, color='lY',code=_setPen(19)},--BOMB
|
||||
WIDGET.newButton{name='b20', x=820, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='H', code=_setPen(20)},--GB1
|
||||
WIDGET.newButton{name='b21', x=900, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='lH',code=_setPen(21)},--GB2
|
||||
WIDGET.newButton{name='b22', x=980, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dV',code=_setPen(22)},--GB3
|
||||
WIDGET.newButton{name='b23', x=1060,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dR',code=_setPen(23)},--GB4
|
||||
WIDGET.newButton{name='b24', x=1140,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dG',code=_setPen(24)},--GB5
|
||||
WIDGET.newButton{name='b17', x=580, y=290,w=73,font=40,fText=CHAR.icon.bone, color='dH',code=_setPen(17)},-- BONE
|
||||
WIDGET.newButton{name='b18', x=660, y=290,w=73,font=40,fText=CHAR.icon.invis, color='D', code=_setPen(18)},-- HIDE
|
||||
WIDGET.newButton{name='b19', x=740, y=290,w=73,font=40,fText=CHAR.icon.bomb, color='lY',code=_setPen(19)},-- BOMB
|
||||
WIDGET.newButton{name='b20', x=820, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='H', code=_setPen(20)},-- GB1
|
||||
WIDGET.newButton{name='b21', x=900, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='lH',code=_setPen(21)},-- GB2
|
||||
WIDGET.newButton{name='b22', x=980, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dV',code=_setPen(22)},-- GB3
|
||||
WIDGET.newButton{name='b23', x=1060,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dR',code=_setPen(23)},-- GB4
|
||||
WIDGET.newButton{name='b24', x=1140,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dG',code=_setPen(24)},-- GB5
|
||||
|
||||
WIDGET.newButton{name='any', x=600, y=400,w=120,color='lH', font=40,code=_setPen(0)},
|
||||
WIDGET.newButton{name='space', x=730, y=400,w=120,color='H', font=55,code=_setPen(-1),fText=CHAR.icon.cross_thick},
|
||||
|
||||
@@ -6,8 +6,8 @@ local ins,rem=table.insert,table.remove
|
||||
|
||||
local scene={}
|
||||
|
||||
local input--Input buffer
|
||||
local cur--Cursor position
|
||||
local input-- Input buffer
|
||||
local cur-- Cursor position
|
||||
|
||||
function scene.sceneInit()
|
||||
input=""
|
||||
@@ -72,7 +72,7 @@ function scene.keyDown(key)
|
||||
end
|
||||
elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then
|
||||
local str=sys.getClipboardText()
|
||||
local p=str:find(":")--ptr*
|
||||
local p=str:find(":")-- ptr*
|
||||
if p then
|
||||
if not str:sub(1,p-1):find("Target") then
|
||||
MES.new('error',text.pasteWrongPlace)
|
||||
@@ -112,22 +112,22 @@ function scene.keyDown(key)
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Draw frame
|
||||
-- Draw frame
|
||||
gc.setLineWidth(2)
|
||||
gc.setColor(COLOR.Z)
|
||||
gc.rectangle('line',58,108,1164,174,5)
|
||||
|
||||
--Draw inputing target
|
||||
-- Draw inputing target
|
||||
setFont(30)
|
||||
gc.setColor(.9,.9,.9)
|
||||
gc.print(input,1200,275)
|
||||
|
||||
--Draw targets
|
||||
-- Draw targets
|
||||
local libColor=BLOCK_COLORS
|
||||
local set=SETTING.skin
|
||||
local L=MISSION
|
||||
local x,y=100,136--Next block pos
|
||||
local cx,cy=100,136--Cursor-center pos
|
||||
local x,y=100,136-- Next block pos
|
||||
local cx,cy=100,136-- Cursor-center pos
|
||||
local i,j=1,#L
|
||||
local count=1
|
||||
repeat
|
||||
@@ -169,7 +169,7 @@ function scene.draw()
|
||||
i=i+1
|
||||
until i>j+1
|
||||
|
||||
--Draw cursor
|
||||
-- Draw cursor
|
||||
gc.setColor(1,1,.4,.6+.4*sin(TIME()*6.26))
|
||||
gc.line(cx-5,cy-20,cx-5,cy+20)
|
||||
end
|
||||
|
||||
@@ -7,7 +7,7 @@ local gc_setColor,gc_print=gc.setColor,gc.print
|
||||
|
||||
local scene={}
|
||||
|
||||
local cur--Cursor position
|
||||
local cur-- Cursor position
|
||||
|
||||
function scene.sceneInit()
|
||||
cur=#BAG
|
||||
@@ -80,7 +80,7 @@ function scene.keyDown(key)
|
||||
end
|
||||
elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then
|
||||
local str=sys.getClipboardText()
|
||||
local p=str:find(":")--ptr*
|
||||
local p=str:find(":")-- ptr*
|
||||
if p then
|
||||
if not str:sub(1,p-1):find("SEQ") then
|
||||
MES.new('error',text.pasteWrongPlace)
|
||||
@@ -114,17 +114,17 @@ end
|
||||
|
||||
local blockCharWidth={} for i=1,#BLOCK_CHARS do blockCharWidth[i]=gc.newText(FONT.get(60),BLOCK_CHARS[i]):getWidth() end
|
||||
function scene.draw()
|
||||
--Draw frame
|
||||
-- Draw frame
|
||||
gc_setColor(COLOR.Z)
|
||||
gc.setLineWidth(2)
|
||||
gc.rectangle('line',100,110,1080,260,5)
|
||||
|
||||
--Draw sequence
|
||||
-- Draw sequence
|
||||
local BLOCK_COLORS=BLOCK_COLORS
|
||||
local skinSetting=SETTING.skin
|
||||
local BAG=BAG
|
||||
local x,y=120,136--Next block pos
|
||||
local cx,cy=120,136--Cursor-center pos
|
||||
local x,y=120,136-- Next block pos
|
||||
local cx,cy=120,136-- Cursor-center pos
|
||||
local i,j=1,#BAG
|
||||
local count=1
|
||||
repeat
|
||||
@@ -159,12 +159,12 @@ function scene.draw()
|
||||
i=i+1
|
||||
until i>j+1
|
||||
|
||||
--Draw lenth
|
||||
-- Draw lenth
|
||||
setFont(40)
|
||||
gc_setColor(COLOR.Z)
|
||||
gc_print(#BAG,120,310)
|
||||
|
||||
--Draw cursor
|
||||
-- Draw cursor
|
||||
gc_setColor(.5,1,.5,.6+.4*sin(TIME()*6.26))
|
||||
gc.line(cx-5,cy-20,cx-5,cy+20)
|
||||
end
|
||||
|
||||
@@ -30,16 +30,16 @@ function scene.update(dt)
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Game scene
|
||||
-- Game scene
|
||||
SCN.scenes.game.draw()
|
||||
|
||||
--Gray screen cover
|
||||
-- Gray screen cover
|
||||
gc.setColor(.12,.12,.12,timer*8-7)
|
||||
gc.replaceTransform(SCR.origin)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.replaceTransform(SCR.xOy)
|
||||
|
||||
--Counter bar
|
||||
-- Counter bar
|
||||
gc.setLineWidth(2)
|
||||
gc.setColor(.9,.9,.9,math.min(1,12*timer,8*(1-timer))*.6)
|
||||
gc.rectangle('line',494,336,292,48,14)
|
||||
|
||||
@@ -8,15 +8,15 @@ local find=string.find
|
||||
|
||||
local scene={}
|
||||
|
||||
local dict--Dict list
|
||||
local result--Result Lable
|
||||
local dict-- Dict list
|
||||
local result-- Result Lable
|
||||
|
||||
local lastTickInput
|
||||
local searchWait--Searching animation timer
|
||||
local selected--Selected option
|
||||
local scrollPos--Scroll down length
|
||||
local searchWait-- Searching animation timer
|
||||
local selected-- Selected option
|
||||
local scrollPos-- Scroll down length
|
||||
|
||||
local lastSearch--Last searched string
|
||||
local lastSearch-- Last searched string
|
||||
|
||||
local typeColor={
|
||||
help=COLOR.Y,
|
||||
|
||||
@@ -130,7 +130,7 @@ local function _checkGameKeyDown(key)
|
||||
return
|
||||
end
|
||||
end
|
||||
return true--No key pressed
|
||||
return true-- No key pressed
|
||||
end
|
||||
|
||||
function scene.sceneInit()
|
||||
@@ -283,19 +283,19 @@ function scene.gamepadUp(key)
|
||||
end
|
||||
|
||||
local function _update_common(dt)
|
||||
--Update control
|
||||
-- Update control
|
||||
touchMoveLastFrame=false
|
||||
VK.update(dt)
|
||||
|
||||
--Update players
|
||||
-- Update players
|
||||
for p=1,#PLAYERS do PLAYERS[p]:update(dt) end
|
||||
|
||||
--Fresh royale target
|
||||
-- Fresh royale target
|
||||
if PLAYERS[1].frameRun%120==0 and PLAYERS[1].gameEnv.layout=='royale' then
|
||||
freshMostDangerous()
|
||||
end
|
||||
|
||||
--Warning check
|
||||
-- Warning check
|
||||
checkWarning(dt)
|
||||
end
|
||||
function scene.update(dt)
|
||||
@@ -328,15 +328,15 @@ function scene.draw()
|
||||
|
||||
local repMode=GAME.replaying or tas
|
||||
|
||||
--Players
|
||||
-- Players
|
||||
for p=1,#PLAYERS do
|
||||
PLAYERS[p]:draw(repMode)
|
||||
end
|
||||
|
||||
--Virtual keys
|
||||
-- Virtual keys
|
||||
VK.draw()
|
||||
|
||||
--Attacking & Being attacked
|
||||
-- Attacking & Being attacked
|
||||
if PLAYERS[1].gameEnv.layout=='royale' then
|
||||
local P=PLAYERS[1]
|
||||
gc_setLineWidth(5)
|
||||
@@ -357,7 +357,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Mode info
|
||||
-- Mode info
|
||||
gc_setColor(1,1,1,.82)
|
||||
gc_draw(TEXTOBJ.modeName,modeTextPos,10,0,modeTextWidK,1)
|
||||
local M=GAME.curMode
|
||||
@@ -378,7 +378,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Replaying
|
||||
-- Replaying
|
||||
if replaying or tas then
|
||||
setFont(20)
|
||||
gc_setColor(1,1,TIME()%.8>.4 and 1 or 0)
|
||||
@@ -387,7 +387,7 @@ function scene.draw()
|
||||
mStr(("%s %sf"):format(repRateStrings[gameRate],PLAYERS[1].frameRun),770,31)
|
||||
end
|
||||
|
||||
--Warning
|
||||
-- Warning
|
||||
drawWarning()
|
||||
end
|
||||
scene.widgetList={
|
||||
|
||||
@@ -138,7 +138,7 @@ pad={x=140,y=65,page=1,
|
||||
{{},{},{},{},{},{},{},{}},
|
||||
{{},{},{},{},{},{},{},{}},
|
||||
},
|
||||
(function()--BGM page
|
||||
(function()-- BGM page
|
||||
local L=BGM.getList()
|
||||
local B={}
|
||||
for y=1,8 do
|
||||
@@ -233,13 +233,13 @@ function scene.draw()
|
||||
gc_translate(pad.x,pad.y)
|
||||
gc_setLineWidth(2)
|
||||
|
||||
--Pad frame
|
||||
-- Pad frame
|
||||
gc_setColor(COLOR.dX)
|
||||
gc_rectangle('fill',-3,-3,726,646,2)
|
||||
gc_setColor(white)
|
||||
gc_rectangle('line',-3,-3,726,646,2)
|
||||
|
||||
--Buttons
|
||||
-- Buttons
|
||||
for y=1,8 do
|
||||
gc_setColor(COLOR.dX)
|
||||
gc_circle('fill',40,(y-1)*80+40,34)
|
||||
|
||||
@@ -5,7 +5,7 @@ local scene={}
|
||||
local loading
|
||||
local progress,maxProgress
|
||||
local t1,t2,animeType
|
||||
local studioLogo--Studio logo text object
|
||||
local studioLogo-- Studio logo text object
|
||||
local logoColor1,logoColor2
|
||||
|
||||
local titleTransform={
|
||||
@@ -28,9 +28,9 @@ local loadingThread=coroutine.wrap(function()
|
||||
end
|
||||
coroutine.yield()
|
||||
coroutine.yield('loadSFX')SFX.load('media/effect/'..SETTING.sfxPack..'/')
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='bass',path='media/sample/bass',base='A2'}--A2~A4
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='lead',path='media/sample/lead',base='A3'}--A3~A5
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='bell',path='media/sample/bell',base='A4'}--A4~A6
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='bass',path='media/sample/bass',base='A2'}-- A2~A4
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='lead',path='media/sample/lead',base='A3'}-- A3~A5
|
||||
coroutine.yield('loadSample')SFX.loadSample{name='bell',path='media/sample/bell',base='A4'}-- A4~A6
|
||||
coroutine.yield('loadVoice')VOC.load('media/vocal/'..SETTING.vocPack..'/')
|
||||
coroutine.yield('loadFont') for i=1,17 do getFont(15+5*i)getFont(15+5*i,'mono') end
|
||||
|
||||
@@ -114,8 +114,8 @@ function scene.sceneInit()
|
||||
studioLogo=GC.newText(getFont(90),"26F Studio")
|
||||
progress=0
|
||||
maxProgress=10
|
||||
t1,t2=0,0--Timer
|
||||
animeType={} for i=1,#SVG_TITLE_FILL do animeType[i]=math.random(#titleTransform) end--Random animation type
|
||||
t1,t2=0,0-- Timer
|
||||
animeType={} for i=1,#SVG_TITLE_FILL do animeType[i]=math.random(#titleTransform) end-- Random animation type
|
||||
end
|
||||
function scene.sceneBack()
|
||||
love.event.quit()
|
||||
|
||||
@@ -3,7 +3,7 @@ local scene={}
|
||||
local verName=("%s %s %s"):format(SYSTEM,VERSION.string,VERSION.name)
|
||||
local tipLength=760
|
||||
local tip=GC.newText(getFont(30),"")
|
||||
local scrollX--Tip scroll position
|
||||
local scrollX-- Tip scroll position
|
||||
|
||||
local widgetX0={
|
||||
-10,-10,-10,-10,
|
||||
@@ -20,14 +20,14 @@ end)
|
||||
function scene.sceneInit()
|
||||
BG.set()
|
||||
|
||||
--Set tip
|
||||
-- Set tip
|
||||
tip:set(text.getTip())
|
||||
scrollX=tipLength
|
||||
|
||||
--Set quick-play-button text
|
||||
-- Set quick-play-button text
|
||||
scene.resize()
|
||||
|
||||
--Create demo player
|
||||
-- Create demo player
|
||||
destroyPlayers()
|
||||
GAME.modeEnv=NONE
|
||||
GAME.setting={}
|
||||
@@ -133,16 +133,16 @@ local function _tipStencil()
|
||||
GC.rectangle('fill',0,0,tipLength,42)
|
||||
end
|
||||
function scene.draw()
|
||||
--Version
|
||||
-- Version
|
||||
setFont(20)
|
||||
GC.setColor(.6,.6,.6)
|
||||
GC.mStr(verName,640,110)
|
||||
|
||||
--Title
|
||||
-- Title
|
||||
GC.setColor(1,1,1)
|
||||
mDraw(TEXTURE.title_color,640,60,nil,.43)
|
||||
|
||||
--Tip
|
||||
-- Tip
|
||||
GC.setColor(COLOR.Z)
|
||||
GC.push('transform')
|
||||
GC.translate(260,650)
|
||||
@@ -155,13 +155,13 @@ function scene.draw()
|
||||
GC.setStencilTest()
|
||||
GC.pop()
|
||||
|
||||
--Player
|
||||
-- Player
|
||||
PLAYERS[1]:draw()
|
||||
|
||||
--Profile
|
||||
-- Profile
|
||||
drawSelfProfile()
|
||||
|
||||
--Player count
|
||||
-- Player count
|
||||
drawOnlinePlayerCount()
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local scene={}
|
||||
|
||||
local selected--Mod selected
|
||||
local selected-- Mod selected
|
||||
|
||||
local function _modComp(a,b)
|
||||
return a.no<b.no
|
||||
@@ -109,7 +109,7 @@ function scene.draw()
|
||||
for _,M in next,MODOPT do
|
||||
GC.push('transform')
|
||||
GC.translate(M.x,M.y)
|
||||
local t=M.time*.01--t range:0~0.1
|
||||
local t=M.time*.01-- t range:0~0.1
|
||||
GC.scale(1+3*t)
|
||||
GC.rotate(t)
|
||||
local rad,side
|
||||
|
||||
@@ -11,11 +11,11 @@ local max,min=math.max,math.min
|
||||
local int,abs=math.floor,math.abs
|
||||
|
||||
local mapCam={
|
||||
sel=false,--Selected mode ID
|
||||
xOy=love.math.newTransform(0,0,0,1),--Transformation for map display
|
||||
keyCtrl=false,--If controlling with key
|
||||
sel=false,-- Selected mode ID
|
||||
xOy=love.math.newTransform(0,0,0,1),-- Transformation for map display
|
||||
keyCtrl=false,-- If controlling with key
|
||||
|
||||
--For auto zooming when enter/leave scene
|
||||
-- For auto zooming when enter/leave scene
|
||||
zoomMethod=false,
|
||||
zoomK=false,
|
||||
}
|
||||
@@ -27,7 +27,7 @@ local scene={}
|
||||
function scene.sceneInit()
|
||||
BG.set()
|
||||
mapCam.zoomK=SCN.prev=='main' and 5 or 1
|
||||
visibleModes={}--1=unlocked, 2=locked but visible
|
||||
visibleModes={}-- 1=unlocked, 2=locked but visible
|
||||
for name,M in next,MODES do
|
||||
if RANKS[name] and M.x then
|
||||
visibleModes[name]=1
|
||||
@@ -113,7 +113,7 @@ function scene.touchMove(x,y,dx,dy)
|
||||
_moveMap(dx,dy)
|
||||
elseif not L[3] then
|
||||
x,y=SCR.xOy:inverseTransformPoint(tc.getPosition(L[1]))
|
||||
dx,dy=SCR.xOy:inverseTransformPoint(tc.getPosition(L[2]))--Not delta!!!
|
||||
dx,dy=SCR.xOy:inverseTransformPoint(tc.getPosition(L[2]))-- Not delta!!!
|
||||
local d=(x-dx)^2+(y-dy)^2
|
||||
if d>100 then
|
||||
d=d^.5
|
||||
@@ -197,7 +197,7 @@ function scene.update()
|
||||
end
|
||||
end
|
||||
|
||||
--noRank/B/A/S/U/X
|
||||
-- noRank/B/A/S/U/X
|
||||
local baseRankColor={
|
||||
[0]={0,0,0,.3},
|
||||
{.2,.4,.6,.3},
|
||||
@@ -207,11 +207,11 @@ local baseRankColor={
|
||||
{.85,.3,.8,.3},
|
||||
}
|
||||
local function _drawModeShape(M,S,drawType)
|
||||
if M.shape==1 then--Rectangle
|
||||
if M.shape==1 then-- Rectangle
|
||||
gc_rectangle(drawType,M.x-S,M.y-S,2*S,2*S)
|
||||
elseif M.shape==2 then--Diamond
|
||||
elseif M.shape==2 then-- Diamond
|
||||
gc_circle(drawType,M.x,M.y,S+12,4)
|
||||
elseif M.shape==3 then--Octagon
|
||||
elseif M.shape==3 then-- Octagon
|
||||
gc_circle(drawType,M.x,M.y,S+6,8)
|
||||
end
|
||||
end
|
||||
@@ -226,7 +226,7 @@ function scene.draw()
|
||||
local R=RANKS
|
||||
local sel=mapCam.sel
|
||||
|
||||
--Lines connecting modes
|
||||
-- Lines connecting modes
|
||||
gc_setLineWidth(8)
|
||||
gc_setColor(1,1,1,.2)
|
||||
for name,M in next,MODES do
|
||||
@@ -238,7 +238,7 @@ function scene.draw()
|
||||
end
|
||||
end
|
||||
|
||||
--Modes
|
||||
-- Modes
|
||||
setFont(80)
|
||||
gc_setLineWidth(4)
|
||||
for name,M in next,MODES do
|
||||
@@ -247,7 +247,7 @@ function scene.draw()
|
||||
local rank=R[name]
|
||||
local S=M.size
|
||||
|
||||
--Draw shapes on map
|
||||
-- Draw shapes on map
|
||||
if unlocked==1 then
|
||||
gc_setColor(baseRankColor[rank])
|
||||
_drawModeShape(M,S,'fill')
|
||||
@@ -255,7 +255,7 @@ function scene.draw()
|
||||
gc_setColor(1,1,sel==name and 0 or 1,unlocked==1 and .8 or .3)
|
||||
_drawModeShape(M,S,'line')
|
||||
|
||||
--Icon
|
||||
-- Icon
|
||||
local icon=M.icon
|
||||
if icon then
|
||||
gc_setColor(unlocked==1 and COLOR.lH or COLOR.dH)
|
||||
@@ -263,7 +263,7 @@ function scene.draw()
|
||||
gc_draw(icon,M.x,M.y,nil,S/length,nil,length,length)
|
||||
end
|
||||
|
||||
--Rank
|
||||
-- Rank
|
||||
if unlocked==1 then
|
||||
name=RANK_CHARS[rank]
|
||||
if name then
|
||||
@@ -277,11 +277,11 @@ function scene.draw()
|
||||
end
|
||||
gc_pop()
|
||||
|
||||
--Score board
|
||||
-- Score board
|
||||
if sel then
|
||||
local M=MODES[sel]
|
||||
gc_setColor(COLOR.lX)
|
||||
gc_rectangle('fill',920,0,360,720,5)--Info board
|
||||
gc_rectangle('fill',920,0,360,720,5)-- Info board
|
||||
gc_setColor(COLOR.Z)
|
||||
setFont(40)GC.mStr(text.modes[sel][1],1100,5)
|
||||
setFont(30)GC.mStr(text.modes[sel][2],1100,50)
|
||||
@@ -292,7 +292,7 @@ function scene.draw()
|
||||
if M.score then
|
||||
mText(TEXTOBJ.highScore,1100,240)
|
||||
gc_setColor(COLOR.X)
|
||||
gc_rectangle('fill',940,290,320,280,5)--Highscore board
|
||||
gc_rectangle('fill',940,290,320,280,5)-- Highscore board
|
||||
local L=M.records
|
||||
gc_setColor(1,1,1)
|
||||
if visibleModes[sel]==2 then
|
||||
|
||||
@@ -18,7 +18,7 @@ local author={
|
||||
local scene={}
|
||||
|
||||
local playing
|
||||
local selected--Music selected
|
||||
local selected-- Music selected
|
||||
|
||||
local bgmList=BGM.getList()
|
||||
if #bgmList==0 then bgmList={"[NO BGM]"} end
|
||||
@@ -69,7 +69,7 @@ end
|
||||
function scene.draw()
|
||||
local t=TIME()
|
||||
|
||||
--Character
|
||||
-- Character
|
||||
GC.push('transform')
|
||||
GC.setColor(1,1,1)
|
||||
GC.translate(906,456)
|
||||
@@ -85,7 +85,7 @@ function scene.draw()
|
||||
|
||||
GC.setColor(COLOR.Z)
|
||||
|
||||
--Scroller
|
||||
-- Scroller
|
||||
GC.setLineWidth(2)
|
||||
GC.line(315,307,315,482)
|
||||
setFont(50)
|
||||
@@ -97,7 +97,7 @@ function scene.draw()
|
||||
if selected>2 then GC.print(bgmList[selected-2],322,350-50) end
|
||||
if selected<#bgmList-1 then GC.print(bgmList[selected+2],322,350+110) end
|
||||
|
||||
--Title
|
||||
-- Title
|
||||
if playing then
|
||||
mDraw(TEXTURE.title,570,190,nil,.42)
|
||||
local a=-t%2.3/2.3
|
||||
@@ -105,7 +105,7 @@ function scene.draw()
|
||||
mDraw(TEXTURE.title_color,570,190,nil,.42+.062-.062*a)
|
||||
end
|
||||
|
||||
--Music player
|
||||
-- Music player
|
||||
if playing then
|
||||
setFont(45)
|
||||
GC.shadedPrint(playing,710,508,'left',2)
|
||||
|
||||
@@ -249,13 +249,13 @@ function scene.update(dt)
|
||||
touchMoveLastFrame=false
|
||||
VK.update(dt)
|
||||
|
||||
--Update players
|
||||
-- Update players
|
||||
for p=1,#PLAYERS do PLAYERS[p]:update(dt) end
|
||||
|
||||
--Warning check
|
||||
-- Warning check
|
||||
checkWarning(dt)
|
||||
|
||||
--Upload stream
|
||||
-- Upload stream
|
||||
if not NET.spectate and P1.frameRun-lastUpstreamTime>8 then
|
||||
local stream
|
||||
if not GAME.rep[upstreamProgress] then
|
||||
@@ -281,15 +281,15 @@ end
|
||||
|
||||
function scene.draw()
|
||||
if playing then
|
||||
--Players
|
||||
-- Players
|
||||
for p=1,#PLAYERS do
|
||||
PLAYERS[p]:draw()
|
||||
end
|
||||
|
||||
--Virtual keys
|
||||
-- Virtual keys
|
||||
VK.draw()
|
||||
|
||||
--Warning
|
||||
-- Warning
|
||||
drawWarning()
|
||||
|
||||
if NET.spectate then
|
||||
@@ -298,10 +298,10 @@ function scene.draw()
|
||||
gc_print(text.spectating,940,0)
|
||||
end
|
||||
else
|
||||
--Users
|
||||
-- Users
|
||||
NETPLY.draw()
|
||||
|
||||
--Ready & Set mark
|
||||
-- Ready & Set mark
|
||||
setFont(50)
|
||||
if NET.roomReadyState=='allReady' then
|
||||
gc_setColor(1,.85,.6,.9)
|
||||
@@ -314,7 +314,7 @@ function scene.draw()
|
||||
mStr(text.waitStream,640,15)
|
||||
end
|
||||
|
||||
--Room info.
|
||||
-- Room info.
|
||||
gc_setColor(1,1,1)
|
||||
setFont(25)
|
||||
gc_printf(NET.roomState.info.name,0,685,1270,'right')
|
||||
@@ -327,14 +327,14 @@ function scene.draw()
|
||||
gc_setColor(0,1,0)gc_print(text.started,230,655)
|
||||
end
|
||||
|
||||
--Profile
|
||||
-- Profile
|
||||
drawSelfProfile()
|
||||
|
||||
--Player count
|
||||
-- Player count
|
||||
drawOnlinePlayerCount()
|
||||
end
|
||||
|
||||
--New message
|
||||
-- New message
|
||||
if newMessageTimer>0 then
|
||||
setFont(40)
|
||||
gc_setColor(.3,.7,1,(newMessageTimer/60)^2)
|
||||
|
||||
@@ -59,7 +59,7 @@ scene.widgetScrollHeight=400
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title',x=40,y=15,font=70,align='L'},
|
||||
|
||||
--Room name/password/description
|
||||
-- Room name/password/description
|
||||
roomName,
|
||||
roomNameBox,
|
||||
password,
|
||||
@@ -67,7 +67,7 @@ scene.widgetList={
|
||||
description,
|
||||
descriptionBox,
|
||||
|
||||
--Selectors
|
||||
-- Selectors
|
||||
WIDGET.newSelector{name='life', x=170,y=410,w=260,color='R',list=sList.life, disp=ROOMval('life'), code=ROOMsto('life')},
|
||||
WIDGET.newSelector{name='pushSpeed', x=170,y=520,w=260,color='V',list=sList.pushSpeed, disp=ROOMval('pushSpeed'), code=ROOMsto('pushSpeed')},
|
||||
WIDGET.newSelector{name='garbageSpeed', x=170,y=600,w=260,color='V',list=sList.pushSpeed, disp=ROOMval('garbageSpeed'), code=ROOMsto('garbageSpeed')},
|
||||
@@ -85,12 +85,12 @@ scene.widgetList={
|
||||
WIDGET.newSelector{name='hurry', x=730,y=680,w=260,color='G',list=sList.hurry,disp=ROOMval('hurry'),code=ROOMval('hurry')},
|
||||
WIDGET.newSelector{name='hang', x=730,y=760,w=260,color='G',list=sList.hang,disp=ROOMval('hang'),code=ROOMval('hang')},
|
||||
|
||||
--Capacity & Create & Back
|
||||
-- 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,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
|
||||
--Special rules
|
||||
-- Special rules
|
||||
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')},
|
||||
@@ -99,10 +99,10 @@ scene.widgetList={
|
||||
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')},
|
||||
|
||||
--Rule set
|
||||
-- Rule set
|
||||
WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=ROOMval('eventSet'),code=ROOMval('eventSet')},
|
||||
|
||||
--Next & Hold
|
||||
-- Next & Hold
|
||||
WIDGET.newSelector{name='holdMode', x=310, y=890, w=300,color='lY',list=sList.holdMode,disp=ROOMval('holdMode'),code=ROOMval('holdMode'),hideF=function() return CUSTOMENV.holdCount==0 end},
|
||||
WIDGET.newSlider{name='nextCount', x=140, y=960, lim=130,w=200,axis={0,6,1},disp=ROOMval('nextCount'),code=ROOMsto('nextCount')},
|
||||
WIDGET.newSlider{name='holdCount', x=140, y=1030,lim=130,w=200,axis={0,6,1},disp=ROOMval('holdCount'),code=ROOMsto('holdCount')},
|
||||
|
||||
@@ -105,11 +105,11 @@ function scene.update(dt)
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Fetching timer
|
||||
-- Fetching timer
|
||||
gc_setColor(1,1,1,.12)
|
||||
gc_arc('fill','pie',250,630,40,-1.5708,-1.5708-.6283*fetchTimer)
|
||||
|
||||
--Room list
|
||||
-- Room list
|
||||
local R=roomList:getSel()
|
||||
if R then
|
||||
gc_translate(870,220)
|
||||
@@ -132,10 +132,10 @@ function scene.draw()
|
||||
gc_translate(-870,-220)
|
||||
end
|
||||
|
||||
--Profile
|
||||
-- Profile
|
||||
drawSelfProfile()
|
||||
|
||||
--Player count
|
||||
-- Player count
|
||||
drawOnlinePlayerCount()
|
||||
end
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ local setFont,mStr=FONT.set,GC.mStr
|
||||
local scene={}
|
||||
|
||||
local page
|
||||
local timer1,timer2--Animation timer
|
||||
local form--Form of clear & spins
|
||||
local radar--Radar chart
|
||||
local val--Radar chart normalizer
|
||||
local standard--Standard hexagon
|
||||
local chartColor--Color of radar chart
|
||||
local rank--Current rank
|
||||
local trophy--Current trophy
|
||||
local trophyColor--Current trophy color
|
||||
local timer1,timer2-- Animation timer
|
||||
local form-- Form of clear & spins
|
||||
local radar-- Radar chart
|
||||
local val-- Radar chart normalizer
|
||||
local standard-- Standard hexagon
|
||||
local chartColor-- Color of radar chart
|
||||
local rank-- Current rank
|
||||
local trophy-- Current trophy
|
||||
local trophyColor-- Current trophy color
|
||||
|
||||
function scene.sceneInit()
|
||||
page=0
|
||||
@@ -41,18 +41,18 @@ function scene.sceneInit()
|
||||
("%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),
|
||||
}
|
||||
--From right-down, 60 degree each
|
||||
-- From right-down, 60 degree each
|
||||
radar={
|
||||
(S.off+S.dig)/S.time*60,--DefPM
|
||||
(S.atk+S.dig)/S.time*60,--ADPM
|
||||
S.atk/S.time*60, --AtkPM
|
||||
S.send/S.time*60, --SendPM
|
||||
S.piece/S.time*24, --Line'PM
|
||||
S.dig/S.time*60, --DigPM
|
||||
(S.off+S.dig)/S.time*60,-- DefPM
|
||||
(S.atk+S.dig)/S.time*60,-- ADPM
|
||||
S.atk/S.time*60, -- AtkPM
|
||||
S.send/S.time*60, -- SendPM
|
||||
S.piece/S.time*24, -- Line'PM
|
||||
S.dig/S.time*60, -- DigPM
|
||||
}
|
||||
val={1/80,1/160,1/120,1/80,1/100,1/40}
|
||||
|
||||
--Normalize Values
|
||||
-- Normalize Values
|
||||
for i=1,6 do
|
||||
val[i]=val[i]*radar[i] if val[i]>1.26 then val[i]=1.26+log(val[i]-.26) end
|
||||
end
|
||||
@@ -70,9 +70,9 @@ function scene.sceneInit()
|
||||
break
|
||||
end
|
||||
end
|
||||
if f==1 then chartColor,f={.4,.9,.5},1.25--Vegetable
|
||||
elseif f==2 then chartColor,f={.4,.7,.9},1 --Normal
|
||||
elseif f==3 then chartColor,f={1,.3,.3},.626 --Diao
|
||||
if f==1 then chartColor,f={.4,.9,.5},1.25-- Vegetable
|
||||
elseif f==2 then chartColor,f={.4,.7,.9},1 -- Normal
|
||||
elseif f==3 then chartColor,f={1,.3,.3},.626 -- Diao
|
||||
end
|
||||
standard={
|
||||
120*.5*f, 120*3^.5*.5*f,
|
||||
@@ -187,7 +187,7 @@ function scene.draw()
|
||||
SCN.scenes.game.draw()
|
||||
end
|
||||
|
||||
--Dark BG
|
||||
-- Dark BG
|
||||
local _=timer1
|
||||
if GAME.result then _=_*.76 end
|
||||
gc.setColor(.12,.12,.12,_)
|
||||
@@ -197,13 +197,13 @@ function scene.draw()
|
||||
|
||||
gc.setColor(.97,.97,.97,timer1)
|
||||
|
||||
--Result Text
|
||||
-- Result Text
|
||||
mDraw(GAME.result and TEXTOBJ[GAME.result] or TEXTOBJ.pause,640,70-10*(5-timer1*5)^1.5)
|
||||
|
||||
--Mode Info (outside)
|
||||
-- Mode Info (outside)
|
||||
gc.draw(TEXTOBJ.modeName,745-TEXTOBJ.modeName:getWidth(),143)
|
||||
|
||||
--Level rank
|
||||
-- Level rank
|
||||
if RANK_CHARS[GAME.rank] then
|
||||
gc.push('transform')
|
||||
gc.translate(1050,5)
|
||||
@@ -221,13 +221,13 @@ function scene.draw()
|
||||
mDraw(tasText,870,395,.3,2.6)
|
||||
end
|
||||
|
||||
--Big info frame
|
||||
-- Big info frame
|
||||
if PLAYERS[1].frameRun>=180 then
|
||||
gc.push('transform')
|
||||
gc.translate(560,205)
|
||||
gc.setLineWidth(2)
|
||||
|
||||
--Pause Info (outside)
|
||||
-- Pause Info (outside)
|
||||
setFont(25)
|
||||
if GAME.pauseCount>0 then
|
||||
gc.setColor(.97,.97,.97,timer1*.06)
|
||||
@@ -237,20 +237,20 @@ function scene.draw()
|
||||
mStr(("%s:[%d] %.2fs"):format(text.pauseCount,GAME.pauseCount,GAME.pauseTime),305,389)
|
||||
end
|
||||
|
||||
--Pages
|
||||
-- Pages
|
||||
if page==0 then
|
||||
--Frame
|
||||
-- Frame
|
||||
gc.setColor(.97,.97,.97,timer2*.06)
|
||||
gc.rectangle('fill',-5,-5,620,380,8)
|
||||
gc.setColor(.97,.97,.97,timer2)
|
||||
gc.rectangle('line',-5,-5,620,380,8)
|
||||
|
||||
--Game statistics
|
||||
-- Game statistics
|
||||
gc.push('transform')
|
||||
gc.scale(.85)
|
||||
gc.setLineWidth(2)
|
||||
|
||||
--Stats
|
||||
-- Stats
|
||||
_=form
|
||||
setFont(30)
|
||||
gc.setColor(.97,.97,.97,timer2)
|
||||
@@ -259,7 +259,7 @@ function scene.draw()
|
||||
gc.printf(_[i],210,43*(i-1)+2,500,'right')
|
||||
end
|
||||
|
||||
--Finesse rank & trophy
|
||||
-- Finesse rank & trophy
|
||||
if rank then
|
||||
setFont(40)
|
||||
gc.setColor(.7,.7,.7,timer2)
|
||||
@@ -272,12 +272,12 @@ function scene.draw()
|
||||
end
|
||||
gc.pop()
|
||||
elseif page==1 then
|
||||
--Radar Chart
|
||||
-- Radar Chart
|
||||
gc.setLineWidth(1)
|
||||
gc.push('transform')
|
||||
gc.translate(310,185)
|
||||
|
||||
--Polygon
|
||||
-- Polygon
|
||||
gc.push('transform')
|
||||
gc.scale((3-2*timer2)*timer2)
|
||||
gc.setColor(.97,.97,.97,timer2*(.5+.3*sin(TIME()*6.26)))
|
||||
@@ -294,7 +294,7 @@ function scene.draw()
|
||||
gc.line(val[11],val[12],val[1],val[2])
|
||||
gc.pop()
|
||||
|
||||
--Texts
|
||||
-- Texts
|
||||
local C
|
||||
_=TIME()%6.2832
|
||||
if _>3.142 then
|
||||
@@ -314,7 +314,7 @@ function scene.draw()
|
||||
gc.pop()
|
||||
end
|
||||
|
||||
--Mods
|
||||
-- Mods
|
||||
gc.push('transform')
|
||||
gc.translate(131,600)
|
||||
gc.scale(.65)
|
||||
|
||||
@@ -8,7 +8,7 @@ local function _parseCB()
|
||||
local _
|
||||
local s=love.system.getClipboardText()
|
||||
|
||||
--Decode
|
||||
-- Decode
|
||||
s=STRING.unpackText(s)
|
||||
if not s then MES.new('error',text.dataCorrupted)return end
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ end
|
||||
function scene.draw()
|
||||
gc.translate(550,600)
|
||||
|
||||
--Testing grid line
|
||||
-- Testing grid line
|
||||
gc.setLineWidth(4)
|
||||
gc.setColor(1,1,1,.4)
|
||||
gc.line(0,0,400,0)
|
||||
@@ -71,7 +71,7 @@ function scene.draw()
|
||||
gc.line(0,-10,0,90)
|
||||
gc.line(400,-10,400,90)
|
||||
|
||||
--O mino animation
|
||||
-- O mino animation
|
||||
gc.setColor(1,1,1)
|
||||
local O=SKIN.lib[SETTING.skinSet][SETTING.skin[6]]
|
||||
gc.draw(O,40*pos,0,nil,40/30)
|
||||
|
||||
@@ -13,7 +13,7 @@ function scene.draw()
|
||||
gc.push('transform')
|
||||
gc.translate(410,540-WIDGET.scrollPos)
|
||||
|
||||
--Draw mino
|
||||
-- Draw mino
|
||||
local t=TIME()
|
||||
local b=math.floor(t*2)%16+1
|
||||
gc.setShader(SHADER.blockSatur)
|
||||
@@ -23,7 +23,7 @@ function scene.draw()
|
||||
mDraw(SKIN.lib[SETTING.skinSet][b%16+1],0,0,t%6.2832,2)
|
||||
gc.setShader()
|
||||
|
||||
--Draw center
|
||||
-- Draw center
|
||||
gc.setColor(1,1,1)
|
||||
mDraw(RSlist[SETTING.RS].centerTex,0,0,0,1.2)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ local mStr=GC.mStr
|
||||
|
||||
local scene={}
|
||||
|
||||
local selected--if waiting for key
|
||||
local selected-- if waiting for key
|
||||
local keyList
|
||||
|
||||
local keyNames={
|
||||
|
||||
@@ -4,7 +4,7 @@ local sin=math.sin
|
||||
|
||||
local scene={}
|
||||
|
||||
local last1,last2--Last touch/sound time
|
||||
local last1,last2-- Last touch/sound time
|
||||
local sfxPack=SETTING.sfxPack
|
||||
local vocPack=SETTING.vocPack
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ local scene={}
|
||||
|
||||
local defaultSetSelect
|
||||
local snapUnit=1
|
||||
local selected--Button selected
|
||||
local selected-- Button selected
|
||||
|
||||
local function _save1()
|
||||
saveFile(VK_ORG,'conf/vkSave1')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local scene={}
|
||||
|
||||
local form--Form of clear & spins
|
||||
local item--Detail datas
|
||||
local form-- Form of clear & spins
|
||||
local item-- Detail datas
|
||||
|
||||
function scene.sceneInit()
|
||||
BG.set()
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local scene={}
|
||||
|
||||
function scene.draw()
|
||||
--QR Code frame
|
||||
-- QR Code frame
|
||||
GC.setLineWidth(2)
|
||||
GC.rectangle('line',298,98,263,263)
|
||||
GC.rectangle('line',718,318,250,250)
|
||||
|
||||
--Support text
|
||||
-- Support text
|
||||
GC.setColor(1,1,1,MATH.sin(TIME()*20)*.3+.6)
|
||||
setFont(30)
|
||||
GC.mStr(text.support,430+MATH.sin(TIME()*4)*20,363)
|
||||
|
||||
Reference in New Issue
Block a user