小游戏改名小程序
This commit is contained in:
171
parts/scenes/app_cmd.lua
Normal file
171
parts/scenes/app_cmd.lua
Normal file
@@ -0,0 +1,171 @@
|
||||
local gc=love.graphics
|
||||
local int=math.floor
|
||||
local ins=table.insert
|
||||
|
||||
local inputBox=WIDGET.newInputBox{name="input",x=40,y=650,w=1200,h=50}
|
||||
local outputBox=WIDGET.newTextBox{name="output",x=40,y=30,w=1200,h=600,font=25,lineH=25,fix=true}
|
||||
outputBox:push("Techmino Shell")
|
||||
outputBox:push("©2020 26F Studio some rights reserved")
|
||||
local history,hisPtr={"help"}
|
||||
|
||||
local scene={}
|
||||
|
||||
local function log(str)
|
||||
outputBox:push(str)
|
||||
end
|
||||
local userEnv={
|
||||
print=log,
|
||||
math=math,
|
||||
table=table,
|
||||
string=string,
|
||||
}
|
||||
|
||||
function scene.sceneInit()
|
||||
TASK.new(function()YIELD()WIDGET.sel=inputBox end)
|
||||
BG.set("none")
|
||||
end
|
||||
|
||||
local commands={
|
||||
--Basic commands
|
||||
help=function()
|
||||
log"1.Type in commands and press enter"
|
||||
log"e.g. echo hihihi"
|
||||
log"e.g. cls"
|
||||
log""
|
||||
log"2.Run LUA code with #..."
|
||||
log"e.g. #print(\"hello world\")"
|
||||
log"e.g. #for i=1,5 do print(i) end"
|
||||
end,
|
||||
shutdown=function(arg)os.execute("shutdown "..arg)end,
|
||||
cls=function()outputBox:clear()end,
|
||||
echo=log,
|
||||
exit=backScene,
|
||||
quit=backScene,
|
||||
bye=backScene,
|
||||
|
||||
--Game commands
|
||||
fn=function(n)
|
||||
if tonumber(n)then
|
||||
n=int(tonumber(n))
|
||||
if n>=1 and n<=12 then
|
||||
love.keypressed("f"..n)
|
||||
return
|
||||
end
|
||||
end
|
||||
log"Usage: fn [1~12]"
|
||||
end,
|
||||
scrinfo=function()for _,v in next,SCR.info()do log(v)end end,
|
||||
wireframe=function(bool)
|
||||
if bool=="true"or bool=="false"then
|
||||
gc.setWireframe(bool=="true")
|
||||
log("Wireframe: "..(gc.isWireframe()and"on"or"off"))
|
||||
else
|
||||
log"Usage: wireframe [true|false]"
|
||||
end
|
||||
end,
|
||||
gammacorrect=function(bool)
|
||||
if bool=="true"or bool=="false"then
|
||||
love._setGammaCorrect(bool=="true")
|
||||
log("GammaCorrect: "..(gc.isGammaCorrect()and"on"or"off"))
|
||||
else
|
||||
log"Usage: gammacorrect [true|false]"
|
||||
end
|
||||
end,
|
||||
rmwtm=function(password)
|
||||
if password=="196022"then
|
||||
_G["\100\114\97\119\70\87\77"]=NULL
|
||||
log("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100")
|
||||
SFX.play("clear")
|
||||
else
|
||||
log"Usage: None."
|
||||
end
|
||||
end,
|
||||
unlockall=function(bool)
|
||||
if bool=="sure"then
|
||||
for name,M in next,MODES do
|
||||
if type(name)=="string"and not RANKS[name]and M.x then
|
||||
RANKS[name]=M.score and 0 or 6
|
||||
end
|
||||
end
|
||||
FILE.save(RANKS,"conf/unlock")
|
||||
log("\68\69\86\58\85\78\76\79\67\75\65\76\76")
|
||||
SFX.play("clear_2")
|
||||
else
|
||||
log"Are you sure to unlock all modes?"
|
||||
log"Usage: unlockall sure"
|
||||
end
|
||||
end,
|
||||
play=function(m)--marathon_bfmax can only played here
|
||||
if MODES[m]then
|
||||
loadGame(m)
|
||||
elseif m then
|
||||
log("No mode called "..m)
|
||||
else
|
||||
log"Usage: play [modeName]"
|
||||
end
|
||||
end,
|
||||
}
|
||||
function scene.keyDown(k)
|
||||
if k=="return"then
|
||||
local input=inputBox.value
|
||||
if input:byte()==35 then
|
||||
--Execute code
|
||||
local code=loadstring(input:sub(2))
|
||||
if code then
|
||||
setfenv(code,userEnv)
|
||||
ins(history,input)
|
||||
code()
|
||||
else
|
||||
log"Syntax error"
|
||||
end
|
||||
elseif input~=""then
|
||||
--Load command
|
||||
local p=input:find(" ")
|
||||
local cmd,arg
|
||||
if p then
|
||||
cmd=input:sub(1,p-1):lower()
|
||||
arg=input:sub(p+1)
|
||||
else
|
||||
cmd=input
|
||||
arg=""
|
||||
end
|
||||
if commands[cmd]then
|
||||
commands[cmd](arg)
|
||||
else
|
||||
log("No command called "..cmd)
|
||||
end
|
||||
ins(history,input)
|
||||
hisPtr=nil
|
||||
end
|
||||
inputBox:clear()
|
||||
elseif k=="up"then
|
||||
if not hisPtr then
|
||||
hisPtr=#history
|
||||
if hisPtr>0 then
|
||||
inputBox.value=history[hisPtr]
|
||||
end
|
||||
elseif hisPtr>1 then
|
||||
hisPtr=hisPtr-1
|
||||
inputBox.value=history[hisPtr]
|
||||
end
|
||||
elseif k=="down"then
|
||||
if hisPtr then
|
||||
hisPtr=hisPtr+1
|
||||
if history[hisPtr]then
|
||||
inputBox.value=history[hisPtr]
|
||||
else
|
||||
hisPtr=nil
|
||||
inputBox.value=""
|
||||
end
|
||||
end
|
||||
else
|
||||
WIDGET.keyPressed(k)
|
||||
end
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
inputBox,
|
||||
outputBox,
|
||||
}
|
||||
|
||||
return scene
|
||||
Reference in New Issue
Block a user