Fix spacing on all of the rom (#323)

This commit is contained in:
Jonathan Coates 2019-12-07 10:33:47 +00:00 committed by GitHub
parent 86e0330100
commit fa70ebcac2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
80 changed files with 1032 additions and 1032 deletions

View File

@ -2,7 +2,8 @@
(sources
/src/main/resources/assets/computercraft/lua/bios.lua
/src/main/resources/assets/computercraft/lua/rom/)
/src/main/resources/assets/computercraft/lua/rom/
/src/test/resources/test-rom)
(at /
(linters

View File

@ -93,7 +93,7 @@ if _VERSION == "Lua 5.1" then
bxor = bit32.bxor,
brshift = bit32.arshift,
blshift = bit32.lshift,
blogic_rshift = bit32.rshift
blogic_rshift = bit32.rshift,
}
end
end
@ -191,8 +191,8 @@ end
function write( sText )
expect(1, sText, "string", "number")
local w,h = term.getSize()
local x,y = term.getCursorPos()
local w, h = term.getSize()
local x, y = term.getCursorPos()
local nLinesPrinted = 0
local function newLine()
@ -212,7 +212,7 @@ function write( sText )
if whitespace then
-- Print whitespace
term.write( whitespace )
x,y = term.getCursorPos()
x, y = term.getCursorPos()
sText = string.sub( sText, string.len(whitespace) + 1 )
end
@ -233,8 +233,8 @@ function write( sText )
newLine()
end
term.write( text )
text = string.sub( text, w-x + 2 )
x,y = term.getCursorPos()
text = string.sub( text, w - x + 2 )
x, y = term.getCursorPos()
end
else
-- Print a word normally
@ -242,7 +242,7 @@ function write( sText )
newLine()
end
term.write( text )
x,y = term.getCursorPos()
x, y = term.getCursorPos()
end
end
end
@ -613,10 +613,10 @@ function os.loadAPI( _sPath )
expect(1, _sPath, "string")
local sName = fs.getName( _sPath )
if sName:sub(-4) == ".lua" then
sName = sName:sub(1,-5)
sName = sName:sub(1, -5)
end
if tAPIsLoading[sName] == true then
printError( "API "..sName.." is already being loaded" )
printError( "API " .. sName .. " is already being loaded" )
return false
end
tAPIsLoading[sName] = true
@ -636,7 +636,7 @@ function os.loadAPI( _sPath )
end
local tAPI = {}
for k,v in pairs( tEnv ) do
for k, v in pairs( tEnv ) do
if k ~= "_ENV" then
tAPI[k] = v
end
@ -680,7 +680,7 @@ if http then
local methods = {
GET = true, POST = true, HEAD = true,
OPTIONS = true, PUT = true, DELETE = true
OPTIONS = true, PUT = true, DELETE = true,
}
local function checkKey( options, key, ty, opt )
@ -842,7 +842,7 @@ function fs.complete( sPath, sLocation, bIncludeFiles, bIncludeDirs )
end
end
local tFiles = fs.list( sDir )
for n=1,#tFiles do
for n = 1, #tFiles do
local sFile = tFiles[n]
if #sFile >= #sName and string.sub( sFile, 1, #sName ) == sName then
local bIsDir = fs.isDir( fs.combine( sDir, sFile ) )
@ -867,7 +867,7 @@ end
-- Load APIs
local bAPIError = false
local tApis = fs.list( "rom/apis" )
for _,sFile in ipairs( tApis ) do
for _, sFile in ipairs( tApis ) do
if string.sub( sFile, 1, 1 ) ~= "." then
local sPath = fs.combine( "rom/apis", sFile )
if not fs.isDir( sPath ) then
@ -881,7 +881,7 @@ end
if turtle and fs.isDir( "rom/apis/turtle" ) then
-- Load turtle APIs
local tApis = fs.list( "rom/apis/turtle" )
for _,sFile in ipairs( tApis ) do
for _, sFile in ipairs( tApis ) do
if string.sub( sFile, 1, 1 ) ~= "." then
local sPath = fs.combine( "rom/apis/turtle", sFile )
if not fs.isDir( sPath ) then
@ -896,7 +896,7 @@ end
if pocket and fs.isDir( "rom/apis/pocket" ) then
-- Load pocket APIs
local tApis = fs.list( "rom/apis/pocket" )
for _,sFile in ipairs( tApis ) do
for _, sFile in ipairs( tApis ) do
if string.sub( sFile, 1, 1 ) ~= "." then
local sPath = fs.combine( "rom/apis/pocket", sFile )
if not fs.isDir( sPath ) then
@ -925,7 +925,7 @@ if commands and fs.isDir( "rom/apis/command" ) then
end
end
return nil
end
end,
}
setmetatable( commands, tCaseInsensitiveMetatable )
setmetatable( commands.async, tCaseInsensitiveMetatable )
@ -941,7 +941,7 @@ if bAPIError then
print( "Press any key to continue" )
os.pullEvent( "key" )
term.clear()
term.setCursorPos( 1,1 )
term.setCursorPos( 1, 1 )
end
-- Set default settings

View File

@ -23,7 +23,7 @@ function combine( ... )
for i = 1, select('#', ...) do
local c = select(i, ...)
expect(i, c, "number")
r = bit32.bor(r,c)
r = bit32.bor(r, c)
end
return r
end
@ -50,8 +50,8 @@ function packRGB( r, g, b )
expect(2, g, "number")
expect(3, b, "number")
return
bit32.band( r * 255, 0xFF ) * 2^16 +
bit32.band( g * 255, 0xFF ) * 2^8 +
bit32.band( r * 255, 0xFF ) * 2 ^ 16 +
bit32.band( g * 255, 0xFF ) * 2 ^ 8 +
bit32.band( b * 255, 0xFF )
end

View File

@ -1,6 +1,6 @@
-- Colours (for lovers of british spelling)
local colours = _ENV
for k,v in pairs(colors) do
for k, v in pairs(colors) do
colours[k] = v
end

View File

@ -22,7 +22,7 @@ end
-- Put native functions into the environment
local env = _ENV
for k,v in pairs( native ) do
for k, v in pairs( native ) do
env[k] = v
end
@ -30,10 +30,10 @@ end
local tAsync = {}
local tNonNBTJSONCommands = {
[ "tellraw" ] = true,
[ "title" ] = true
[ "title" ] = true,
}
local tCommands = native.list()
for _,sCommandName in ipairs(tCommands) do
for _, sCommandName in ipairs(tCommands) do
if env[ sCommandName ] == nil then
local bJSONIsNBT = tNonNBTJSONCommands[ sCommandName ] == nil
env[ sCommandName ] = function( ... )

View File

@ -62,7 +62,7 @@ end
function stopAudio( name )
if not name then
for _,sName in ipairs( peripheral.getNames() ) do
for _, sName in ipairs( peripheral.getNames() ) do
stopAudio( sName )
end
else

View File

@ -21,12 +21,12 @@ local function trilaterate( A, B, C )
local r2 = B.nDistance
local r3 = C.nDistance
local x = (r1*r1 - r2*r2 + d*d) / (2*d)
local y = (r1*r1 - r3*r3 - x*x + (x-i)*(x-i) + j*j) / (2*j)
local x = (r1 * r1 - r2 * r2 + d * d) / (2 * d)
local y = (r1 * r1 - r3 * r3 - x * x + (x - i) * (x - i) + j * j) / (2 * j)
local result = A.vPosition + ex * x + ey * y
local zSquared = r1*r1 - x*x - y*y
local zSquared = r1 * r1 - x * x - y * y
if zSquared > 0 then
local z = math.sqrt( zSquared )
local result1 = result + ez * z
@ -66,7 +66,7 @@ function locate( _nTimeout, _bDebug )
-- Find a modem
local sModemSide = nil
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if peripheral.getType( sSide ) == "modem" and peripheral.call( sSide, "isWireless" ) then
sModemSide = sSide
break
@ -109,7 +109,7 @@ function locate( _nTimeout, _bDebug )
if type(tMessage) == "table" and #tMessage == 3 and tonumber(tMessage[1]) and tonumber(tMessage[2]) and tonumber(tMessage[3]) then
local tFix = { vPosition = vector.new( tMessage[1], tMessage[2], tMessage[3] ), nDistance = nDistance }
if _bDebug then
print( tFix.nDistance.." metres from "..tostring( tFix.vPosition ) )
print( tFix.nDistance .. " metres from " .. tostring( tFix.vPosition ) )
end
if tFix.nDistance == 0 then
pos1, pos2 = tFix.vPosition, nil
@ -148,12 +148,12 @@ function locate( _nTimeout, _bDebug )
if pos1 and pos2 then
if _bDebug then
print( "Ambiguous position" )
print( "Could be "..pos1.x..","..pos1.y..","..pos1.z.." or "..pos2.x..","..pos2.y..","..pos2.z )
print( "Could be " .. pos1.x .. "," .. pos1.y .. "," .. pos1.z .. " or " .. pos2.x .. "," .. pos2.y .. "," .. pos2.z )
end
return nil
elseif pos1 then
if _bDebug then
print( "Position is "..pos1.x..","..pos1.y..","..pos1.z )
print( "Position is " .. pos1.x .. "," .. pos1.y .. "," .. pos1.z )
end
return pos1.x, pos1.y, pos1.z
else

View File

@ -18,8 +18,8 @@ function lookup( _sTopic )
sPath = fs.combine( sPath, _sTopic )
if fs.exists( sPath ) and not fs.isDir( sPath ) then
return sPath
elseif fs.exists( sPath..".txt" ) and not fs.isDir( sPath..".txt" ) then
return sPath..".txt"
elseif fs.exists( sPath .. ".txt" ) and not fs.isDir( sPath .. ".txt" ) then
return sPath .. ".txt"
end
end
@ -30,18 +30,18 @@ end
function topics()
-- Add index
local tItems = {
[ "index" ] = true
[ "index" ] = true,
}
-- Add topics from the path
for sPath in string.gmatch(sPath, "[^:]+") do
if fs.isDir( sPath ) then
local tList = fs.list( sPath )
for _,sFile in pairs( tList ) do
for _, sFile in pairs( tList ) do
if string.sub( sFile, 1, 1 ) ~= "." then
if not fs.isDir( fs.combine( sPath, sFile ) ) then
if #sFile > 4 and sFile:sub(-4) == ".txt" then
sFile = sFile:sub(1,-5)
sFile = sFile:sub(1, -5)
end
tItems[ sFile ] = true
end
@ -63,7 +63,7 @@ function completeTopic( sText )
expect(1, sText, "string")
local tTopics = topics()
local tResults = {}
for n=1,#tTopics do
for n = 1, #tTopics do
local sTopic = tTopics[n]
if #sTopic > #sText and string.sub( sTopic, 1, #sText ) == sText then
table.insert( tResults, string.sub( sTopic, #sText + 1 ) )

View File

@ -129,11 +129,11 @@ handleMetatable = {
}
local defaultInput = setmetatable({
_handle = { readLine = _G.read }
_handle = { readLine = _G.read },
}, handleMetatable)
local defaultOutput = setmetatable({
_handle = { write = _G.write }
_handle = { write = _G.write },
}, handleMetatable)
local defaultError = setmetatable({
@ -147,7 +147,7 @@ local defaultError = setmetatable({
_G.write(...)
if term.isColour() then term.setTextColour(oldColour) end
end,
}
},
}, handleMetatable)
local currentInput = defaultInput

View File

@ -4,49 +4,49 @@
local expect = dofile("rom/modules/main/cc/expect.lua").expect
local tKeys = {
nil, "one", "two", "three", "four", -- 1
"five", "six", "seven", "eight", "nine", -- 6
"zero", "minus", "equals", "backspace","tab", -- 11
"q", "w", "e", "r", "t", -- 16
"y", "u", "i", "o", "p", -- 21
"leftBracket","rightBracket","enter","leftCtrl","a", -- 26
"s", "d", "f", "g", "h", -- 31
"j", "k", "l", "semiColon","apostrophe", -- 36
"grave", "leftShift","backslash","z", "x", -- 41
"c", "v", "b", "n", "m", -- 46
"comma", "period", "slash", "rightShift","multiply", -- 51
"leftAlt", "space", "capsLock", "f1", "f2", -- 56
"f3", "f4", "f5", "f6", "f7", -- 61
"f8", "f9", "f10", "numLock", "scrollLock", -- 66
"numPad7", "numPad8", "numPad9", "numPadSubtract","numPad4", -- 71
"numPad5", "numPad6", "numPadAdd","numPad1", "numPad2", -- 76
"numPad3", "numPad0", "numPadDecimal",nil, nil, -- 81
nil, "f11", "f12", nil, nil, -- 86
nil, nil, nil, nil, nil, -- 91
nil, nil, nil, nil, "f13", -- 96
"f14", "f15", nil, nil, nil, -- 101
nil, nil, nil, nil, nil, -- 106
nil, "kana", nil, nil, nil, -- 111
nil, nil, nil, nil, nil, -- 116
"convert", nil, "noconvert",nil, "yen", -- 121
nil, nil, nil, nil, nil, -- 126
nil, nil, nil, nil, nil, -- 131
nil, nil, nil, nil, nil, -- 136
"numPadEquals",nil, nil, "circumflex","at", -- 141
"colon", "underscore","kanji", "stop", "ax", -- 146
nil, nil, nil, nil, nil, -- 151
"numPadEnter","rightCtrl",nil, nil, nil, -- 156
nil, nil, nil, nil, nil, -- 161
nil, nil, nil, nil, nil, -- 166
nil, nil, nil, nil, nil, -- 171
nil, nil, nil, "numPadComma",nil, -- 176
"numPadDivide",nil, nil, "rightAlt", nil, -- 181
nil, nil, nil, nil, nil, -- 186
nil, nil, nil, nil, nil, -- 191
nil, "pause", nil, "home", "up", -- 196
"pageUp", nil, "left", nil, "right", -- 201
nil, "end", "down", "pageDown", "insert", -- 206
"delete" -- 211
nil, "one", "two", "three", "four", -- 1
"five", "six", "seven", "eight", "nine", -- 6
"zero", "minus", "equals", "backspace", "tab", -- 11
"q", "w", "e", "r", "t", -- 16
"y", "u", "i", "o", "p", -- 21
"leftBracket", "rightBracket", "enter", "leftCtrl", "a", -- 26
"s", "d", "f", "g", "h", -- 31
"j", "k", "l", "semiColon", "apostrophe", -- 36
"grave", "leftShift", "backslash", "z", "x", -- 41
"c", "v", "b", "n", "m", -- 46
"comma", "period", "slash", "rightShift", "multiply", -- 51
"leftAlt", "space", "capsLock", "f1", "f2", -- 56
"f3", "f4", "f5", "f6", "f7", -- 61
"f8", "f9", "f10", "numLock", "scrollLock", -- 66
"numPad7", "numPad8", "numPad9", "numPadSubtract", "numPad4", -- 71
"numPad5", "numPad6", "numPadAdd", "numPad1", "numPad2", -- 76
"numPad3", "numPad0", "numPadDecimal", nil, nil, -- 81
nil, "f11", "f12", nil, nil, -- 86
nil, nil, nil, nil, nil, -- 91
nil, nil, nil, nil, "f13", -- 96
"f14", "f15", nil, nil, nil, -- 101
nil, nil, nil, nil, nil, -- 106
nil, "kana", nil, nil, nil, -- 111
nil, nil, nil, nil, nil, -- 116
"convert", nil, "noconvert", nil, "yen", -- 121
nil, nil, nil, nil, nil, -- 126
nil, nil, nil, nil, nil, -- 131
nil, nil, nil, nil, nil, -- 136
"numPadEquals", nil, nil, "circumflex", "at", -- 141
"colon", "underscore", "kanji", "stop", "ax", -- 146
nil, nil, nil, nil, nil, -- 151
"numPadEnter", "rightCtrl", nil, nil, nil, -- 156
nil, nil, nil, nil, nil, -- 161
nil, nil, nil, nil, nil, -- 166
nil, nil, nil, nil, nil, -- 171
nil, nil, nil, "numPadComma", nil, -- 176
"numPadDivide", nil, nil, "rightAlt", nil, -- 181
nil, nil, nil, nil, nil, -- 186
nil, nil, nil, nil, nil, -- 191
nil, "pause", nil, "home", "up", -- 196
"pageUp", nil, "left", nil, "right", -- 201
nil, "end", "down", "pageDown", "insert", -- 206
"delete", -- 211
}
local keys = _ENV

View File

@ -6,14 +6,14 @@ local function drawPixelInternal( xPos, yPos )
end
local tColourLookup = {}
for n=1,16 do
tColourLookup[ string.byte( "0123456789abcdef",n,n ) ] = 2^(n-1)
for n = 1, 16 do
tColourLookup[ string.byte( "0123456789abcdef", n, n ) ] = 2 ^ (n - 1)
end
local function parseLine( tImageArg, sLine )
local tLine = {}
for x=1,sLine:len() do
tLine[x] = tColourLookup[ string.byte(sLine,x,x) ] or 0
for x = 1, sLine:len() do
tLine[x] = tColourLookup[ string.byte(sLine, x, x) ] or 0
end
table.insert( tImageArg, tLine )
end
@ -89,7 +89,7 @@ function drawLine( startX, startY, endX, endY, nColour )
if xDiff > math.abs(yDiff) then
local y = minY
local dy = yDiff / xDiff
for x=minX,maxX do
for x = minX, maxX do
drawPixelInternal( x, math.floor( y + 0.5 ) )
y = y + dy
end
@ -97,12 +97,12 @@ function drawLine( startX, startY, endX, endY, nColour )
local x = minX
local dx = xDiff / yDiff
if maxY >= minY then
for y=minY,maxY do
for y = minY, maxY do
drawPixelInternal( math.floor( x + 0.5 ), y )
x = x + dx
end
else
for y=minY,maxY,-1 do
for y = minY, maxY, -1 do
drawPixelInternal( math.floor( x + 0.5 ), y )
x = x - dx
end
@ -142,13 +142,13 @@ function drawBox( startX, startY, endX, endY, nColour )
maxY = startY
end
for x=minX,maxX do
for x = minX, maxX do
drawPixelInternal( x, minY )
drawPixelInternal( x, maxY )
end
if maxY - minY >= 2 then
for y=minY+1,maxY-1 do
for y = minY + 1, maxY - 1 do
drawPixelInternal( minX, y )
drawPixelInternal( maxX, y )
end
@ -187,8 +187,8 @@ function drawFilledBox( startX, startY, endX, endY, nColour )
maxY = startY
end
for x=minX,maxX do
for y=minY,maxY do
for x = minX, maxX do
for y = minY, maxY do
drawPixelInternal( x, y )
end
end
@ -198,9 +198,9 @@ function drawImage( tImage, xPos, yPos )
expect(1, tImage, "table")
expect(2, xPos, "number")
expect(3, yPos, "number")
for y=1,#tImage do
for y = 1, #tImage do
local tLine = tImage[y]
for x=1,#tLine do
for x = 1, #tLine do
if tLine[x] > 0 then
term.setBackgroundColor( tLine[x] )
drawPixelInternal( x + xPos - 1, y + yPos - 1 )

View File

@ -21,7 +21,7 @@ local function runUntilLimit( _routines, _limit )
local tFilters = {}
local eventData = { n = 0 }
while true do
for n=1,count do
for n = 1, count do
local r = _routines[n]
if r then
if tFilters[r] == nil or tFilters[r] == eventData[1] or eventData[1] == "terminate" then
@ -41,7 +41,7 @@ local function runUntilLimit( _routines, _limit )
end
end
end
for n=1,count do
for n = 1, count do
local r = _routines[n]
if r and coroutine.status( r ) == "dead" then
_routines[n] = nil

View File

@ -4,12 +4,12 @@ local native = peripheral
function getNames()
local tResults = {}
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if native.isPresent( sSide ) then
table.insert( tResults, sSide )
if native.getType( sSide ) == "modem" and not native.call( sSide, "isWireless" ) then
local tRemote = native.call( sSide, "getNamesRemote" )
for _,sName in ipairs( tRemote ) do
for _, sName in ipairs( tRemote ) do
table.insert( tResults, sName )
end
end
@ -23,7 +23,7 @@ function isPresent( _sSide )
if native.isPresent( _sSide ) then
return true
end
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if native.getType( sSide ) == "modem" and not native.call( sSide, "isWireless" ) then
if native.call( sSide, "isPresentRemote", _sSide ) then
return true
@ -38,7 +38,7 @@ function getType( _sSide )
if native.isPresent( _sSide ) then
return native.getType( _sSide )
end
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if native.getType( sSide ) == "modem" and not native.call( sSide, "isWireless" ) then
if native.call( sSide, "isPresentRemote", _sSide ) then
return native.call( sSide, "getTypeRemote", _sSide )
@ -53,7 +53,7 @@ function getMethods( _sSide )
if native.isPresent( _sSide ) then
return native.getMethods( _sSide )
end
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if native.getType( sSide ) == "modem" and not native.call( sSide, "isWireless" ) then
if native.call( sSide, "isPresentRemote", _sSide ) then
return native.call( sSide, "getMethodsRemote", _sSide )
@ -69,7 +69,7 @@ function call( _sSide, _sMethod, ... )
if native.isPresent( _sSide ) then
return native.call( _sSide, _sMethod, ... )
end
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if native.getType( sSide ) == "modem" and not native.call( sSide, "isWireless" ) then
if native.call( sSide, "isPresentRemote", _sSide ) then
return native.call( sSide, "callRemote", _sSide, _sMethod, ... )
@ -84,7 +84,7 @@ function wrap( _sSide )
if peripheral.isPresent( _sSide ) then
local tMethods = peripheral.getMethods( _sSide )
local tResult = {}
for _,sMethod in ipairs( tMethods ) do
for _, sMethod in ipairs( tMethods ) do
tResult[sMethod] = function( ... )
return peripheral.call( _sSide, sMethod, ... )
end
@ -98,7 +98,7 @@ function find( sType, fnFilter )
expect(1, sType, "string")
expect(2, fnFilter, "function", "nil")
local tResults = {}
for _,sName in ipairs( peripheral.getNames() ) do
for _, sName in ipairs( peripheral.getNames() ) do
if peripheral.getType( sName ) == sType then
local wrapped = peripheral.wrap( sName )
if fnFilter == nil or fnFilter( sName, wrapped ) then

View File

@ -10,7 +10,7 @@ local tHostnames = {}
function open( sModem )
expect(1, sModem, "string")
if peripheral.getType( sModem ) ~= "modem" then
error( "No such modem: "..sModem, 2 )
error( "No such modem: " .. sModem, 2 )
end
peripheral.call( sModem, "open", os.getComputerID() )
peripheral.call( sModem, "open", CHANNEL_BROADCAST )
@ -21,13 +21,13 @@ function close( sModem )
if sModem then
-- Close a specific modem
if peripheral.getType( sModem ) ~= "modem" then
error( "No such modem: "..sModem, 2 )
error( "No such modem: " .. sModem, 2 )
end
peripheral.call( sModem, "close", os.getComputerID() )
peripheral.call( sModem, "close", CHANNEL_BROADCAST )
else
-- Close all modems
for _,sModem in ipairs( peripheral.getNames() ) do
for _, sModem in ipairs( peripheral.getNames() ) do
if isOpen( sModem ) then
close( sModem )
end
@ -44,7 +44,7 @@ function isOpen( sModem )
end
else
-- Check if any modem is open
for _,sModem in ipairs( peripheral.getNames() ) do
for _, sModem in ipairs( peripheral.getNames() ) do
if isOpen( sModem ) then
return true
end
@ -79,7 +79,7 @@ function send( nRecipient, message, sProtocol )
sent = true
else
-- Send on all open modems, to the target and to repeaters
for _,sModem in ipairs( peripheral.getNames() ) do
for _, sModem in ipairs( peripheral.getNames() ) do
if isOpen( sModem ) then
peripheral.call( sModem, "transmit", nRecipient, nReplyChannel, tMessage )
peripheral.call( sModem, "transmit", CHANNEL_REPEAT, nReplyChannel, tMessage )

View File

@ -17,7 +17,7 @@ local copy
function copy( value )
if type(value) == "table" then
local result = {}
for k,v in pairs(value) do
for k, v in pairs(value) do
result[k] = copy(v)
end
return result
@ -69,7 +69,7 @@ function load( sPath )
return false
end
for k,v in pairs(tFile) do
for k, v in pairs(tFile) do
if type(k) == "string" and
(type(v) == "string" or type(v) == "number" or type(v) == "boolean" or type(v) == "table") then
set( k, v )

View File

@ -16,11 +16,11 @@ term.redirect = function( target )
if target == term or target == _G.term then
error( "term is not a recommended redirect target, try term.current() instead", 2 )
end
for k,v in pairs( native ) do
for k, v in pairs( native ) do
if type( k ) == "string" and type( v ) == "function" then
if type( target[k] ) ~= "function" then
target[k] = function()
error( "Redirect object is missing method "..k..".", 2 )
error( "Redirect object is missing method " .. k .. ".", 2 )
end
end
end
@ -48,13 +48,13 @@ for _, method in ipairs { "nativePaletteColor", "nativePaletteColour"} do
native[method] = nil
end
for k,v in pairs( native ) do
for k, v in pairs( native ) do
if type( k ) == "string" and type( v ) == "function" and term[k] == nil then
term[k] = wrap( k )
end
end
local env = _ENV
for k,v in pairs( term ) do
for k, v in pairs( term ) do
env[k] = v
end

View File

@ -9,10 +9,10 @@ function slowWrite( sText, nRate )
local nSleep = 1 / nRate
sText = tostring( sText )
local x,y = term.getCursorPos()
local x, y = term.getCursorPos()
local len = string.len( sText )
for n=1,len do
for n = 1, len do
term.setCursorPos( x, y )
sleep( nSleep )
local nLines = write( string.sub( sText, 1, n ) )
@ -42,7 +42,7 @@ function formatTime( nTime, bTwentyFourHour )
end
local nHour = math.floor(nTime)
local nMinute = math.floor((nTime - nHour)*60)
local nMinute = math.floor((nTime - nHour) * 60)
if sTOD then
return string.format( "%d:%02d %s", nHour, nMinute, sTOD )
else
@ -54,11 +54,11 @@ local function makePagedScroll( _term, _nFreeLines )
local nativeScroll = _term.scroll
local nFreeLines = _nFreeLines or 0
return function( _n )
for _=1,_n do
for _ = 1, _n do
nativeScroll( 1 )
if nFreeLines <= 0 then
local _,h = _term.getSize()
local _, h = _term.getSize()
_term.setCursorPos( 1, h )
_term.write( "Press any key to continue" )
os.pullEvent( "key" )
@ -76,7 +76,7 @@ function pagedPrint( _sText, _nFreeLines )
-- Setup a redirector
local oldTerm = term.current()
local newTerm = {}
for k,v in pairs( oldTerm ) do
for k, v in pairs( oldTerm ) do
newTerm[k] = v
end
newTerm.scroll = makePagedScroll( oldTerm, _nFreeLines )
@ -108,13 +108,13 @@ local function tabulateCommon( bPaged, ... )
expect(i, tAll[i], "number", "table")
end
local w,h = term.getSize()
local w, h = term.getSize()
local nMaxLen = w / 8
for n, t in ipairs( tAll ) do
if type(t) == "table" then
for nu, sItem in pairs(t) do
if type( sItem ) ~= "string" then
error( "bad argument #"..n.."."..nu.." (expected string, got " .. type( sItem ) .. ")", 3 )
error( "bad argument #" .. n .. "." .. nu .. " (expected string, got " .. type( sItem ) .. ")", 3 )
end
nMaxLen = math.max( string.len( sItem ) + 1, nMaxLen )
end
@ -123,7 +123,7 @@ local function tabulateCommon( bPaged, ... )
local nCols = math.floor( w / nMaxLen )
local nLines = 0
local function newLine()
if bPaged and nLines >= h-3 then
if bPaged and nLines >= h - 3 then
pagedPrint()
else
print()
@ -207,11 +207,11 @@ local function serializeImpl( t, tTracking, sIndent )
local sResult = "{\n"
local sSubIndent = sIndent .. " "
local tSeen = {}
for k,v in ipairs(t) do
for k, v in ipairs(t) do
tSeen[k] = true
sResult = sResult .. sSubIndent .. serializeImpl( v, tTracking, sSubIndent ) .. ",\n"
end
for k,v in pairs(t) do
for k, v in pairs(t) do
if not tSeen[k] then
local sEntry
if type(k) == "string" and not g_tLuaKeywords[k] and string.match( k, "^[%a_][%a%d_]*$" ) then
@ -233,7 +233,7 @@ local function serializeImpl( t, tTracking, sIndent )
return tostring(t)
else
error( "Cannot serialize type "..sType, 0 )
error( "Cannot serialize type " .. sType, 0 )
end
end
@ -241,7 +241,7 @@ end
empty_json_array = setmetatable({}, {
__newindex = function()
error("attempt to mutate textutils.empty_json_array", 2)
end
end,
})
local function serializeJSONImpl( t, tTracking, bNBTStyle )
@ -264,7 +264,7 @@ local function serializeJSONImpl( t, tTracking, bNBTStyle )
local sArrayResult = "["
local nObjectSize = 0
local nArraySize = 0
for k,v in pairs(t) do
for k, v in pairs(t) do
if type(k) == "string" then
local sEntry
if bNBTStyle then
@ -280,7 +280,7 @@ local function serializeJSONImpl( t, tTracking, bNBTStyle )
nObjectSize = nObjectSize + 1
end
end
for _,v in ipairs(t) do
for _, v in ipairs(t) do
local sEntry = serializeJSONImpl( v, tTracking, bNBTStyle )
if nArraySize == 0 then
sArrayResult = sArrayResult .. sEntry
@ -305,7 +305,7 @@ local function serializeJSONImpl( t, tTracking, bNBTStyle )
return tostring(t)
else
error( "Cannot serialize type "..sType, 0 )
error( "Cannot serialize type " .. sType, 0 )
end
end
@ -317,7 +317,7 @@ end
function unserialize( s )
expect(1, s, "string")
local func = load( "return "..s, "unserialize", "t", {} )
local func = load( "return " .. s, "unserialize", "t", {} )
if func then
local ok, result = pcall( func )
if ok then
@ -346,7 +346,7 @@ function urlEncode( str )
else
-- Non-ASCII (encode as UTF-8)
return
string.format("%%%02X", 192 + bit32.band( bit32.arshift(n,6), 31 ) ) ..
string.format("%%%02X", 192 + bit32.band( bit32.arshift(n, 6), 31 ) ) ..
string.format("%%%02X", 128 + bit32.band( n, 63 ) )
end
end )
@ -393,7 +393,7 @@ function complete( sSearchText, tSearchTable )
local tResults = {}
local tSeen = {}
while tTable do
for k,v in pairs( tTable ) do
for k, v in pairs( tTable ) do
if not tSeen[k] and type(k) == "string" then
if string.find( k, sPart, 1, true ) == 1 then
if not g_tLuaKeywords[k] and string.match( k, "^[%a_][%a%d_]*$" ) then

View File

@ -20,7 +20,7 @@ end
-- Put commands into environment table
local env = _ENV
for k,v in pairs( native ) do
for k, v in pairs( native ) do
if k == "equipLeft" or k == "equipRight" then
env[k] = function( ... )
local result, err = v( ... )

View File

@ -36,17 +36,17 @@ local vector = {
)
end,
dot = function( self, o )
return self.x*o.x + self.y*o.y + self.z*o.z
return self.x * o.x + self.y * o.y + self.z * o.z
end,
cross = function( self, o )
return vector.new(
self.y*o.z - self.z*o.y,
self.z*o.x - self.x*o.z,
self.x*o.y - self.y*o.x
self.y * o.z - self.z * o.y,
self.z * o.x - self.x * o.z,
self.x * o.y - self.y * o.x
)
end,
length = function( self )
return math.sqrt( self.x*self.x + self.y*self.y + self.z*self.z )
return math.sqrt( self.x * self.x + self.y * self.y + self.z * self.z )
end,
normalize = function( self )
return self:mul( 1 / self:length() )
@ -60,7 +60,7 @@ local vector = {
)
end,
tostring = function( self )
return self.x..","..self.y..","..self.z
return self.x .. "," .. self.y .. "," .. self.z
end,
}
@ -78,7 +78,7 @@ function new( x, y, z )
local v = {
x = tonumber(x) or 0,
y = tonumber(y) or 0,
z = tonumber(z) or 0
z = tonumber(z) or 0,
}
setmetatable( v, vmetatable )
return v

View File

@ -39,8 +39,8 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
local tEmptyColorLines = {}
local function createEmptyLines( nWidth )
sEmptySpaceLine = string_rep( " ", nWidth )
for n=0,15 do
local nColor = 2^n
for n = 0, 15 do
local nColor = 2 ^ n
local sHex = tHex[nColor]
tEmptyColorLines[nColor] = string_rep( sHex, nWidth )
end
@ -61,7 +61,7 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
local sEmptyText = sEmptySpaceLine
local sEmptyTextColor = tEmptyColorLines[ nTextColor ]
local sEmptyBackgroundColor = tEmptyColorLines[ nBackgroundColor ]
for y=1,nHeight do
for y = 1, nHeight do
tLines[y] = {
text = sEmptyText,
textColor = sEmptyTextColor,
@ -69,7 +69,7 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
}
end
for i=0,15 do
for i = 0, 15 do
local c = 2 ^ i
tPalette[c] = { parent.getPaletteColour( c ) }
end
@ -100,13 +100,13 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
end
local function redraw()
for n=1,nHeight do
for n = 1, nHeight do
redrawLine( n )
end
end
local function updatePalette()
for k,v in pairs( tPalette ) do
for k, v in pairs( tPalette ) do
parent.setPaletteColour( k, v[1], v[2], v[3] )
end
end
@ -204,7 +204,7 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
local sEmptyText = sEmptySpaceLine
local sEmptyTextColor = tEmptyColorLines[ nTextColor ]
local sEmptyBackgroundColor = tEmptyColorLines[ nBackgroundColor ]
for y=1,nHeight do
for y = 1, nHeight do
tLines[y] = {
text = sEmptyText,
textColor = sEmptyTextColor,
@ -351,7 +351,7 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
local sEmptyText = sEmptySpaceLine
local sEmptyTextColor = tEmptyColorLines[ nTextColor ]
local sEmptyBackgroundColor = tEmptyColorLines[ nBackgroundColor ]
for newY=1,nHeight do
for newY = 1, nHeight do
local y = newY + n
if y >= 1 and y <= nHeight then
tNewLines[newY] = tLines[y]
@ -451,12 +451,12 @@ function create( parent, nX, nY, nWidth, nHeight, bStartVisible )
local sEmptyText = sEmptySpaceLine
local sEmptyTextColor = tEmptyColorLines[ nTextColor ]
local sEmptyBackgroundColor = tEmptyColorLines[ nBackgroundColor ]
for y=1,nNewHeight do
for y = 1, nNewHeight do
if y > nHeight then
tNewLines[y] = {
text = sEmptyText,
textColor = sEmptyTextColor,
backgroundColor = sEmptyBackgroundColor
backgroundColor = sEmptyBackgroundColor,
}
else
local tOldLine = tLines[y]

View File

@ -2,7 +2,7 @@ local expect = dofile("rom/modules/main/cc/expect.lua").expect
-- Setup process switching
local parentTerm = term.current()
local w,h = parentTerm.getSize()
local w, h = parentTerm.getSize()
local tProcesses = {}
local nCurrentProcess = nil
@ -55,7 +55,7 @@ local function launchProcess( bFocus, tProgramEnv, sProgramPath, ... )
local tProcess = {}
tProcess.sTitle = fs.getName( sProgramPath )
if bShowMenu then
tProcess.window = window.create( parentTerm, 1, 2, w, h-1, false )
tProcess.window = window.create( parentTerm, 1, 2, w, h - 1, false )
else
tProcess.window = window.create( parentTerm, 1, 1, w, h, false )
end
@ -102,7 +102,7 @@ end
local function cullProcesses()
local culled = false
for n=#tProcesses,1,-1 do
for n = #tProcesses, 1, -1 do
culled = culled or cullProcess( n )
end
return culled
@ -132,7 +132,7 @@ local function redrawMenu()
parentTerm.write( "<" )
nCharCount = 1
end
for n=nScrollPos,#tProcesses do
for n = nScrollPos, #tProcesses do
if n == nCurrentProcess then
parentTerm.setTextColor( menuMainTextColor )
parentTerm.setBackgroundColor( menuMainBgColor )
@ -165,14 +165,14 @@ local function resizeWindows()
local windowY, windowHeight
if bShowMenu then
windowY = 2
windowHeight = h-1
windowHeight = h - 1
else
windowY = 1
windowHeight = h
end
for n=1,#tProcesses do
for n = 1, #tProcesses do
local tProcess = tProcesses[n]
local x,y = tProcess.window.getCursorPos()
local x, y = tProcess.window.getCursorPos()
if y > windowHeight then
tProcess.window.scroll( y - windowHeight )
tProcess.window.setCursorPos( x, windowHeight )
@ -257,7 +257,7 @@ while #tProcesses > 0 do
local sEvent = tEventData[1]
if sEvent == "term_resize" then
-- Resize event
w,h = parentTerm.getSize()
w, h = parentTerm.getSize()
resizeWindows()
redrawMenu()
@ -286,7 +286,7 @@ while #tProcesses > 0 do
if nScrollPos ~= 1 then
tabStart = 2
end
for n=nScrollPos,#tProcesses do
for n = nScrollPos, #tProcesses do
local tabEnd = tabStart + string.len( tProcesses[n].sTitle ) + 1
if x >= tabStart and x <= tabEnd then
selectProcess( n )
@ -298,7 +298,7 @@ while #tProcesses > 0 do
end
else
-- Passthrough to current process
resumeProcess( nCurrentProcess, sEvent, button, x, bShowMenu and y-1 or y )
resumeProcess( nCurrentProcess, sEvent, button, x, bShowMenu and y - 1 or y )
if cullProcess( nCurrentProcess ) then
setMenuVisible( #tProcesses >= 2 )
redrawMenu()
@ -318,7 +318,7 @@ while #tProcesses > 0 do
end
elseif not (bShowMenu and y == 1) then
-- Passthrough to current process
resumeProcess( nCurrentProcess, sEvent, p1, x, bShowMenu and y-1 or y )
resumeProcess( nCurrentProcess, sEvent, p1, x, bShowMenu and y - 1 or y )
if cullProcess( nCurrentProcess ) then
setMenuVisible( #tProcesses >= 2 )
redrawMenu()
@ -329,7 +329,7 @@ while #tProcesses > 0 do
-- Other event
-- Passthrough to all processes
local nLimit = #tProcesses -- Storing this ensures any new things spawned don't get the event
for n=1,nLimit do
for n = 1, nLimit do
resumeProcess( n, table.unpack( tEventData, 1, tEventData.n ) )
end
if cullProcesses() then
@ -341,7 +341,7 @@ while #tProcesses > 0 do
if bWindowsResized then
-- Pass term_resize to all processes
local nLimit = #tProcesses -- Storing this ensures any new things spawned don't get the event
for n=1,nLimit do
for n = 1, nLimit do
resumeProcess( n, "term_resize" )
end
bWindowsResized = false

View File

@ -19,7 +19,7 @@ else
local tAliases = shell.aliases()
local tList = {}
for sAlias, sCommand in pairs( tAliases ) do
table.insert( tList, sAlias..":"..sCommand )
table.insert( tList, sAlias .. ":" .. sCommand )
end
table.sort( tList )
textutils.pagedTabulate( tList )

View File

@ -1,6 +1,6 @@
local tApis = {}
for k,v in pairs( _G ) do
for k, v in pairs( _G ) do
if type(k) == "string" and type(v) == "table" and k ~= "_G" then
table.insert( tApis, k )
end

View File

@ -18,7 +18,7 @@ local function printSuccess( text )
end
local sCommand = string.lower( tArgs[1] )
for n=2,#tArgs do
for n = 2, #tArgs do
sCommand = sCommand .. " " .. tArgs[n]
end
@ -26,14 +26,14 @@ local bResult, tOutput = commands.exec( sCommand )
if bResult then
printSuccess( "Success" )
if #tOutput > 0 then
for n=1,#tOutput do
for n = 1, #tOutput do
print( tOutput[n] )
end
end
else
printError( "Failed" )
if #tOutput > 0 then
for n=1,#tOutput do
for n = 1, #tOutput do
print( tOutput[n] )
end
end

View File

@ -9,7 +9,7 @@ local sSource = shell.resolve( tArgs[1] )
local sDest = shell.resolve( tArgs[2] )
local tFiles = fs.find( sSource )
if #tFiles > 0 then
for _,sFile in ipairs( tFiles ) do
for _, sFile in ipairs( tFiles ) do
if fs.isDir( sDest ) then
fs.copy( sFile, fs.combine( sDest, fs.getName(sFile) ) )
elseif #tFiles == 1 then

View File

@ -21,9 +21,9 @@ if not fs.exists( sPath ) and not string.find( sPath, "%." ) then
end
end
local x,y = 1,1
local w,h = term.getSize()
local scrollX, scrollY = 0,0
local x, y = 1, 1
local w, h = term.getSize()
local scrollX, scrollY = 0, 0
local tLines = {}
local bRunning = true
@ -99,7 +99,7 @@ local function save( _sPath )
file.write( sLine .. "\n" )
end
else
error( "Failed to open ".._sPath )
error( "Failed to open " .. _sPath )
end
end
@ -130,7 +130,7 @@ local tKeywords = {
["return"] = true,
["then"] = true,
["true"] = true,
["until"]= true,
["until"] = true,
["while"] = true,
}
@ -214,7 +214,7 @@ end
local function redrawText()
local cursorX, cursorY = x, y
for y=1,h-1 do
for y = 1, h - 1 do
term.setCursorPos( 1 - scrollX, y )
term.clearLine()
@ -248,7 +248,7 @@ local function redrawMenu()
term.clearLine()
-- Draw line numbers
term.setCursorPos( w - string.len( "Ln "..y ) + 1, h )
term.setCursorPos( w - string.len( "Ln " .. y ) + 1, h )
term.setTextColour( highlightColour )
term.write( "Ln " )
term.setTextColour( textColour )
@ -258,7 +258,7 @@ local function redrawMenu()
if bMenu then
-- Draw menu
term.setTextColour( textColour )
for nItem,sItem in pairs( tMenuItems ) do
for nItem, sItem in pairs( tMenuItems ) do
if nItem == nMenuItem then
term.setTextColour( highlightColour )
term.write( "[" )
@ -268,7 +268,7 @@ local function redrawMenu()
term.write( "]" )
term.setTextColour( textColour )
else
term.write( " "..sItem.." " )
term.write( " " .. sItem .. " " )
end
end
else
@ -289,12 +289,12 @@ local tMenuFuncs = {
else
local ok, _, fileerr = save( sPath )
if ok then
sStatus="Saved to "..sPath
sStatus = "Saved to " .. sPath
else
if fileerr then
sStatus="Error saving to "..fileerr
sStatus = "Error saving to " .. fileerr
else
sStatus="Error saving to "..sPath
sStatus = "Error saving to " .. sPath
end
end
end
@ -326,7 +326,7 @@ local tMenuFuncs = {
}
printerTerminal.scroll = function()
if nPage == 1 then
printer.setPageTitle( sName.." (page "..nPage..")" )
printer.setPageTitle( sName .. " (page " .. nPage .. ")" )
end
while not printer.newPage() do
@ -349,7 +349,7 @@ local tMenuFuncs = {
if nPage == 1 then
printer.setPageTitle( sName )
else
printer.setPageTitle( sName.." (page "..nPage..")" )
printer.setPageTitle( sName .. " (page " .. nPage .. ")" )
end
end
@ -374,7 +374,7 @@ local tMenuFuncs = {
bMenu = true
if nPage > 1 then
sStatus = "Printed "..nPage.." Pages"
sStatus = "Printed " .. nPage .. " Pages"
else
sStatus = "Printed 1 Page"
end
@ -391,14 +391,14 @@ local tMenuFuncs = {
if nTask then
shell.switchTab( nTask )
else
sStatus="Error starting Task"
sStatus = "Error starting Task"
end
fs.delete( sTempPath )
else
sStatus="Error saving to "..sTempPath
sStatus = "Error saving to " .. sTempPath
end
redrawMenu()
end
end,
}
local function doMenuItem( _n )
@ -431,9 +431,9 @@ local function setCursor( newX, newY )
scrollY = y - 1
screenY = 1
bRedraw = true
elseif screenY > h-1 then
scrollY = y - (h-1)
screenY = h-1
elseif screenY > h - 1 then
scrollY = y - (h - 1)
screenY = h - 1
bRedraw = true
end
@ -456,7 +456,7 @@ load(sPath)
term.setBackgroundColour( bgColour )
term.clear()
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setCursorBlink( true )
recomplete()
@ -526,7 +526,7 @@ while bRunning do
else
-- Indent line
local sLine = tLines[y]
tLines[y] = string.sub(sLine,1,x-1) .. " " .. string.sub(sLine,x)
tLines[y] = string.sub(sLine, 1, x - 1) .. " " .. string.sub(sLine, x)
setCursor( x + 4, y )
end
end
@ -566,7 +566,7 @@ while bRunning do
if not bMenu then
-- Move cursor to the beginning
if x > 1 then
setCursor(1,y)
setCursor(1, y)
end
end
@ -586,8 +586,8 @@ while bRunning do
if x > 1 then
-- Move cursor left
setCursor( x - 1, y )
elseif x==1 and y>1 then
setCursor( string.len( tLines[y-1] ) + 1, y - 1 )
elseif x == 1 and y > 1 then
setCursor( string.len( tLines[y - 1] ) + 1, y - 1 )
end
else
-- Move menu left
@ -608,7 +608,7 @@ while bRunning do
elseif nCompletion and x == string.len(tLines[y]) + 1 then
-- Accept autocomplete
acceptCompletion()
elseif x==nLimit and y<#tLines then
elseif x == nLimit and y < #tLines then
-- Go to next line
setCursor( 1, y + 1 )
end
@ -627,12 +627,12 @@ while bRunning do
local nLimit = string.len( tLines[y] ) + 1
if x < nLimit then
local sLine = tLines[y]
tLines[y] = string.sub(sLine,1,x-1) .. string.sub(sLine,x+1)
tLines[y] = string.sub(sLine, 1, x - 1) .. string.sub(sLine, x + 1)
recomplete()
redrawLine(y)
elseif y<#tLines then
tLines[y] = tLines[y] .. tLines[y+1]
table.remove( tLines, y+1 )
elseif y < #tLines then
tLines[y] = tLines[y] .. tLines[y + 1]
table.remove( tLines, y + 1 )
recomplete()
redrawText()
end
@ -644,17 +644,17 @@ while bRunning do
if x > 1 then
-- Remove character
local sLine = tLines[y]
if x > 4 and string.sub(sLine,x-4,x-1) == " " and not string.sub(sLine, 1, x - 1):find("%S") then
tLines[y] = string.sub(sLine,1,x-5) .. string.sub(sLine,x)
if x > 4 and string.sub(sLine, x - 4, x - 1) == " " and not string.sub(sLine, 1, x - 1):find("%S") then
tLines[y] = string.sub(sLine, 1, x - 5) .. string.sub(sLine, x)
setCursor( x - 4, y )
else
tLines[y] = string.sub(sLine,1,x-2) .. string.sub(sLine,x)
tLines[y] = string.sub(sLine, 1, x - 2) .. string.sub(sLine, x)
setCursor( x - 1, y )
end
elseif y > 1 then
-- Remove newline
local sPrevLen = string.len( tLines[y-1] )
tLines[y-1] = tLines[y-1] .. tLines[y]
local sPrevLen = string.len( tLines[y - 1] )
tLines[y - 1] = tLines[y - 1] .. tLines[y]
table.remove( tLines, y )
setCursor( sPrevLen + 1, y - 1 )
redrawText()
@ -666,12 +666,12 @@ while bRunning do
if not bMenu and not bReadOnly then
-- Newline
local sLine = tLines[y]
local _,spaces=string.find(sLine,"^[ ]+")
local _, spaces = string.find(sLine, "^[ ]+")
if not spaces then
spaces=0
spaces = 0
end
tLines[y] = string.sub(sLine,1,x-1)
table.insert( tLines, y+1, string.rep(' ',spaces)..string.sub(sLine,x) )
tLines[y] = string.sub(sLine, 1, x - 1)
table.insert( tLines, y + 1, string.rep(' ', spaces) .. string.sub(sLine, x) )
setCursor( spaces + 1, y + 1 )
redrawText()
@ -697,13 +697,13 @@ while bRunning do
if not bMenu and not bReadOnly then
-- Input text
local sLine = tLines[y]
tLines[y] = string.sub(sLine,1,x-1) .. param .. string.sub(sLine,x)
tLines[y] = string.sub(sLine, 1, x - 1) .. param .. string.sub(sLine, x)
setCursor( x + 1, y )
elseif bMenu then
-- Select menu items
for n,sMenuItem in ipairs( tMenuItems ) do
if string.lower(string.sub(sMenuItem,1,1)) == string.lower(param) then
for n, sMenuItem in ipairs( tMenuItems ) do
if string.lower(string.sub(sMenuItem, 1, 1)) == string.lower(param) then
doMenuItem( n )
break
end
@ -720,7 +720,7 @@ while bRunning do
end
-- Input text
local sLine = tLines[y]
tLines[y] = string.sub(sLine,1,x-1) .. param .. string.sub(sLine,x)
tLines[y] = string.sub(sLine, 1, x - 1) .. param .. string.sub(sLine, x)
setCursor( x + string.len( param ), y )
end
@ -728,7 +728,7 @@ while bRunning do
if not bMenu then
if param == 1 then
-- Left click
local cx,cy = param2, param3
local cx, cy = param2, param3
if cy < h then
local newY = math.min( math.max( scrollY + cy, 1 ), #tLines )
local newX = math.min( math.max( scrollX + cx, 1 ), string.len( tLines[newY] ) + 1 )
@ -749,7 +749,7 @@ while bRunning do
elseif param == 1 then
-- Scroll down
local nMaxScroll = #tLines - (h-1)
local nMaxScroll = #tLines - (h - 1)
if scrollY < nMaxScroll then
-- Move cursor down
scrollY = scrollY + 1
@ -760,7 +760,7 @@ while bRunning do
end
elseif sEvent == "term_resize" then
w,h = term.getSize()
w, h = term.getSize()
setCursor( x, y )
redrawMenu()
redrawText()

View File

@ -11,7 +11,7 @@ local sDrive = tArgs[1]
-- Check the disk exists
local bPresent = disk.isPresent( sDrive )
if not bPresent then
print( "Nothing in "..sDrive.." drive" )
print( "Nothing in " .. sDrive .. " drive" )
return
end

View File

@ -6,7 +6,7 @@
------------
-- The width and height of the terminal
local w,h = term.getSize()
local w, h = term.getSize()
-- The selected colours on the left and right mouse button, and the colour of the canvas
local leftColour, rightColour = colours.white, nil
@ -16,7 +16,7 @@ local canvasColour = colours.black
local canvas = {}
-- The menu options
local mChoices = { "Save","Exit" }
local mChoices = { "Save", "Exit" }
-- The message displayed in the footer bar
local fMessage = "Press Ctrl to access menu"
@ -86,8 +86,8 @@ end
returns: the colour number of the hex value
]]
local tColourLookup = {}
for n=1,16 do
tColourLookup[ string.byte( "0123456789abcdef",n,n ) ] = 2^(n-1)
for n = 1, 16 do
tColourLookup[ string.byte( "0123456789abcdef", n, n ) ] = 2 ^ (n - 1)
end
local function getColourOf( char )
-- Values not in the hex table are transparent (canvas coloured)
@ -106,8 +106,8 @@ local function load(path)
local sLine = file.readLine()
while sLine do
local line = {}
for x=1,w-2 do
line[x] = getColourOf( string.byte(sLine,x,x) )
for x = 1, w - 2 do
line[x] = getColourOf( string.byte(sLine, x, x) )
end
table.insert( canvas, line )
sLine = file.readLine()
@ -136,10 +136,10 @@ local function save(path)
-- Encode (and trim)
local tLines = {}
local nLastLine = 0
for y=1,h-1 do
for y = 1, h - 1 do
local sLine = ""
local nLastChar = 0
for x=1,w-2 do
for x = 1, w - 2 do
local c = getCharOf( getCanvasPixel( x, y ) )
sLine = sLine .. c
if c ~= " " then
@ -154,7 +154,7 @@ local function save(path)
end
-- Save out
for n=1,nLastLine do
for n = 1, nLastLine do
file.writeLine( tLines[ n ] )
end
file.close()
@ -174,20 +174,20 @@ local function drawInterface()
term.write(fMessage)
-- Colour Picker
for i=1,16 do
term.setCursorPos(w-1, i)
term.setBackgroundColour( 2^(i-1) )
for i = 1, 16 do
term.setCursorPos(w - 1, i)
term.setBackgroundColour( 2 ^ (i - 1) )
term.write(" ")
end
term.setCursorPos(w-1, 17)
term.setCursorPos(w - 1, 17)
term.setBackgroundColour( canvasColour )
term.setTextColour( colours.grey )
term.write("\127\127")
-- Left and Right Selected Colours
do
term.setCursorPos(w-1, 18)
term.setCursorPos(w - 1, 18)
if leftColour ~= nil then
term.setBackgroundColour( leftColour )
term.write(" ")
@ -208,8 +208,8 @@ local function drawInterface()
-- Padding
term.setBackgroundColour( canvasColour )
for i=20,h-1 do
term.setCursorPos(w-1, i)
for i = 20, h - 1 do
term.setCursorPos(w - 1, i)
term.write(" ")
end
end
@ -237,7 +237,7 @@ end
returns: nil
]]
local function drawCanvasLine( y )
for x = 1, w-2 do
for x = 1, w - 2 do
drawCanvasPixel( x, y )
end
end
@ -247,7 +247,7 @@ end
returns: nil
]]
local function drawCanvas()
for y = 1, h-1 do
for y = 1, h - 1 do
drawCanvasLine( y )
end
end
@ -263,25 +263,25 @@ local function accessMenu()
term.setBackgroundColour(colours.black)
while true do
-- Draw the menu
term.setCursorPos(1,h)
term.setCursorPos(1, h)
term.clearLine()
term.setTextColour(colours.white)
for k,v in pairs(mChoices) do
if selection==k then
for k, v in pairs(mChoices) do
if selection == k then
term.setTextColour(colours.yellow)
local ox = term.getCursorPos()
term.write("["..string.rep(" ",#v).."]")
term.setCursorPos(ox+1,h)
term.write("[" .. string.rep(" ", #v) .. "]")
term.setCursorPos(ox + 1, h)
term.setTextColour(colours.white)
term.write(v)
term.setCursorPos(term.getCursorPos()+1,h)
term.setCursorPos(term.getCursorPos() + 1, h)
else
term.write(" "..v.." ")
term.write(" " .. v .. " ")
end
end
-- Handle input in the menu
local id,key = os.pullEvent("key")
local id, key = os.pullEvent("key")
if id == "key" then
-- S and E are shortcuts
if key == keys.s then
@ -308,23 +308,23 @@ local function accessMenu()
elseif key == keys.enter then
-- Select an option
if mChoices[selection]=="Save" then
if mChoices[selection] == "Save" then
if bReadOnly then
fMessage = "Access denied"
return false
end
local success, err = save(sPath)
if success then
fMessage = "Saved to "..sPath
fMessage = "Saved to " .. sPath
else
if err then
fMessage = "Error saving to "..err
fMessage = "Error saving to " .. err
else
fMessage = "Error saving to "..sPath
fMessage = "Error saving to " .. sPath
end
end
return false
elseif mChoices[selection]=="Exit" then
elseif mChoices[selection] == "Exit" then
return true
end
elseif key == keys.leftCtrl or keys == keys.rightCtrl then
@ -343,19 +343,19 @@ end
local function handleEvents()
local programActive = true
while programActive do
local id,p1,p2,p3 = os.pullEvent()
if id=="mouse_click" or id=="mouse_drag" then
if p2 >= w-1 and p3 >= 1 and p3 <= 17 then
local id, p1, p2, p3 = os.pullEvent()
if id == "mouse_click" or id == "mouse_drag" then
if p2 >= w - 1 and p3 >= 1 and p3 <= 17 then
if id ~= "mouse_drag" then
-- Selecting an items in the colour picker
if p3 <= 16 then
if p1==1 then
leftColour = 2^(p3-1)
if p1 == 1 then
leftColour = 2 ^ (p3 - 1)
else
rightColour = 2^(p3-1)
rightColour = 2 ^ (p3 - 1)
end
else
if p1==1 then
if p1 == 1 then
leftColour = nil
else
rightColour = nil
@ -364,12 +364,12 @@ local function handleEvents()
--drawCanvas()
drawInterface()
end
elseif p2 < w-1 and p3 <= h-1 then
elseif p2 < w - 1 and p3 <= h - 1 then
-- Clicking on the canvas
local paintColour = nil
if p1==1 then
if p1 == 1 then
paintColour = leftColour
elseif p1==2 then
elseif p1 == 2 then
paintColour = rightColour
end
if not canvas[p3] then
@ -379,13 +379,13 @@ local function handleEvents()
drawCanvasPixel( p2, p3 )
end
elseif id=="key" then
if p1==keys.leftCtrl or p1==keys.rightCtrl then
elseif id == "key" then
if p1 == keys.leftCtrl or p1 == keys.rightCtrl then
programActive = not accessMenu()
drawInterface()
end
elseif id=="term_resize" then
w,h = term.getSize()
elseif id == "term_resize" then
w, h = term.getSize()
drawCanvas()
drawInterface()
end
@ -404,4 +404,4 @@ handleEvents()
term.setBackgroundColour(colours.black)
term.setTextColour(colours.white)
term.clear()
term.setCursorPos(1,1)
term.setCursorPos(1, 1)

View File

@ -3,12 +3,12 @@
--Clearing Screen--
--Vars--
local TermW,TermH = term.getSize()
local TermW, TermH = term.getSize()
local sLevelTitle
local tScreen
local oScreen
local SizeW,SizeH
local SizeW, SizeH
local aExits
local fExit
local nSpeed
@ -18,14 +18,14 @@ local fSpeedS
local bPaused
local Tick
local Blocks
local XOrgin,YOrgin
local XOrgin, YOrgin
local fLevel
local function reset()
sLevelTitle = ""
tScreen = {}
oScreen = {}
SizeW,SizeH = TermW,TermH
SizeW, SizeH = TermW, TermH
aExits = 0
fExit = "nop"
nSpeed = 0.6
@ -35,7 +35,7 @@ local function reset()
bPaused = false
Tick = os.startTimer(Speed)
Blocks = 0
XOrgin,YOrgin = 1,1
XOrgin, YOrgin = 1, 1
term.setBackgroundColor(colors.black)
term.setTextColor(colors.white)
@ -61,21 +61,21 @@ local tArgs = { ... }
--Functions--
local function printCentred( yc, stg )
local xc = math.floor((TermW - string.len(stg)) / 2) + 1
term.setCursorPos(xc,yc)
term.setCursorPos(xc, yc)
term.write( stg )
end
local function centerOrgin()
XOrgin = math.floor(TermW/2-SizeW/2)
YOrgin = math.floor(TermH/2-SizeH/2)
XOrgin = math.floor(TermW / 2 - SizeW / 2)
YOrgin = math.floor(TermH / 2 - SizeH / 2)
end
local function reMap()
tScreen = nil
tScreen = {}
for x=1,SizeW do
for x = 1, SizeW do
tScreen[x] = {}
for y=1,SizeH do
for y = 1, SizeH do
tScreen[x][y] = { space = true, wall = false, ground = false, robot = "zz", start = "zz", exit = "zz" }
end
end
@ -83,7 +83,7 @@ end
local function tablecopy(t)
local t2 = {}
for k,v in pairs(t) do
for k, v in pairs(t) do
t2[k] = v
end
return t2
@ -92,17 +92,17 @@ end
local function buMap()
oScreen = nil
oScreen = {}
for x=1,SizeW do
for x = 1, SizeW do
oScreen[x] = {}
for y=1,SizeH do
for y = 1, SizeH do
oScreen[x][y] = tablecopy(tScreen[x][y])
end
end
end
local function addRobot(x,y,side,color)
local function addRobot(x, y, side, color)
local obj = tScreen[x][y]
local data = side..color
local data = side .. color
if obj.wall == nil and obj.robot == nil then
tScreen[x][y].robot = data
else
@ -112,9 +112,9 @@ local function addRobot(x,y,side,color)
end
end
local function addStart(x,y,side,color)
local function addStart(x, y, side, color)
local obj = tScreen[x][y]
local data = side..color
local data = side .. color
if obj.wall == nil and obj.space == nil then
tScreen[x][y].start = data
else
@ -122,10 +122,10 @@ local function addStart(x,y,side,color)
obj.space = nil
tScreen[x][y].start = data
end
aExits = aExits+1
aExits = aExits + 1
end
local function addGround(x,y)
local function addGround(x, y)
local obj = tScreen[x][y]
if obj.space == nil and obj.exit == nil and obj.wall == nil and obj.robot == nil and obj.start == nil then
tScreen[x][y].ground = true
@ -139,7 +139,7 @@ local function addGround(x,y)
end
end
local function addExit(x,y,cl)
local function addExit(x, y, cl)
local obj = tScreen[x][y]
if obj.space == nil and obj.ground == nil and obj.wall == nil and obj.robot == nil and obj.start == nil then
tScreen[x][y].exit = cl
@ -153,10 +153,10 @@ local function addExit(x,y,cl)
end
end
local function addWall(x,y)
local function addWall(x, y)
local obj = tScreen[x][y]
if obj == nil then
return error("Here X"..x.." Y"..y)
return error("Here X" .. x .. " Y" .. y)
end
if obj.space == nil and obj.exit == nil and obj.ground == nil and obj.robot == nil and obj.start == nil then
tScreen[x][y].wall = true
@ -171,15 +171,15 @@ local function addWall(x,y)
end
local function loadLevel(nNum)
sLevelTitle = "Level "..nNum
sLevelTitle = "Level " .. nNum
if nNum == nil then return error("nNum == nil") end
local sDir = fs.getDir( shell.getRunningProgram() )
local sLevelD = sDir .. "/levels/" .. tostring(nNum)..".dat"
if not ( fs.exists(sLevelD) or fs.isDir(sLevelD) ) then return error("Level Not Exists : "..sLevelD) end
fLevel = fs.open(sLevelD,"r")
local sLevelD = sDir .. "/levels/" .. tostring(nNum) .. ".dat"
if not ( fs.exists(sLevelD) or fs.isDir(sLevelD) ) then return error("Level Not Exists : " .. sLevelD) end
fLevel = fs.open(sLevelD, "r")
local wl = true
Blocks = tonumber(string.sub(fLevel.readLine(),1,1))
local xSize = string.len(fLevel.readLine())+2
Blocks = tonumber(string.sub(fLevel.readLine(), 1, 1))
local xSize = string.len(fLevel.readLine()) + 2
local Lines = 3
while wl do
local wLine = fLevel.readLine()
@ -187,43 +187,43 @@ local function loadLevel(nNum)
fLevel.close()
wl = false
else
xSize = math.max(string.len(wLine)+2,xSize)
xSize = math.max(string.len(wLine) + 2, xSize)
Lines = Lines + 1
end
end
SizeW,SizeH = xSize,Lines
SizeW, SizeH = xSize, Lines
reMap()
fLevel = fs.open(sLevelD,"r")
fLevel = fs.open(sLevelD, "r")
fLevel.readLine()
for Line=2,Lines-1 do
for Line = 2, Lines - 1 do
local sLine = fLevel.readLine()
local chars = string.len(sLine)
for char = 1, chars do
local el = string.sub(sLine,char,char)
local el = string.sub(sLine, char, char)
if el == "8" then
addGround(char+1,Line)
addGround(char + 1, Line)
elseif el == "0" then
addStart(char+1,Line,"a","a")
addStart(char + 1, Line, "a", "a")
elseif el == "1" then
addStart(char+1,Line,"b","a")
addStart(char + 1, Line, "b", "a")
elseif el == "2" then
addStart(char+1,Line,"c","a")
addStart(char + 1, Line, "c", "a")
elseif el == "3" then
addStart(char+1,Line,"d","a")
addStart(char + 1, Line, "d", "a")
elseif el == "4" then
addStart(char+1,Line,"a","b")
addStart(char + 1, Line, "a", "b")
elseif el == "5" then
addStart(char+1,Line,"b","b")
addStart(char + 1, Line, "b", "b")
elseif el == "6" then
addStart(char+1,Line,"c","b")
addStart(char + 1, Line, "c", "b")
elseif el == "9" then
addStart(char+1,Line,"d","b")
addStart(char + 1, Line, "d", "b")
elseif el == "b" then
addExit(char+1,Line,"a")
addExit(char + 1, Line, "a")
elseif el == "e" then
addExit(char+1,Line,"b")
addExit(char + 1, Line, "b")
elseif el == "7" then
addWall(char+1,Line)
addWall(char + 1, Line)
end
end
end
@ -232,29 +232,29 @@ end
local function drawStars()
--CCR Background By : RamiLego--
local cStar,cStarG,crStar,crStarB = colors.lightGray,colors.gray,".","*"
local DStar,BStar,nStar,gStar = 14,10,16,3
local TermW,TermH = term.getSize()
local cStar, cStarG, crStar, crStarB = colors.lightGray, colors.gray, ".", "*"
local DStar, BStar, nStar, gStar = 14, 10, 16, 3
local TermW, TermH = term.getSize()
term.clear()
term.setCursorPos(1,1)
for x=1,TermW do
for y=1,TermH do
local StarT = math.random(1,30)
term.setCursorPos(1, 1)
for x = 1, TermW do
for y = 1, TermH do
local StarT = math.random(1, 30)
if StarT == DStar then
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setTextColor(cStar)
write(crStar)
elseif StarT == BStar then
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setTextColor(cStar)
write(crStarB)
elseif StarT == nStar then
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setTextColor(cStarG)
write(crStar)
elseif StarT == gStar then
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setTextColor(cStarG)
write(crStarB)
end
@ -263,15 +263,15 @@ local function drawStars()
end
local function drawMap()
for x=1,SizeW do
for y=1,SizeH do
for x = 1, SizeW do
for y = 1, SizeH do
local obj = tScreen[x][y]
if obj.ground == true then
paintutils.drawPixel(XOrgin+x,YOrgin+y+1,cG)
paintutils.drawPixel(XOrgin + x, YOrgin + y + 1, cG)
end
if obj.wall == true then
paintutils.drawPixel(XOrgin+x,YOrgin+y+1,cW)
paintutils.drawPixel(XOrgin + x, YOrgin + y + 1, cW)
end
local ex = tostring(tScreen[x][y].exit)
@ -289,13 +289,13 @@ local function drawMap()
end
term.setBackgroundColor(cG)
term.setTextColor(ex)
term.setCursorPos(XOrgin+x,YOrgin+y+1)
term.setCursorPos(XOrgin + x, YOrgin + y + 1)
print("X")
end
local st = tostring(tScreen[x][y].start)
if not(st == "zz" or st == "nil") then
local Cr = string.sub(st,2,2)
local Cr = string.sub(st, 2, 2)
if Cr == "a" then
Cr = cR1
elseif Cr == "b" then
@ -310,9 +310,9 @@ local function drawMap()
term.setTextColor(Cr)
term.setBackgroundColor(cG)
term.setCursorPos(XOrgin+x,YOrgin+y+1)
term.setCursorPos(XOrgin + x, YOrgin + y + 1)
local sSide = string.sub(st,1,1)
local sSide = string.sub(st, 1, 1)
if sSide == "a" then
print("^")
elseif sSide == "b" then
@ -327,12 +327,12 @@ local function drawMap()
end
if obj.space == true then
paintutils.drawPixel(XOrgin+x,YOrgin+y+1,cS)
paintutils.drawPixel(XOrgin + x, YOrgin + y + 1, cS)
end
local rb = tostring(tScreen[x][y].robot)
if not(rb == "zz" or rb == "nil") then
local Cr = string.sub(rb,2,2)
local Cr = string.sub(rb, 2, 2)
if Cr == "a" then
Cr = cR1
elseif Cr == "b" then
@ -346,8 +346,8 @@ local function drawMap()
end
term.setBackgroundColor(Cr)
term.setTextColor(colors.white)
term.setCursorPos(XOrgin+x,YOrgin+y+1)
local sSide = string.sub(rb,1,1)
term.setCursorPos(XOrgin + x, YOrgin + y + 1)
local sSide = string.sub(rb, 1, 1)
if sSide == "a" then
print("^")
elseif sSide == "b" then
@ -364,7 +364,7 @@ local function drawMap()
end
end
local function isBrick(x,y)
local function isBrick(x, y)
local brb = tostring(tScreen[x][y].robot)
local bobj = oScreen[x][y]
if (brb == "zz" or brb == "nil") and not bobj.wall == true then
@ -376,134 +376,134 @@ end
local function gRender(sContext)
if sContext == "start" then
for x=1,SizeW do
for y=1,SizeH do
for x = 1, SizeW do
for y = 1, SizeH do
local st = tostring(tScreen[x][y].start)
if not(st == "zz" or st == "nil") then
local Cr = string.sub(st,2,2)
local sSide = string.sub(st,1,1)
addRobot(x,y,sSide,Cr)
local Cr = string.sub(st, 2, 2)
local sSide = string.sub(st, 1, 1)
addRobot(x, y, sSide, Cr)
end
end
end
elseif sContext == "tick" then
buMap()
for x=1,SizeW do
for y=1,SizeH do
for x = 1, SizeW do
for y = 1, SizeH do
local rb = tostring(oScreen[x][y].robot)
if not(rb == "zz" or rb == "nil") then
local Cr = string.sub(rb,2,2)
local sSide = string.sub(rb,1,1)
local Cr = string.sub(rb, 2, 2)
local sSide = string.sub(rb, 1, 1)
local sobj = oScreen[x][y]
if sobj.space == true then
tScreen[x][y].robot = "zz"
if not sSide == "g" then
addRobot(x,y,"g",Cr)
addRobot(x, y, "g", Cr)
end
elseif sobj.exit == Cr then
if sSide == "a" or sSide == "b" or sSide == "c" or sSide == "d" then
tScreen[x][y].robot = "zz"
addRobot(x,y,"g",Cr)
aExits = aExits-1
addRobot(x, y, "g", Cr)
aExits = aExits - 1
end
elseif sSide == "a" then
local obj = isBrick(x,y-1)
local obj = isBrick(x, y - 1)
tScreen[x][y].robot = "zz"
if not obj == true then
addRobot(x,y-1,sSide,Cr)
addRobot(x, y - 1, sSide, Cr)
else
local obj2 = isBrick(x-1,y)
local obj3 = isBrick(x+1,y)
local obj2 = isBrick(x - 1, y)
local obj3 = isBrick(x + 1, y)
if not obj2 == true and not obj3 == true then
if Cr == "a" then
addRobot(x,y,"d",Cr)
addRobot(x, y, "d", Cr)
elseif Cr == "b" then
addRobot(x,y,"b",Cr)
addRobot(x, y, "b", Cr)
end
elseif obj == true and obj2 == true and obj3 == true then
addRobot(x,y,"c",Cr)
addRobot(x, y, "c", Cr)
else
if obj3 == true then
addRobot(x,y,"d",Cr)
addRobot(x, y, "d", Cr)
elseif obj2 == true then
addRobot(x,y,"b",Cr)
addRobot(x, y, "b", Cr)
end
end
end
elseif sSide == "b" then
local obj = isBrick(x+1,y)
local obj = isBrick(x + 1, y)
tScreen[x][y].robot = "zz"
if not obj == true then
addRobot(x+1,y,sSide,Cr)
addRobot(x + 1, y, sSide, Cr)
else
local obj2 = isBrick(x,y-1)
local obj3 = isBrick(x,y+1)
local obj2 = isBrick(x, y - 1)
local obj3 = isBrick(x, y + 1)
if not obj2 == true and not obj3 == true then
if Cr == "a" then
addRobot(x,y,"a",Cr)
addRobot(x, y, "a", Cr)
elseif Cr == "b" then
addRobot(x,y,"c",Cr)
addRobot(x, y, "c", Cr)
end
elseif obj == true and obj2 == true and obj3 == true then
addRobot(x,y,"d",Cr)
addRobot(x, y, "d", Cr)
else
if obj3 == true then
addRobot(x,y,"a",Cr)
addRobot(x, y, "a", Cr)
elseif obj2 == true then
addRobot(x,y,"c",Cr)
addRobot(x, y, "c", Cr)
end
end
end
elseif sSide == "c" then
local obj = isBrick(x,y+1)
local obj = isBrick(x, y + 1)
tScreen[x][y].robot = "zz"
if not obj == true then
addRobot(x,y+1,sSide,Cr)
addRobot(x, y + 1, sSide, Cr)
else
local obj2 = isBrick(x-1,y)
local obj3 = isBrick(x+1,y)
local obj2 = isBrick(x - 1, y)
local obj3 = isBrick(x + 1, y)
if not obj2 == true and not obj3 == true then
if Cr == "a" then
addRobot(x,y,"b",Cr)
addRobot(x, y, "b", Cr)
elseif Cr == "b" then
addRobot(x,y,"d",Cr)
addRobot(x, y, "d", Cr)
end
elseif obj == true and obj2 == true and obj3 == true then
addRobot(x,y,"a",Cr)
addRobot(x, y, "a", Cr)
else
if obj3 == true then
addRobot(x,y,"d",Cr)
addRobot(x, y, "d", Cr)
elseif obj2 == true then
addRobot(x,y,"b",Cr)
addRobot(x, y, "b", Cr)
end
end
end
elseif sSide == "d" then
local obj = isBrick(x-1,y)
local obj = isBrick(x - 1, y)
tScreen[x][y].robot = "zz"
if not obj == true then
addRobot(x-1,y,sSide,Cr)
addRobot(x - 1, y, sSide, Cr)
else
local obj2 = isBrick(x,y-1)
local obj3 = isBrick(x,y+1)
local obj2 = isBrick(x, y - 1)
local obj3 = isBrick(x, y + 1)
if not obj2 == true and not obj3 == true then
if Cr == "a" then
addRobot(x,y,"c",Cr)
addRobot(x, y, "c", Cr)
elseif Cr == "b" then
addRobot(x,y,"a",Cr)
addRobot(x, y, "a", Cr)
end
elseif obj == true and obj2 == true and obj3 == true then
addRobot(x,y,"b",Cr)
addRobot(x, y, "b", Cr)
else
if obj3 == true then
addRobot(x,y,"a",Cr)
addRobot(x, y, "a", Cr)
elseif obj2 == true then
addRobot(x,y,"c",Cr)
addRobot(x, y, "c", Cr)
end
end
end
else
addRobot(x,y,sSide,"g")
addRobot(x, y, sSide, "g")
end
end
end
@ -514,15 +514,15 @@ end
function InterFace.drawBar()
term.setBackgroundColor( colors.black )
term.setTextColor( InterFace.cTitle )
printCentred( 1, " "..sLevelTitle.." " )
printCentred( 1, " " .. sLevelTitle .. " " )
term.setCursorPos(1,1)
term.setCursorPos(1, 1)
term.setBackgroundColor( cW )
write( " " )
term.setBackgroundColor( colors.black )
write( " x "..tostring(Blocks).." " )
write( " x " .. tostring(Blocks) .. " " )
term.setCursorPos( TermW-8,TermH )
term.setCursorPos( TermW - 8, TermH )
term.setBackgroundColor( colors.black )
term.setTextColour(InterFace.cSpeedD)
write(" <<" )
@ -539,7 +539,7 @@ function InterFace.drawBar()
end
write(" >>")
term.setCursorPos( TermW-1, 1 )
term.setCursorPos( TermW - 1, 1 )
term.setBackgroundColor( colors.black )
term.setTextColour( InterFace.cExit )
write(" X")
@ -547,13 +547,13 @@ function InterFace.drawBar()
end
function InterFace.render()
local id,p1,p2,p3 = os.pullEvent()
local id, p1, p2, p3 = os.pullEvent()
if id == "mouse_click" then
if p3 == 1 and p2 == TermW then
return "end"
elseif p3 == TermH and p2 >= TermW-7 and p2 <= TermW-6 then
elseif p3 == TermH and p2 >= TermW - 7 and p2 <= TermW - 6 then
return "retry"
elseif p3 == TermH and p2 >= TermW-4 and p2 <= TermW-3 then
elseif p3 == TermH and p2 >= TermW - 4 and p2 <= TermW - 3 then
bPaused = not bPaused
fSpeedS = false
Speed = bPaused and 0 or nSpeed
@ -563,19 +563,19 @@ function InterFace.render()
Tick = nil
end
InterFace.drawBar()
elseif p3 == TermH and p2 >= TermW-1 then
elseif p3 == TermH and p2 >= TermW - 1 then
bPaused = false
fSpeedS = not fSpeedS
Speed = fSpeedS and fSpeed or nSpeed
Tick = os.startTimer(Speed)
InterFace.drawBar()
elseif p3-1 < YOrgin+SizeH+1 and p3-1 > YOrgin and
p2 < XOrgin+SizeW+1 and p2 > XOrgin then
local eobj = tScreen[p2-XOrgin][p3-YOrgin-1]
local erobj = tostring(tScreen[p2-XOrgin][p3-YOrgin-1].robot)
elseif p3 - 1 < YOrgin + SizeH + 1 and p3 - 1 > YOrgin and
p2 < XOrgin + SizeW + 1 and p2 > XOrgin then
local eobj = tScreen[p2 - XOrgin][p3 - YOrgin - 1]
local erobj = tostring(tScreen[p2 - XOrgin][p3 - YOrgin - 1].robot)
if (erobj == "zz" or erobj == "nil") and not eobj.wall == true and not eobj.space == true and Blocks > 0 then
addWall(p2-XOrgin,p3-YOrgin-1)
Blocks = Blocks-1
addWall(p2 - XOrgin, p3 - YOrgin - 1)
Blocks = Blocks - 1
InterFace.drawBar()
drawMap()
end
@ -635,17 +635,17 @@ if ok and not sStartLevel then
term.clear()
drawStars()
term.setTextColor( colors.red )
printCentred( TermH/2 - 1, " REDIRECTION " )
printCentred( TermH/2 - 0, " ComputerCraft Edition " )
printCentred( TermH / 2 - 1, " REDIRECTION " )
printCentred( TermH / 2 - 0, " ComputerCraft Edition " )
term.setTextColor( colors.yellow )
printCentred( TermH/2 + 2, " Click to Begin " )
printCentred( TermH / 2 + 2, " Click to Begin " )
os.pullEvent( "mouse_click" )
end )
end
--Game--
if ok then
ok,err = pcall( function()
ok, err = pcall( function()
local nLevel
if sStartLevel then
nLevel = tonumber( sStartLevel )
@ -668,18 +668,18 @@ if ok then
drawStars()
term.setTextColor( colors.red )
if TermW >= 40 then
printCentred( TermH/2 - 1, " Thank you for playing Redirection " )
printCentred( TermH/2 - 0, " ComputerCraft Edition " )
printCentred( TermH/2 + 2, " Check out the full game: " )
printCentred( TermH / 2 - 1, " Thank you for playing Redirection " )
printCentred( TermH / 2 - 0, " ComputerCraft Edition " )
printCentred( TermH / 2 + 2, " Check out the full game: " )
term.setTextColor( colors.yellow )
printCentred( TermH/2 + 3, " http://www.redirectiongame.com " )
printCentred( TermH / 2 + 3, " http://www.redirectiongame.com " )
else
printCentred( TermH/2 - 2, " Thank you for " )
printCentred( TermH/2 - 1, " playing Redirection " )
printCentred( TermH/2 - 0, " ComputerCraft Edition " )
printCentred( TermH/2 + 2, " Check out the full game: " )
printCentred( TermH / 2 - 2, " Thank you for " )
printCentred( TermH / 2 - 1, " playing Redirection " )
printCentred( TermH / 2 - 0, " ComputerCraft Edition " )
printCentred( TermH / 2 + 2, " Check out the full game: " )
term.setTextColor( colors.yellow )
printCentred( TermH/2 + 3, " www.redirectiongame.com " )
printCentred( TermH / 2 + 3, " www.redirectiongame.com " )
end
parallel.waitForAll(
function() sleep(2) end,
@ -689,7 +689,7 @@ if ok then
end
--Clear and exit--
term.setCursorPos(1,1)
term.setCursorPos(1, 1)
term.setTextColor(colors.white)
term.setBackgroundColor(colors.black)
term.clear()

View File

@ -112,7 +112,7 @@ local items = {
desc = "A perfect handle for torches or a pickaxe.",
},
["a crafting table"] = {
aliases = { "crafting table", "craft table", "work bench", "workbench", "crafting bench", "table", },
aliases = { "crafting table", "craft table", "work bench", "workbench", "crafting bench", "table" },
desc = "It's a crafting table. I shouldn't tell you this, but these don't actually do anything in this game, you can craft tools whenever you like.",
},
["a furnace"] = {
@ -270,7 +270,7 @@ local tAnimals = {
}
local tMonsters = {
"a creeper", "a skeleton", "a zombie", "a spider"
"a creeper", "a skeleton", "a zombie", "a spider",
}
local tRecipes = {
@ -309,8 +309,8 @@ local tGoWest = {
local nGoWest = 0
local bRunning = true
local tMap = { { {}, }, }
local x,y,z = 0,0,0
local tMap = { { {} } }
local x, y, z = 0, 0, 0
local inventory = {
["no tea"] = items["no tea"],
}
@ -338,7 +338,7 @@ local tDayCycle = {
}
local function getTimeOfDay()
return math.fmod( math.floor(nTurn/3), #tDayCycle ) + 1
return math.fmod( math.floor(nTurn / 3), #tDayCycle ) + 1
end
local function isSunny()
@ -364,21 +364,21 @@ local function getRoom( x, y, z, dontCreate )
room.trees = hasTrees( room.nBiome )
-- Add animals
if math.random(1,3) == 1 then
for _ = 1,math.random(1,2) do
if math.random(1, 3) == 1 then
for _ = 1, math.random(1, 2) do
local sAnimal = tAnimals[ math.random( 1, #tAnimals ) ]
room.items[ sAnimal ] = items[ sAnimal ]
end
end
-- Add surface ore
if math.random(1,5) == 1 or hasStone( room.nBiome ) then
if math.random(1, 5) == 1 or hasStone( room.nBiome ) then
room.items[ "some stone" ] = items[ "some stone" ]
end
if math.random(1,8) == 1 then
if math.random(1, 8) == 1 then
room.items[ "some coal" ] = items[ "some coal" ]
end
if math.random(1,8) == 1 and hasRivers( room.nBiome ) then
if math.random(1, 8) == 1 and hasRivers( room.nBiome ) then
room.items[ "a river" ] = items[ "a river" ]
end
@ -389,7 +389,7 @@ local function getRoom( x, y, z, dontCreate )
["east"] = true,
["west"] = true,
}
if math.random(1,8) == 1 then
if math.random(1, 8) == 1 then
room.exits["down"] = true
room.items["a cave entrance"] = items["a cave entrance"]
end
@ -404,7 +404,7 @@ local function getRoom( x, y, z, dontCreate )
room.exits[sDir] = true
end
else
if math.random(1,3) == 1 then
if math.random(1, 3) == 1 then
room.exits[sDir] = true
end
end
@ -431,13 +431,13 @@ local function getRoom( x, y, z, dontCreate )
-- Add ores
room.items[ "some stone" ] = items[ "some stone" ]
if math.random(1,3) == 1 then
if math.random(1, 3) == 1 then
room.items[ "some coal" ] = items[ "some coal" ]
end
if math.random(1,8) == 1 then
if math.random(1, 8) == 1 then
room.items[ "some iron" ] = items[ "some iron" ]
end
if y == -3 and math.random(1,15) == 1 then
if y == -3 and math.random(1, 15) == 1 then
room.items[ "some diamond" ] = items[ "some diamond" ]
end
@ -634,7 +634,7 @@ function commands.wait()
end
function commands.look( _sTarget )
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
if room.dark then
print( "It is pitch dark." )
return
@ -648,7 +648,7 @@ function commands.look( _sTarget )
else
io.write( "You are underground. " )
if next( room.exits ) ~= nil then
print( "You can travel "..itemize( room.exits ).."." )
print( "You can travel " .. itemize( room.exits ) .. "." )
else
print()
end
@ -679,16 +679,16 @@ function commands.look( _sTarget )
end
if tItem then
print( tItem.desc or "You see nothing special about "..sItem.."." )
print( tItem.desc or "You see nothing special about " .. sItem .. "." )
else
print( "You don't see any ".._sTarget.." here." )
print( "You don't see any " .. _sTarget .. " here." )
end
end
end
end
function commands.go( _sDir )
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
if _sDir == nil then
print( "Go where?" )
return
@ -735,7 +735,7 @@ function commands.go( _sDir )
end
function commands.dig( _sDir, _sTool )
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
if _sDir == nil then
print( "Dig where?" )
return
@ -746,7 +746,7 @@ function commands.dig( _sDir, _sTool )
if _sTool ~= nil then
sTool = findItem( inventory, _sTool )
if not sTool then
print( "You're not carrying a ".._sTool.."." )
print( "You're not carrying a " .. _sTool .. "." )
return
end
tTool = inventory[ sTool ]
@ -827,10 +827,10 @@ function commands.dig( _sDir, _sTool )
_sDir == "up" and y == 0 then
inventory[ "some dirt" ] = items[ "some dirt" ]
inventory[ "some stone" ] = items[ "some stone" ]
print( "You dig ".._sDir.." using "..sTool.." and collect some dirt and stone." )
print( "You dig " .. _sDir .. " using " .. sTool .. " and collect some dirt and stone." )
else
inventory[ "some stone" ] = items[ "some stone" ]
print( "You dig ".._sDir.." using "..sTool.." and collect some stone." )
print( "You dig " .. _sDir .. " using " .. sTool .. " and collect some stone." )
end
end
@ -848,7 +848,7 @@ function commands.drop( _sItem )
return
end
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
local sItem = findItem( inventory, _sItem )
if sItem then
local tItem = inventory[ sItem ]
@ -860,7 +860,7 @@ function commands.drop( _sItem )
print( "Dropped." )
end
else
print( "You don't have a ".._sItem.."." )
print( "You don't have a " .. _sItem .. "." )
end
end
@ -871,7 +871,7 @@ function commands.place( _sItem )
end
if _sItem == "torch" or _sItem == "a torch" then
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
if inventory["some torches"] or inventory["a torch"] then
inventory["a torch"] = nil
room.items["a torch"] = items["a torch"]
@ -898,12 +898,12 @@ function commands.take( _sItem )
return
end
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
local sItem = findItem( room.items, _sItem )
if sItem then
local tItem = room.items[ sItem ]
if tItem.heavy == true then
print( "You can't carry "..sItem.."." )
print( "You can't carry " .. sItem .. "." )
elseif tItem.ore == true then
print( "You need to mine this ore." )
else
@ -923,7 +923,7 @@ function commands.take( _sItem )
end
end
else
print( "You don't see a ".._sItem.." here." )
print( "You don't see a " .. _sItem .. " here." )
end
end
@ -933,7 +933,7 @@ function commands.mine( _sItem, _sTool )
return
end
if _sTool == nil then
print( "Mine ".._sItem.." with what?" )
print( "Mine " .. _sItem .. " with what?" )
return
end
commands.cbreak( _sItem, _sTool )
@ -957,12 +957,12 @@ function commands.cbreak( _sItem, _sTool )
if _sTool ~= nil then
sTool = findItem( inventory, _sTool )
if sTool == nil then
print( "You're not carrying a ".._sTool.."." )
print( "You're not carrying a " .. _sTool .. "." )
return
end
end
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
if _sItem == "tree" or _sItem == "trees" or _sItem == "a tree" then
print( "The tree breaks into blocks of wood, which you pick up." )
inventory[ "some wood" ] = items[ "some wood" ]
@ -990,18 +990,18 @@ function commands.cbreak( _sItem, _sTool )
local tTool = inventory[ sTool ]
if tTool.tool then
if tTool.toolLevel < tItem.toolLevel then
print( sTool .." is not strong enough to break this ore." )
print( sTool .. " is not strong enough to break this ore." )
elseif tTool.toolType ~= tItem.toolType then
print( "You need a different kind of tool to break this ore." )
else
print( "The ore breaks, dropping "..sItem..", which you pick up." )
print( "The ore breaks, dropping " .. sItem .. ", which you pick up." )
inventory[ sItem ] = items[ sItem ]
if tItem.infinite ~= true then
room.items[ sItem ] = nil
end
end
else
print( "You can't break "..sItem.." with "..sTool..".")
print( "You can't break " .. sItem .. " with " .. sTool .. ".")
end
elseif tItem.creature == true then
@ -1018,12 +1018,12 @@ function commands.cbreak( _sItem, _sTool )
local tChances = { 0.2, 0.4, 0.55, 0.8, 1 }
if math.random() <= tChances[ toolLevel + 1 ] then
room.items[ sItem ] = nil
print( "The "..tItem.aliases[1].." dies." )
print( "The " .. tItem.aliases[1] .. " dies." )
if tItem.drops then
for _, sDrop in pairs( tItem.drops ) do
if not room.items[sDrop] then
print( "The "..tItem.aliases[1].." dropped "..sDrop.."." )
print( "The " .. tItem.aliases[1] .. " dropped " .. sDrop .. "." )
room.items[sDrop] = items[sDrop]
end
end
@ -1033,23 +1033,23 @@ function commands.cbreak( _sItem, _sTool )
room.nMonsters = room.nMonsters - 1
end
else
print( "The "..tItem.aliases[1].." is injured by your blow." )
print( "The " .. tItem.aliases[1] .. " is injured by your blow." )
end
if tItem.hitDrops then
for _, sDrop in pairs( tItem.hitDrops ) do
if not room.items[sDrop] then
print( "The "..tItem.aliases[1].." dropped "..sDrop.."." )
print( "The " .. tItem.aliases[1] .. " dropped " .. sDrop .. "." )
room.items[sDrop] = items[sDrop]
end
end
end
else
print( "You can't break "..sItem.."." )
print( "You can't break " .. sItem .. "." )
end
else
print( "You don't see a ".._sItem.." here." )
print( "You don't see a " .. _sItem .. " here." )
end
end
@ -1074,14 +1074,14 @@ function commands.craft( _sItem )
local sItem = findItem( items, _sItem )
local tRecipe = sItem and tRecipes[ sItem ] or nil
if tRecipe then
for _,sReq in ipairs( tRecipe ) do
for _, sReq in ipairs( tRecipe ) do
if inventory[sReq] == nil then
print( "You don't have the items you need to craft "..sItem.."." )
print( "You don't have the items you need to craft " .. sItem .. "." )
return
end
end
for _,sReq in ipairs( tRecipe ) do
for _, sReq in ipairs( tRecipe ) do
inventory[sReq] = nil
end
inventory[ sItem ] = items[ sItem ]
@ -1090,7 +1090,7 @@ function commands.craft( _sItem )
end
print( "Crafted." )
else
print( "You don't know how to make "..(sItem or _sItem).."." )
print( "You don't know how to make " .. (sItem or _sItem) .. "." )
end
end
@ -1115,12 +1115,12 @@ function commands.build( _sThing, _sMaterial )
else
sMaterial = findItem( inventory, _sMaterial )
if not sMaterial then
print( "You don't have any ".._sMaterial )
print( "You don't have any " .. _sMaterial )
return
end
if inventory[sMaterial].material ~= true then
print( sMaterial.." is not a good building material." )
print( sMaterial .. " is not a good building material." )
return
end
end
@ -1130,12 +1130,12 @@ function commands.build( _sThing, _sMaterial )
alias = string.match( _sThing, "a ([%a ]+)" )
end
local room = getRoom( x,y,z )
local room = getRoom( x, y, z )
inventory[sMaterial] = nil
room.items[ _sThing ] = {
heavy = true,
aliases = { alias },
desc = "As you look at your creation (made from "..sMaterial.."), you feel a swelling sense of pride.",
desc = "As you look at your creation (made from " .. sMaterial .. "), you feel a swelling sense of pride.",
}
print( "Your construction is complete." )
@ -1158,7 +1158,7 @@ function commands.eat( _sItem )
local sItem = findItem( inventory, _sItem )
if not sItem then
print( "You don't have any ".._sItem.."." )
print( "You don't have any " .. _sItem .. "." )
return
end
@ -1172,7 +1172,7 @@ function commands.eat( _sItem )
bInjured = false
end
else
print( "You can't eat "..sItem.."." )
print( "You can't eat " .. sItem .. "." )
end
end
@ -1195,7 +1195,7 @@ function commands.badinput()
"That doesn't make any sense.",
"What?",
}
print( tResponses[ math.random(1,#tResponses) ] )
print( tResponses[ math.random(1, #tResponses) ] )
end
function commands.noinput()
@ -1206,16 +1206,16 @@ function commands.noinput()
"Don't be shy.",
"Use your words.",
}
print( tResponses[ math.random(1,#tResponses) ] )
print( tResponses[ math.random(1, #tResponses) ] )
end
local function simulate()
local bNewMonstersThisRoom = false
-- Spawn monsters in nearby rooms
for sx = -2,2 do
for sy = -1,1 do
for sz = -2,2 do
for sx = -2, 2 do
for sy = -1, 1 do
for sz = -2, 2 do
local h = y + sy
if h >= -3 and h <= 0 then
local room = getRoom( x + sx, h, z + sz )
@ -1223,15 +1223,15 @@ local function simulate()
-- Spawn monsters
if room.nMonsters < 2 and
(h == 0 and not isSunny() and not room.items["a torch"] or room.dark) and
math.random(1,6) == 1 then
math.random(1, 6) == 1 then
local sMonster = tMonsters[ math.random(1,#tMonsters) ]
local sMonster = tMonsters[ math.random(1, #tMonsters) ]
if room.items[ sMonster ] == nil then
room.items[ sMonster ] = items[ sMonster ]
room.nMonsters = room.nMonsters + 1
if sx == 0 and sy == 0 and sz == 0 and not room.dark then
print( "From the shadows, "..sMonster.." appears." )
print( "From the shadows, " .. sMonster .. " appears." )
bNewMonstersThisRoom = true
end
end
@ -1239,11 +1239,11 @@ local function simulate()
-- Burn monsters
if h == 0 and isSunny() then
for _,sMonster in ipairs( tMonsters ) do
for _, sMonster in ipairs( tMonsters ) do
if room.items[sMonster] and items[sMonster].nocturnal then
room.items[sMonster] = nil
if sx == 0 and sy == 0 and sz == 0 and not room.dark then
print( "With the sun high in the sky, the "..items[sMonster].aliases[1].." bursts into flame and dies." )
print( "With the sun high in the sky, the " .. items[sMonster].aliases[1] .. " bursts into flame and dies." )
end
room.nMonsters = room.nMonsters - 1
end
@ -1257,9 +1257,9 @@ local function simulate()
-- Make monsters attack
local room = getRoom( x, y, z )
if nTimeInRoom >= 2 and not bNewMonstersThisRoom then
for _,sMonster in ipairs( tMonsters ) do
for _, sMonster in ipairs( tMonsters ) do
if room.items[sMonster] then
if math.random(1,4) == 1 and
if math.random(1, 4) == 1 and
not (y == 0 and isSunny() and sMonster == "a spider") then
if sMonster == "a creeper" then
if room.dark then
@ -1271,9 +1271,9 @@ local function simulate()
room.nMonsters = room.nMonsters - 1
else
if room.dark then
print( "A "..items[sMonster].aliases[1].." attacks you." )
print( "A " .. items[sMonster].aliases[1] .. " attacks you." )
else
print( "The "..items[sMonster].aliases[1].." attacks you." )
print( "The " .. items[sMonster].aliases[1] .. " attacks you." )
end
end

View File

@ -23,7 +23,7 @@ elseif sCommand == "play" or sCommand == nil then
if sName == nil then
-- No disc specified, pick one at random
local tNames = {}
for _,sName in ipairs( peripheral.getNames() ) do
for _, sName in ipairs( peripheral.getNames() ) do
if disk.isPresent( sName ) and disk.hasAudio( sName ) then
table.insert( tNames, sName )
end
@ -32,15 +32,15 @@ elseif sCommand == "play" or sCommand == nil then
print( "No Music Discs in attached disk drives" )
return
end
sName = tNames[ math.random(1,#tNames) ]
sName = tNames[ math.random(1, #tNames) ]
end
-- Play the disc
if disk.isPresent( sName ) and disk.hasAudio( sName ) then
print( "Playing "..disk.getAudioTitle( sName ) )
print( "Playing " .. disk.getAudioTitle( sName ) )
disk.playAudio( sName )
else
print( "No Music Disc in disk drive: "..sName )
print( "No Music Disc in disk drive: " .. sName )
return
end

View File

@ -1,5 +1,5 @@
if term.isColour() then
term.setTextColour( 2^math.random(0,15) )
term.setTextColour( 2 ^ math.random(0, 15) )
end
textutils.slowPrint( "Hello World!" )
term.setTextColour( colours.white )

View File

@ -1,6 +1,6 @@
-- Display the start screen
local w,h = term.getSize()
local w, h = term.getSize()
local headingColour, textColour, wormColour, fruitColour
if term.isColour() then
@ -17,27 +17,27 @@ end
local function printCentred( y, s )
local x = math.floor((w - string.len(s)) / 2)
term.setCursorPos(x,y)
term.setCursorPos(x, y)
--term.clearLine()
term.write( s )
end
local xVel,yVel = 1,0
local xPos, yPos = math.floor(w/2), math.floor(h/2)
local xVel, yVel = 1, 0
local xPos, yPos = math.floor(w / 2), math.floor(h / 2)
local pxVel, pyVel = nil, nil
local nExtraLength = 6
local bRunning = true
local tailX,tailY = xPos,yPos
local tailX, tailY = xPos, yPos
local nScore = 0
local nDifficulty = 2
local nSpeed, nInterval
-- Setup the screen
local screen = {}
for x=1,w do
for x = 1, w do
screen[x] = {}
for y=1,h do
for y = 1, h do
screen[x][y] = {}
end
end
@ -54,17 +54,17 @@ local tFruits = {
"q", "r", "s", "t", "u", "v", "w", "x",
"y", "z",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
"@", "$", "%", "#", "&", "!", "?", "+", "*", "~"
"@", "$", "%", "#", "&", "!", "?", "+", "*", "~",
}
local function addFruit()
while true do
local x = math.random(1,w)
local y = math.random(2,h)
local x = math.random(1, w)
local y = math.random(2, h)
local fruit = screen[x][y]
if fruit.snake == nil and fruit.wall == nil and fruit.fruit == nil then
screen[x][y] = { fruit = true }
term.setCursorPos(x,y)
term.setCursorPos(x, y)
term.setBackgroundColour( fruitColour )
term.write(" ")
term.setBackgroundColour( colours.black )
@ -80,19 +80,19 @@ end
local function drawMenu()
term.setTextColour( headingColour )
term.setCursorPos(1,1)
term.setCursorPos(1, 1)
term.write( "SCORE " )
term.setTextColour( textColour )
term.setCursorPos(7,1)
term.setCursorPos(7, 1)
term.write( tostring(nScore) )
term.setTextColour( headingColour )
term.setCursorPos(w-11,1)
term.setCursorPos(w - 11, 1)
term.write( "DIFFICULTY ")
term.setTextColour( textColour )
term.setCursorPos(w,1)
term.setCursorPos(w, 1)
term.write( tostring(nDifficulty or "?") )
term.setTextColour( colours.white )
@ -108,7 +108,7 @@ local function update( )
if nExtraLength == 0 then
local tail = screen[tailX][tailY]
screen[tailX][tailY] = {}
term.setCursorPos(tailX,tailY)
term.setCursorPos(tailX, tailY)
term.write(" ")
tailX = tail.nextX
tailY = tail.nextY
@ -149,7 +149,7 @@ local function update( )
end
term.setCursorPos(xPos,yPos)
term.setCursorPos(xPos, yPos)
term.setBackgroundColour( wormColour )
term.write(" ")
term.setBackgroundColour( colours.black )
@ -164,20 +164,20 @@ local function drawFrontend()
--printCentred( math.floor(h/2) - 4, " W O R M " )
term.setTextColour( headingColour )
printCentred( math.floor(h/2) - 3, "" )
printCentred( math.floor(h/2) - 2, " SELECT DIFFICULTY " )
printCentred( math.floor(h/2) - 1, "" )
printCentred( math.floor(h / 2) - 3, "" )
printCentred( math.floor(h / 2) - 2, " SELECT DIFFICULTY " )
printCentred( math.floor(h / 2) - 1, "" )
printCentred( math.floor(h/2) + 0, " " )
printCentred( math.floor(h/2) + 1, " " )
printCentred( math.floor(h/2) + 2, " " )
printCentred( math.floor(h/2) - 1 + nDifficulty, " [ ] " )
printCentred( math.floor(h / 2) + 0, " " )
printCentred( math.floor(h / 2) + 1, " " )
printCentred( math.floor(h / 2) + 2, " " )
printCentred( math.floor(h / 2) - 1 + nDifficulty, " [ ] " )
term.setTextColour( textColour )
printCentred( math.floor(h/2) + 0, "EASY" )
printCentred( math.floor(h/2) + 1, "MEDIUM" )
printCentred( math.floor(h/2) + 2, "HARD" )
printCentred( math.floor(h/2) + 3, "" )
printCentred( math.floor(h / 2) + 0, "EASY" )
printCentred( math.floor(h / 2) + 1, "MEDIUM" )
printCentred( math.floor(h / 2) + 2, "HARD" )
printCentred( math.floor(h / 2) + 3, "" )
term.setTextColour( colours.white )
end
@ -185,7 +185,7 @@ end
drawMenu()
drawFrontend()
while true do
local _,key = os.pullEvent( "key" )
local _, key = os.pullEvent( "key" )
if key == keys.up or key == keys.w then
-- Up
if nDifficulty > 1 then
@ -233,23 +233,23 @@ while bRunning do
if key == keys.up or key == keys.w then
-- Up
if yVel == 0 then
pxVel,pyVel = 0,-1
pxVel, pyVel = 0, -1
end
elseif key == keys.down or key == keys.s then
-- Down
if yVel == 0 then
pxVel,pyVel = 0,1
pxVel, pyVel = 0, 1
end
elseif key == keys.left or key == keys.a then
-- Left
if xVel == 0 then
pxVel,pyVel = -1,0
pxVel, pyVel = -1, 0
end
elseif key == keys.right or key == keys.d then
-- Right
if xVel == 0 then
pxVel,pyVel = 1,0
pxVel, pyVel = 1, 0
end
end
@ -258,25 +258,25 @@ end
-- Display the gameover screen
term.setTextColour( headingColour )
printCentred( math.floor(h/2) - 2, " " )
printCentred( math.floor(h/2) - 1, " G A M E O V E R " )
printCentred( math.floor(h / 2) - 2, " " )
printCentred( math.floor(h / 2) - 1, " G A M E O V E R " )
term.setTextColour( textColour )
printCentred( math.floor(h/2) + 0, " " )
printCentred( math.floor(h/2) + 1, " FINAL SCORE "..nScore.." " )
printCentred( math.floor(h/2) + 2, " " )
printCentred( math.floor(h / 2) + 0, " " )
printCentred( math.floor(h / 2) + 1, " FINAL SCORE " .. nScore .. " " )
printCentred( math.floor(h / 2) + 2, " " )
term.setTextColour( colours.white )
local timer = os.startTimer(2.5)
repeat
local e,p = os.pullEvent()
local e, p = os.pullEvent()
if e == "timer" and p == timer then
term.setTextColour( textColour )
printCentred( math.floor(h/2) + 2, " PRESS ANY KEY " )
printCentred( math.floor(h/2) + 3, " " )
printCentred( math.floor(h / 2) + 2, " PRESS ANY KEY " )
printCentred( math.floor(h / 2) + 3, " " )
term.setTextColour( colours.white )
end
until e == "char"
term.clear()
term.setCursorPos(1,1)
term.setCursorPos(1, 1)

View File

@ -28,7 +28,7 @@ elseif sCommand == "host" then
-- Find a modem
local sModemSide = nil
for _,sSide in ipairs( rs.getSides() ) do
for _, sSide in ipairs( rs.getSides() ) do
if peripheral.getType( sSide ) == "modem" and peripheral.call( sSide, "isWireless" ) then
sModemSide = sSide
break
@ -41,7 +41,7 @@ elseif sCommand == "host" then
end
-- Determine position
local x,y,z
local x, y, z
if #tArgs >= 4 then
-- Position is manually specified
x = tonumber(tArgs[2])
@ -51,10 +51,10 @@ elseif sCommand == "host" then
printUsage()
return
end
print( "Position is "..x..","..y..","..z )
print( "Position is " .. x .. "," .. y .. "," .. z )
else
-- Position is to be determined using locate
x,y,z = gps.locate( 2, true )
x, y, z = gps.locate( 2, true )
if x == nil then
print( "Run \"gps host <x> <y> <z>\" to set position manually" )
return
@ -63,7 +63,7 @@ elseif sCommand == "host" then
-- Open a channel
local modem = peripheral.wrap( sModemSide )
print( "Opening channel on modem "..sModemSide )
print( "Opening channel on modem " .. sModemSide )
modem.open( gps.CHANNEL_GPS )
-- Serve requests indefinately
@ -80,10 +80,10 @@ elseif sCommand == "host" then
-- Print the number of requests handled
nServed = nServed + 1
if nServed > 1 then
local _,y = term.getCursorPos()
term.setCursorPos(1,y-1)
local _, y = term.getCursorPos()
term.setCursorPos(1, y - 1)
end
print( nServed.." GPS requests served" )
print( nServed .. " GPS requests served" )
end
end
end

View File

@ -46,9 +46,9 @@ local function get(url)
write( "Connecting to pastebin.com... " )
-- Add a cache buster so that spam protection is re-checked
local cacheBuster = ("%x"):format(math.random(0, 2^30))
local cacheBuster = ("%x"):format(math.random(0, 2 ^ 30))
local response, err = http.get(
"https://pastebin.com/raw/"..textutils.urlEncode( paste ).."?cb="..cacheBuster
"https://pastebin.com/raw/" .. textutils.urlEncode( paste ) .. "?cb=" .. cacheBuster
)
if response then
@ -93,11 +93,11 @@ if sCommand == "put" then
local key = "0ec2eb25b6166c0c27a394ae118ad829"
local response = http.post(
"https://pastebin.com/api/api_post.php",
"api_option=paste&"..
"api_dev_key="..key.."&"..
"api_paste_format=lua&"..
"api_paste_name="..textutils.urlEncode(sName).."&"..
"api_paste_code="..textutils.urlEncode(sText)
"api_option=paste&" ..
"api_dev_key=" .. key .. "&" ..
"api_paste_format=lua&" ..
"api_paste_name=" .. textutils.urlEncode(sName) .. "&" ..
"api_paste_code=" .. textutils.urlEncode(sText)
)
if response then
@ -107,8 +107,8 @@ if sCommand == "put" then
response.close()
local sCode = string.match( sResponse, "[^/]+$" )
print( "Uploaded as "..sResponse )
print( "Run \"pastebin get "..sCode.."\" to download anywhere" )
print( "Uploaded as " .. sResponse )
print( "Run \"pastebin get " .. sCode .. "\" to download anywhere" )
else
print( "Failed." )
@ -137,7 +137,7 @@ elseif sCommand == "get" then
file.write( res )
file.close()
print( "Downloaded as "..sFile )
print( "Downloaded as " .. sFile )
end
elseif sCommand == "run" then
local sCode = tArgs[2]

View File

@ -6,24 +6,24 @@ if #tArgs > 0 then
end
if sDrive == nil then
print( "This is computer #"..os.getComputerID() )
print( "This is computer #" .. os.getComputerID() )
local label = os.getComputerLabel()
if label then
print( "This computer is labelled \""..label.."\"" )
print( "This computer is labelled \"" .. label .. "\"" )
end
else
local bData = disk.hasData( sDrive )
if not bData then
print( "No disk in drive "..sDrive )
print( "No disk in drive " .. sDrive )
return
end
print( "The disk is #"..disk.getID( sDrive ) )
print( "The disk is #" .. disk.getID( sDrive ) )
local label = disk.getLabel( sDrive )
if label then
print( "The disk is labelled \""..label.."\"" )
print( "The disk is labelled \"" .. label .. "\"" )
end
end

View File

@ -14,11 +14,11 @@ local function checkDrive( sDrive )
-- Check the disk exists
local bData = disk.hasData( sDrive )
if not bData then
print( "No disk in "..sDrive.." drive" )
print( "No disk in " .. sDrive .. " drive" )
return false
end
else
print( "No disk drive named "..sDrive )
print( "No disk drive named " .. sDrive )
return false
end
return true
@ -29,7 +29,7 @@ local function get( sDrive )
if checkDrive( sDrive ) then
local sLabel = disk.getLabel( sDrive )
if sLabel then
print( "Disk label is \""..sLabel.."\"" )
print( "Disk label is \"" .. sLabel .. "\"" )
else
print( "No Disk label" )
end
@ -37,7 +37,7 @@ local function get( sDrive )
else
local sLabel = os.getComputerLabel()
if sLabel then
print( "Computer label is \""..sLabel.."\"" )
print( "Computer label is \"" .. sLabel .. "\"" )
else
print( "No Computer label" )
end
@ -50,7 +50,7 @@ local function set( sDrive, sText )
disk.setLabel( sDrive, sText )
local sLabel = disk.getLabel( sDrive )
if sLabel then
print( "Disk label set to \""..sLabel.."\"" )
print( "Disk label set to \"" .. sLabel .. "\"" )
else
print( "Disk label cleared" )
end
@ -59,7 +59,7 @@ local function set( sDrive, sText )
os.setComputerLabel( sText )
local sLabel = os.getComputerLabel()
if sLabel then
print( "Computer label set to \""..sLabel.."\"" )
print( "Computer label set to \"" .. sLabel .. "\"" )
else
print( "Computer label cleared" )
end

View File

@ -67,7 +67,7 @@ while bRunning do
local nForcePrint = 0
local func, e = load( s, "=lua", "t", tEnv )
local func2 = load( "return _echo("..s..");", "=lua", "t", tEnv )
local func2 = load( "return _echo(" .. s .. ");", "=lua", "t", tEnv )
if not func then
if func2 then
func = func2

View File

@ -8,9 +8,9 @@ end
for _, v in ipairs( tArgs ) do
local sNewDir = shell.resolve( v )
if fs.exists( sNewDir ) and not fs.isDir( sNewDir ) then
printError( v..": Destination exists" )
printError( v .. ": Destination exists" )
elseif fs.isReadOnly( sNewDir ) then
printError( v..": Access denied" )
printError( v .. ": Access denied" )
else
fs.makeDir( sNewDir )
end

View File

@ -11,18 +11,18 @@ end
local sName = tArgs[1]
if peripheral.getType( sName ) ~= "monitor" then
print( "No monitor named ".. sName )
print( "No monitor named " .. sName )
return
end
local sProgram = tArgs[2]
local sPath = shell.resolveProgram( sProgram )
if sPath == nil then
print( "No such program: "..sProgram )
print( "No such program: " .. sProgram )
return
end
print( "Running "..sProgram.." on monitor "..sName )
print( "Running " .. sProgram .. " on monitor " .. sName )
local monitor = peripheral.wrap( sName )
local previousTerm = term.redirect( monitor )

View File

@ -3,7 +3,7 @@ local tMotd = {}
for sPath in string.gmatch(settings.get( "motd.path" ), "[^:]+") do
if fs.exists(sPath) then
for sLine in io.lines(sPath) do
table.insert(tMotd,sLine)
table.insert(tMotd, sLine)
end
end
end
@ -11,5 +11,5 @@ end
if #tMotd == 0 then
print("missingno")
else
print(tMotd[math.random(1,#tMotd)])
print(tMotd[math.random(1, #tMotd)])
end

View File

@ -9,7 +9,7 @@ local sSource = shell.resolve( tArgs[1] )
local sDest = shell.resolve( tArgs[2] )
local tFiles = fs.find( sSource )
if #tFiles > 0 then
for _,sFile in ipairs( tFiles ) do
for _, sFile in ipairs( tFiles ) do
if fs.isDir( sDest ) then
fs.move( sFile, fs.combine( sDest, fs.getName(sFile) ) )
elseif #tFiles == 1 then

View File

@ -1,7 +1,7 @@
local tPeripherals = peripheral.getNames()
print( "Attached Peripherals:" )
if #tPeripherals > 0 then
for n=1,#tPeripherals do
for n = 1, #tPeripherals do
local sPeripheral = tPeripherals[n]
print( sPeripheral .. " (" .. peripheral.getType( sPeripheral ) .. ")" )
end

View File

@ -4,178 +4,178 @@ This version written by Gopher, at the request of Dan200, for
ComputerCraft v1.6. No particular rights are reserved.
--]]
local function colorass(c,bw)
local function colorass(c, bw)
return term.isColor() and c or bw
end
local block_s1= {
local block_s1 = {
{
{ 1,0,0,0, },
{ 1,1,0,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 1, 0, 0, 0 },
{ 1, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,0,0, },
{ 0,1,1,0, },
{ 1,1,0,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 0, 1, 1, 0 },
{ 1, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","{}"),
fg=colorass(colors.blue,colors.black),
bg=colorass(colors.cyan,colors.white),
ch = colorass(" ", "{}"),
fg = colorass(colors.blue, colors.black),
bg = colorass(colors.cyan, colors.white),
}
local block_s2= {
local block_s2 = {
{
{ 0,1,0,0, },
{ 1,1,0,0, },
{ 1,0,0,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 1, 1, 0, 0 },
{ 1, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,0,0, },
{ 1,1,0,0, },
{ 0,1,1,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 1, 1, 0, 0 },
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","{}"),
fg=colorass(colors.green,colors.black),
bg=colorass(colors.lime,colors.white),
ch = colorass(" ", "{}"),
fg = colorass(colors.green, colors.black),
bg = colorass(colors.lime, colors.white),
}
local block_line = {
{
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
},
{
{ 0,0,0,0, },
{ 1,1,1,1, },
{ 0,0,0,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 1, 1, 1, 1 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","[]"),
fg=colorass(colors.pink,colors.black),
bg=colorass(colors.red,colors.white),
ch = colorass(" ", "[]"),
fg = colorass(colors.pink, colors.black),
bg = colorass(colors.red, colors.white),
}
local block_square = {
{
{ 1,1,0,0, },
{ 1,1,0,0, },
{ 0,0,0,0, },
{ 0,0,0,0, },
{ 1, 1, 0, 0 },
{ 1, 1, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","[]"),
fg=colorass(colors.lightBlue,colors.black),
bg=colorass(colors.blue,colors.white),
ch = colorass(" ", "[]"),
fg = colorass(colors.lightBlue, colors.black),
bg = colorass(colors.blue, colors.white),
}
local block_L1 = {
{
{ 1,1,0,0, },
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 1, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,0,0, },
{ 1,1,1,0, },
{ 1,0,0,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 1, 1, 1, 0 },
{ 1, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0,1,1,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,1,0, },
{ 1,1,1,0, },
{ 0,0,0,0, },
{ 0,0,0,0, },
{ 0, 0, 1, 0 },
{ 1, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","()"),
fg=colorass(colors.orange,colors.black),
bg=colorass(colors.yellow,colors.white),
ch = colorass(" ", "()"),
fg = colorass(colors.orange, colors.black),
bg = colorass(colors.yellow, colors.white),
}
local block_L2 = {
{
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 1,1,0,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 1, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,0,0, },
{ 1,1,1,0, },
{ 0,0,1,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 1, 1, 1, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,1,1,0, },
{ 0,1,0,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 0, 1, 1, 0 },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 1,0,0,0, },
{ 1,1,1,0, },
{ 0,0,0,0, },
{ 0,0,0,0, },
{ 1, 0, 0, 0 },
{ 1, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","()"),
fg=colorass(colors.brown,colors.black),
bg=colorass(colors.orange,colors.white),
ch = colorass(" ", "()"),
fg = colorass(colors.brown, colors.black),
bg = colorass(colors.orange, colors.white),
}
local block_T = {
{
{ 0,1,0,0, },
{ 1,1,0,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 1, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,0,0,0, },
{ 1,1,1,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 0, 0, 0, 0 },
{ 1, 1, 1, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,1,0,0, },
{ 0,1,1,0, },
{ 0,1,0,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 0, 1, 1, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 },
},
{
{ 0,1,0,0, },
{ 1,1,1,0, },
{ 0,0,0,0, },
{ 0,0,0,0, },
{ 0, 1, 0, 0 },
{ 1, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
},
ch=colorass(" ","<>"),
fg=colorass(colors.cyan,colors.black),
bg=colorass(colors.purple,colors.white),
ch = colorass(" ", "<>"),
fg = colorass(colors.cyan, colors.black),
bg = colorass(colors.purple, colors.white),
}
local blocks={ block_line, block_square, block_s1, block_s2, block_L1, block_L2, block_T}
local blocks = { block_line, block_square, block_s1, block_s2, block_L1, block_L2, block_T}
local points={4,10,30,120}
local points = {4, 10, 30, 120}
local function lpad(text,amt)
text=tostring(text)
return string.rep(" ",amt-#text)..text
local function lpad(text, amt)
text = tostring(text)
return string.rep(" ", amt - #text) .. text
end
local width,height=term.getSize()
local width, height = term.getSize()
if height<19 or width<26 then
if height < 19 or width < 26 then
print("Your screen is too small to play :(")
return
end
local speedsByLevel={
local speedsByLevel = {
1.2,
1.0,
.8,
@ -187,23 +187,23 @@ local speedsByLevel={
.2,
.15,
.1,
.05,}
.05, }
local level=1
local level = 1
local function playGame()
local score=0
local lines=0
local initialLevel=level
local next=blocks[math.random(1,#blocks)]
local score = 0
local lines = 0
local initialLevel = level
local next = blocks[math.random(1, #blocks)]
local pit={}
local pit = {}
local heightAdjust=0
local heightAdjust = 0
if height<=19 then
heightAdjust=1
if height <= 19 then
heightAdjust = 1
end
@ -215,56 +215,56 @@ local function playGame()
term.setTextColor(colors.black)
term.setBackgroundColor(colorass(colors.lightGray, colors.white))
term.setCursorPos(22,2)
term.setCursorPos(22, 2)
term.write("Score") --score
term.setCursorPos(22,5)
term.setCursorPos(22, 5)
term.write("Level") --level
term.setCursorPos(22,8)
term.setCursorPos(22, 8)
term.write("Lines") --lines
term.setCursorPos(22,12)
term.setCursorPos(22, 12)
term.write("Next") --next
term.setCursorPos(21,1)
term.setCursorPos(21, 1)
term.write(" ")
term.setCursorPos(21,2)
term.setCursorPos(21, 2)
term.write(" ") --score
term.setCursorPos(21,3)
term.setCursorPos(21, 3)
term.write(" ")
term.setCursorPos(21,4)
term.setCursorPos(21, 4)
term.write(" ")
term.setCursorPos(21,5)
term.setCursorPos(21, 5)
term.write(" ") --level
term.setCursorPos(21,6)
term.setCursorPos(21, 6)
term.write(" ")
term.setCursorPos(21,7)
term.setCursorPos(21, 7)
term.write(" ")
term.setCursorPos(21,8)
term.setCursorPos(21, 8)
term.write(" ") --lines
term.setCursorPos(21,9)
term.setCursorPos(21, 9)
term.write(" ")
term.setCursorPos(21,10)
term.setCursorPos(21, 10)
term.write(" ")
term.setCursorPos(21,11)
term.setCursorPos(21, 11)
term.write(" ")
term.setCursorPos(21,12)
term.setCursorPos(21, 12)
term.write(" ") --next
term.setCursorPos(26,12)
term.setCursorPos(26, 12)
term.write(" ") --next
term.setCursorPos(21,13)
term.setCursorPos(21, 13)
term.write(" ")
term.setCursorPos(21,14)
term.setCursorPos(21, 14)
term.write(" ")
term.setCursorPos(21,15)
term.setCursorPos(21, 15)
term.write(" ")
term.setCursorPos(21,16)
term.setCursorPos(21, 16)
term.write(" ")
term.setCursorPos(21,17)
term.setCursorPos(21, 17)
term.write(" ")
term.setCursorPos(21,18)
term.setCursorPos(21, 18)
term.write(" ")
term.setCursorPos(21,19)
term.setCursorPos(21, 19)
term.write(" ")
term.setCursorPos(21,20)
term.setCursorPos(21, 20)
term.write(" ")
end
@ -272,47 +272,47 @@ local function playGame()
term.setTextColor(colors.white)
term.setBackgroundColor(colors.black)
term.setCursorPos(22,3)
term.write(lpad(score,5)) --score
term.setCursorPos(22,6)
term.write(lpad(level,5)) --level
term.setCursorPos(22,9)
term.write(lpad(lines,5)) --lines
term.setCursorPos(22, 3)
term.write(lpad(score, 5)) --score
term.setCursorPos(22, 6)
term.write(lpad(level, 5)) --level
term.setCursorPos(22, 9)
term.write(lpad(lines, 5)) --lines
end
local function drawBlockAt(block,xp,yp,rot)
local function drawBlockAt(block, xp, yp, rot)
term.setTextColor(block.fg)
term.setBackgroundColor(block.bg)
for y=1,4 do
for x=1,4 do
if block[rot][y][x]==1 then
term.setCursorPos((xp+x)*2-3,yp+y-1-heightAdjust)
for y = 1, 4 do
for x = 1, 4 do
if block[rot][y][x] == 1 then
term.setCursorPos((xp + x) * 2 - 3, yp + y - 1 - heightAdjust)
term.write(block.ch)
end
end
end
end
local function eraseBlockAt(block,xp,yp,rot)
local function eraseBlockAt(block, xp, yp, rot)
term.setTextColor(colors.white)
term.setBackgroundColor(colors.black)
for y=1,4 do
for x=1,4 do
if block[rot][y][x]==1 then
term.setCursorPos((xp+x)*2-3,yp+y-1-heightAdjust)
for y = 1, 4 do
for x = 1, 4 do
if block[rot][y][x] == 1 then
term.setCursorPos((xp + x) * 2 - 3, yp + y - 1 - heightAdjust)
term.write(" ")
end
end
end
end
local function testBlockAt(block,xp,yp,rot)
for y=1,4 do
local ty=yp+y-1
for x=1,4 do
local tx=xp+x-1
if block[rot][y][x]==1 then
if tx>10 or tx<1 or ty>20 or pit[ty][tx]~=0 then
local function testBlockAt(block, xp, yp, rot)
for y = 1, 4 do
local ty = yp + y - 1
for x = 1, 4 do
local tx = xp + x - 1
if block[rot][y][x] == 1 then
if tx > 10 or tx < 1 or ty > 20 or pit[ty][tx] ~= 0 then
return true
end
end
@ -320,11 +320,11 @@ local function playGame()
end
end
local function pitBlock(block,xp,yp,rot)
for y=1,4 do
for x=1,4 do
if block[rot][y][x]==1 then
pit[yp+y-1][xp+x-1]=block
local function pitBlock(block, xp, yp, rot)
for y = 1, 4 do
for x = 1, 4 do
if block[rot][y][x] == 1 then
pit[yp + y - 1][xp + x - 1] = block
end
end
end
@ -332,10 +332,10 @@ local function playGame()
local function clearPit()
for row=1,20 do
pit[row]={}
for col=1,10 do
pit[row][col]=0
for row = 1, 20 do
pit[row] = {}
for col = 1, 10 do
pit[row][col] = 0
end
end
end
@ -350,24 +350,24 @@ local function playGame()
local halt=false
local dropSpeed=speedsByLevel[math.min(level,12)]
local halt = false
local dropSpeed = speedsByLevel[math.min(level, 12)]
local curBlock=next
next=blocks[math.random(1,7)]
local curBlock = next
next = blocks[math.random(1, 7)]
local curX, curY, curRot=4, 1, 1
local dropTimer=os.startTimer(dropSpeed)
local curX, curY, curRot = 4, 1, 1
local dropTimer = os.startTimer(dropSpeed)
drawBlockAt(next,11.5,15+heightAdjust,1)
drawBlockAt(curBlock,curX,curY,curRot)
drawBlockAt(next, 11.5, 15 + heightAdjust, 1)
drawBlockAt(curBlock, curX, curY, curRot)
local function redrawPit()
for r=1+heightAdjust,20 do
term.setCursorPos(1,r-heightAdjust)
for c=1,10 do
if pit[r][c]==0 then
for r = 1 + heightAdjust, 20 do
term.setCursorPos(1, r - heightAdjust)
for c = 1, 10 do
if pit[r][c] == 0 then
term.setTextColor(colors.black)
term.setBackgroundColor(colors.black)
term.write(" ")
@ -381,8 +381,8 @@ local function playGame()
end
local function hidePit()
for r=1+heightAdjust,20 do
term.setCursorPos(1,r-heightAdjust)
for r = 1 + heightAdjust, 20 do
term.setCursorPos(1, r - heightAdjust)
term.setTextColor(colors.black)
term.setBackgroundColor(colors.black)
term.write(" ")
@ -390,56 +390,56 @@ local function playGame()
end
local function msgBox(message)
local x=math.floor((17-#message)/2)
term.setBackgroundColor(colorass(colors.lightGray,colors.white))
local x = math.floor((17 - #message) / 2)
term.setBackgroundColor(colorass(colors.lightGray, colors.white))
term.setTextColor(colors.black)
term.setCursorPos(x,9)
term.write("+"..string.rep("-",#message+2).."+")
term.setCursorPos(x,10)
term.setCursorPos(x, 9)
term.write("+" .. string.rep("-", #message + 2) .. "+")
term.setCursorPos(x, 10)
term.write("|")
term.setCursorPos(x+#message+3,10)
term.setCursorPos(x + #message + 3, 10)
term.write("|")
term.setCursorPos(x,11)
term.write("+"..string.rep("-",#message+2).."+")
term.setCursorPos(x, 11)
term.write("+" .. string.rep("-", #message + 2) .. "+")
term.setTextColor(colors.white)
term.setBackgroundColor(colors.black)
term.setCursorPos(x+1,10)
term.write(" "..message.." ")
term.setCursorPos(x + 1, 10)
term.write(" " .. message .. " ")
end
local function clearRows()
local rows={}
for r=1,20 do
local count=0
for c=1,10 do
if pit[r][c]~=0 then
count=count+1
local rows = {}
for r = 1, 20 do
local count = 0
for c = 1, 10 do
if pit[r][c] ~= 0 then
count = count + 1
else
break
end
end
if count==10 then
rows[#rows+1]=r
if count == 10 then
rows[#rows + 1] = r
end
end
if #rows>0 then
for _=1,4 do
if #rows > 0 then
for _ = 1, 4 do
sleep(.1)
for r=1,#rows do
r=rows[r]
term.setCursorPos(1,r-heightAdjust)
for c=1,10 do
for r = 1, #rows do
r = rows[r]
term.setCursorPos(1, r - heightAdjust)
for c = 1, 10 do
term.setTextColor(pit[r][c].bg)
term.setBackgroundColor(pit[r][c].fg)
term.write(pit[r][c].ch)
end
end
sleep(.1)
for r=1,#rows do
r=rows[r]
term.setCursorPos(1,r-heightAdjust)
for c=1,10 do
for r = 1, #rows do
r = rows[r]
term.setCursorPos(1, r - heightAdjust)
for c = 1, 10 do
term.setTextColor(pit[r][c].fg)
term.setBackgroundColor(pit[r][c].bg)
term.write(pit[r][c].ch)
@ -448,154 +448,154 @@ local function playGame()
end
--now remove the rows and drop everythign else
term.setBackgroundColor(colors.black)
for r=1,#rows do
r=rows[r]
term.setCursorPos(1,r-heightAdjust)
for r = 1, #rows do
r = rows[r]
term.setCursorPos(1, r - heightAdjust)
term.write(" ")
end
sleep(.25)
for r=1,#rows do
table.remove(pit,rows[r])
table.insert(pit,1,{0,0,0,0,0,0,0,0,0,0})
for r = 1, #rows do
table.remove(pit, rows[r])
table.insert(pit, 1, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0})
end
redrawPit()
lines=lines+#rows
score=score+points[#rows]*math.min(level,20)
level=math.floor(lines/10)+initialLevel
dropSpeed=speedsByLevel[math.min(level,12)]
lines = lines + #rows
score = score + points[#rows] * math.min(level, 20)
level = math.floor(lines / 10) + initialLevel
dropSpeed = speedsByLevel[math.min(level, 12)]
updateNumbers()
end
sleep(.25)
end
local function blockFall()
if testBlockAt(curBlock,curX,curY+1,curRot) then
pitBlock(curBlock,curX,curY,curRot)
if testBlockAt(curBlock, curX, curY + 1, curRot) then
pitBlock(curBlock, curX, curY, curRot)
--detect rows that clear
clearRows()
curBlock=next
curX=4
curY=1
curRot=1
if testBlockAt(curBlock,curX,curY,curRot) then
halt=true
curBlock = next
curX = 4
curY = 1
curRot = 1
if testBlockAt(curBlock, curX, curY, curRot) then
halt = true
end
drawBlockAt(curBlock,curX,curY,curRot)
eraseBlockAt(next,11.5,15+heightAdjust,1)
next=blocks[math.random(1,7)]
drawBlockAt(next,11.5,15+heightAdjust,1)
drawBlockAt(curBlock, curX, curY, curRot)
eraseBlockAt(next, 11.5, 15 + heightAdjust, 1)
next = blocks[math.random(1, 7)]
drawBlockAt(next, 11.5, 15 + heightAdjust, 1)
return true
else
eraseBlockAt(curBlock,curX,curY,curRot)
curY=curY+1
drawBlockAt(curBlock,curX,curY,curRot)
eraseBlockAt(curBlock, curX, curY, curRot)
curY = curY + 1
drawBlockAt(curBlock, curX, curY, curRot)
return false
end
end
while not halt do
local e={os.pullEvent()}
if e[1]=="timer" then
if e[2]==dropTimer then
local e = {os.pullEvent()}
if e[1] == "timer" then
if e[2] == dropTimer then
blockFall()
dropTimer=os.startTimer(dropSpeed)
dropTimer = os.startTimer(dropSpeed)
end
elseif e[1]=="key" then
local key=e[2]
local dx,dy,dr=0,0,0
if key==keys.left or key==keys.a then
dx=-1
elseif key==keys.right or key==keys.d then
dx=1
elseif key==keys.up or key==keys.w then
dr=1
elseif key==keys.down or key==keys.s then
elseif e[1] == "key" then
local key = e[2]
local dx, dy, dr = 0, 0, 0
if key == keys.left or key == keys.a then
dx = -1
elseif key == keys.right or key == keys.d then
dx = 1
elseif key == keys.up or key == keys.w then
dr = 1
elseif key == keys.down or key == keys.s then
while not blockFall() do end
dropTimer=os.startTimer(dropSpeed)
elseif key==keys.space then
dropTimer = os.startTimer(dropSpeed)
elseif key == keys.space then
hidePit()
msgBox("Paused")
while ({os.pullEvent("key")})[2]~=keys.space do end
while ({os.pullEvent("key")})[2] ~= keys.space do end
redrawPit()
drawBlockAt(curBlock,curX,curY,curRot)
dropTimer=os.startTimer(dropSpeed)
drawBlockAt(curBlock, curX, curY, curRot)
dropTimer = os.startTimer(dropSpeed)
end
if dx+dr~=0 then
if not testBlockAt(curBlock,curX+dx,curY+dy,dr>0 and curRot%#curBlock+dr or curRot) then
eraseBlockAt(curBlock,curX,curY,curRot)
curX=curX+dx
curY=curY+dy
curRot=dr==0 and curRot or curRot%#curBlock+dr
drawBlockAt(curBlock,curX,curY,curRot)
if dx + dr ~= 0 then
if not testBlockAt(curBlock, curX + dx, curY + dy, dr > 0 and curRot % #curBlock + dr or curRot) then
eraseBlockAt(curBlock, curX, curY, curRot)
curX = curX + dx
curY = curY + dy
curRot = dr == 0 and curRot or curRot % #curBlock + dr
drawBlockAt(curBlock, curX, curY, curRot)
end
end
elseif e[1]=="term_resize" then
local _,h=term.getSize()
if h==20 then
heightAdjust=0
elseif e[1] == "term_resize" then
local _, h = term.getSize()
if h == 20 then
heightAdjust = 0
else
heightAdjust=1
heightAdjust = 1
end
redrawPit()
drawBlockAt(curBlock,curX,curY,curRot)
drawBlockAt(curBlock, curX, curY, curRot)
end
end
msgBox("Game Over!")
while true do
local _,k=os.pullEvent("key")
if k==keys.space or k==keys.enter then
local _, k = os.pullEvent("key")
if k == keys.space or k == keys.enter then
break
end
end
level = math.min(level,9)
level = math.min(level, 9)
end
local selected=1
local playersDetected=false
local selected = 1
local playersDetected = false
local function drawMenu()
term.setBackgroundColor(colors.black)
term.setTextColor(colorass(colors.red,colors.white))
term.setTextColor(colorass(colors.red, colors.white))
term.clear()
local cx,cy=math.floor(width/2),math.floor(height/2)
local cx, cy = math.floor(width / 2), math.floor(height / 2)
term.setCursorPos(cx-6,cy-2)
term.setCursorPos(cx - 6, cy - 2)
term.write("F A L L I N G")
if playersDetected then
if selected==0 then
term.setTextColor(colorass(colors.blue,colors.black))
term.setBackgroundColor(colorass(colors.gray,colors.white))
if selected == 0 then
term.setTextColor(colorass(colors.blue, colors.black))
term.setBackgroundColor(colorass(colors.gray, colors.white))
else
term.setTextColor(colorass(colors.lightBlue,colors.white))
term.setTextColor(colorass(colors.lightBlue, colors.white))
term.setBackgroundColor(colors.black)
end
term.setCursorPos(cx-12,cy)
term.setCursorPos(cx - 12, cy)
term.write(" Play head-to-head game! ")
end
term.setCursorPos(cx-10,cy+1)
if selected==1 then
term.setTextColor(colorass(colors.blue,colors.black))
term.setBackgroundColor(colorass(colors.lightGray,colors.white))
term.setCursorPos(cx - 10, cy + 1)
if selected == 1 then
term.setTextColor(colorass(colors.blue, colors.black))
term.setBackgroundColor(colorass(colors.lightGray, colors.white))
else
term.setTextColor(colorass(colors.lightBlue,colors.white))
term.setTextColor(colorass(colors.lightBlue, colors.white))
term.setBackgroundColor(colors.black)
end
term.write(" Play from level: <" .. level .. "> ")
term.setCursorPos(cx-3,cy+3)
if selected==2 then
term.setTextColor(colorass(colors.blue,colors.black))
term.setBackgroundColor(colorass(colors.lightGray,colors.white))
term.setCursorPos(cx - 3, cy + 3)
if selected == 2 then
term.setTextColor(colorass(colors.blue, colors.black))
term.setBackgroundColor(colorass(colors.lightGray, colors.white))
else
term.setTextColor(colorass(colors.lightBlue,colors.white))
term.setTextColor(colorass(colors.lightBlue, colors.white))
term.setBackgroundColor(colors.black)
end
term.write(" Quit ")
@ -606,28 +606,28 @@ local function runMenu()
drawMenu()
while true do
local event={os.pullEvent()}
if event[1]=="key" then
local key=event[2]
if key==keys.right or key==keys.d and selected==1 then
level=math.min(level+1,9)
local event = {os.pullEvent()}
if event[1] == "key" then
local key = event[2]
if key == keys.right or key == keys.d and selected == 1 then
level = math.min(level + 1, 9)
drawMenu()
elseif key==keys.left or key==keys.a and selected==1 then
level=math.max(level-1,1)
elseif key == keys.left or key == keys.a and selected == 1 then
level = math.max(level - 1, 1)
drawMenu()
elseif key>=keys.one and key<=keys.nine and selected==1 then
level=key-keys.one + 1
elseif key >= keys.one and key <= keys.nine and selected == 1 then
level = key - keys.one + 1
drawMenu()
elseif key==keys.up or key==keys.w then
selected=selected-1
if selected==0 then
selected=2
elseif key == keys.up or key == keys.w then
selected = selected - 1
if selected == 0 then
selected = 2
end
drawMenu()
elseif key==keys.down or key==keys.s then
selected=selected%2+1
elseif key == keys.down or key == keys.s then
selected = selected % 2 + 1
drawMenu()
elseif key==keys.enter or key==keys.space then
elseif key == keys.enter or key == keys.space then
break --begin play!
end
end
@ -636,7 +636,7 @@ end
while true do
runMenu()
if selected==2 then
if selected == 2 then
break
end
@ -647,4 +647,4 @@ end
term.setTextColor(colors.white)
term.setBackgroundColor(colors.black)
term.clear()
term.setCursorPos(1,1)
term.setCursorPos(1, 1)

View File

@ -9,7 +9,7 @@ end
local sOpenedModem = nil
local function openModem()
for _,sModem in ipairs( peripheral.getNames() ) do
for _, sModem in ipairs( peripheral.getNames() ) do
if peripheral.getType( sModem ) == "modem" then
if not rednet.isOpen( sModem ) then
rednet.open( sModem )
@ -94,7 +94,7 @@ if sCommand == "host" then
end
local function printUsers()
local _,y = term.getCursorPos()
local _, y = term.getCursorPos()
term.setCursorPos( 1, y - 1 )
term.clearLine()
if nUsers == 1 then
@ -114,7 +114,7 @@ if sCommand == "host" then
local tUser = tUsers[ nUserID ]
if tUser then
if not tUser.bPingPonged then
send( "* "..tUser.sUsername.." has timed out" )
send( "* " .. tUser.sUsername .. " has timed out" )
tUsers[ nUserID ] = nil
nUsers = nUsers - 1
printUsers()
@ -131,7 +131,7 @@ if sCommand == "host" then
tCommands = {
["me"] = function( tUser, sContent )
if string.len(sContent) > 0 then
send( "* "..tUser.sUsername.." "..sContent )
send( "* " .. tUser.sUsername .. " " .. sContent )
else
send( "* Usage: /me [words]", tUser.nUserID )
end
@ -140,7 +140,7 @@ if sCommand == "host" then
if string.len(sContent) > 0 then
local sOldName = tUser.sUsername
tUser.sUsername = sContent
send( "* "..sOldName.." is now known as "..tUser.sUsername )
send( "* " .. sOldName .. " is now known as " .. tUser.sUsername )
else
send( "* Usage: /nick [nickname]", tUser.nUserID )
end
@ -159,7 +159,7 @@ if sCommand == "host" then
for sCommand in pairs( tCommands ) do
sCommands = sCommands .. " /" .. sCommand
end
send( sCommands.." /logout", tUser.nUserID )
send( sCommands .. " /logout", tUser.nUserID )
end,
}
@ -177,7 +177,7 @@ if sCommand == "host" then
}
nUsers = nUsers + 1
printUsers()
send( "* "..sUsername.." has joined the chat" )
send( "* " .. sUsername .. " has joined the chat" )
ping( nUserID )
end
@ -187,7 +187,7 @@ if sCommand == "host" then
local tUser = tUsers[ nUserID ]
if tUser and tUser.nID == nSenderID then
if tMessage.sType == "logout" then
send( "* "..tUser.sUsername.." has left the chat" )
send( "* " .. tUser.sUsername .. " has left the chat" )
tUsers[ nUserID ] = nil
nUsers = nUsers - 1
printUsers()
@ -199,13 +199,13 @@ if sCommand == "host" then
if sCommand then
local fnCommand = tCommands[ sCommand ]
if fnCommand then
local sContent = string.sub( sMessage, string.len(sCommand)+3 )
local sContent = string.sub( sMessage, string.len(sCommand) + 3 )
fnCommand( tUser, sContent )
else
send( "* Unrecognised command: /"..sCommand, tUser.nUserID )
send( "* Unrecognised command: /" .. sCommand, tUser.nUserID )
end
else
send( "<"..tUser.sUsername.."> "..tMessage.sText )
send( "<" .. tUser.sUsername .. "> " .. tMessage.sText )
end
end
@ -284,12 +284,12 @@ elseif sCommand == "join" then
end
-- Handle messages
local w,h = term.getSize()
local w, h = term.getSize()
local parentTerm = term.current()
local titleWindow = window.create( parentTerm, 1, 1, w, 1, true )
local historyWindow = window.create( parentTerm, 1, 2, w, h-2, true )
local historyWindow = window.create( parentTerm, 1, 2, w, h - 2, true )
local promptWindow = window.create( parentTerm, 1, h, w, 1, true )
historyWindow.setCursorPos( 1, h-2 )
historyWindow.setCursorPos( 1, h - 2 )
term.clear()
term.setTextColour( textColour )
@ -298,9 +298,9 @@ elseif sCommand == "join" then
local function drawTitle()
local w = titleWindow.getSize()
local sTitle = sUsername.." on "..sHostname
local sTitle = sUsername .. " on " .. sHostname
titleWindow.setTextColour( highlightColour )
titleWindow.setCursorPos( math.floor( w/2 - string.len(sTitle)/2 ), 1 )
titleWindow.setCursorPos( math.floor( w / 2 - string.len(sTitle) / 2 ), 1 )
titleWindow.clearLine()
titleWindow.write( sTitle )
promptWindow.restoreCursor()
@ -347,9 +347,9 @@ elseif sCommand == "join" then
end
elseif sEvent == "term_resize" then
local w,h = parentTerm.getSize()
local w, h = parentTerm.getSize()
titleWindow.reposition( 1, 1, w, 1 )
historyWindow.reposition( 1, 2, w, h-2 )
historyWindow.reposition( 1, 2, w, h - 2 )
promptWindow.reposition( 1, h, w, 1 )
end
@ -384,7 +384,7 @@ elseif sCommand == "join" then
function()
local tSendHistory = {}
while true do
promptWindow.setCursorPos( 1,1 )
promptWindow.setCursorPos( 1, 1 )
promptWindow.clearLine()
promptWindow.setTextColor( highlightColour )
promptWindow.write( ": ")
@ -409,7 +409,7 @@ elseif sCommand == "join" then
term.redirect( parentTerm )
-- Print error notice
local _,h = term.getSize()
local _, h = term.getSize()
term.setCursorPos( 1, h )
term.clearLine()
term.setCursorBlink( false )

View File

@ -1,7 +1,7 @@
-- Find modems
local tModems = {}
for _,sModem in ipairs( peripheral.getNames() ) do
for _, sModem in ipairs( peripheral.getNames() ) do
if peripheral.getType( sModem ) == "modem" then
table.insert( tModems, sModem )
end
@ -16,14 +16,14 @@ else
end
local function open( nChannel )
for n=1,#tModems do
for n = 1, #tModems do
local sModem = tModems[n]
peripheral.call( sModem, "open", nChannel )
end
end
local function close( nChannel )
for n=1,#tModems do
for n = 1, #tModems do
local sModem = tModems[n]
peripheral.call( sModem, "close", nChannel )
end
@ -51,7 +51,7 @@ local ok, error = pcall( function()
tReceivedMessageTimeouts[ os.startTimer( 30 ) ] = tMessage.nMessageID
-- Send on all other open modems, to the target and to other repeaters
for n=1,#tModems do
for n = 1, #tModems do
local sOtherModem = tModems[n]
peripheral.call( sOtherModem, "transmit", rednet.CHANNEL_REPEAT, nReplyChannel, tMessage )
peripheral.call( sOtherModem, "transmit", tMessage.nRecipient, nReplyChannel, tMessage )
@ -59,7 +59,7 @@ local ok, error = pcall( function()
-- Log the event
nTransmittedMessages = nTransmittedMessages + 1
local _,y = term.getCursorPos()
local _, y = term.getCursorPos()
term.setCursorPos( 1, y - 1 )
term.clearLine()
if nTransmittedMessages == 1 then

View File

@ -17,7 +17,7 @@ if sCommand == "probe" then
local count = 0
local bundledCount = 0
for _,sSide in ipairs( redstone.getSides() ) do
for _, sSide in ipairs( redstone.getSides() ) do
if redstone.getBundledInput( sSide ) > 0 then
bundledCount = bundledCount + 1
end
@ -39,12 +39,12 @@ if sCommand == "probe" then
if bundledCount > 0 then
print()
print( "Bundled inputs:" )
for _,sSide in ipairs( redstone.getSides() ) do
for _, sSide in ipairs( redstone.getSides() ) do
local nInput = redstone.getBundledInput( sSide )
if nInput ~= 0 then
write( sSide..": " )
write( sSide .. ": " )
local count = 0
for sColour,nColour in pairs( colors ) do
for sColour, nColour in pairs( colors ) do
if type( nColour ) == "number" and colors.test( nInput, nColour ) then
if count > 0 then
write( ", " )
@ -69,7 +69,7 @@ elseif sCommand == "pulse" then
local sSide = tArgs[2]
local nCount = tonumber( tArgs[3] ) or 1
local nPeriod = tonumber( tArgs[4] ) or 0.5
for _=1,nCount do
for _ = 1, nCount do
redstone.setOutput( sSide, true )
sleep( nPeriod / 2 )
redstone.setOutput( sSide, false )

View File

@ -2,12 +2,12 @@
local tArgs = { ... }
if #tArgs == 0 then
-- "set"
local _,y = term.getCursorPos()
local _, y = term.getCursorPos()
local tSettings = {}
for n,sName in ipairs( settings.getNames() ) do
for n, sName in ipairs( settings.getNames() ) do
tSettings[n] = textutils.serialize(sName) .. " is " .. textutils.serialize(settings.get(sName))
end
textutils.pagedPrint(table.concat(tSettings,"\n"),y-3)
textutils.pagedPrint(table.concat(tSettings, "\n"), y - 3)
elseif #tArgs == 1 then
-- "set foo"

View File

@ -33,9 +33,9 @@ local function createShellEnv( sDir )
}
package.path = "?;?.lua;?/init.lua;/rom/modules/main/?;/rom/modules/main/?.lua;/rom/modules/main/?/init.lua"
if turtle then
package.path = package.path..";/rom/modules/turtle/?;/rom/modules/turtle/?.lua;/rom/modules/turtle/?/init.lua"
package.path = package.path .. ";/rom/modules/turtle/?;/rom/modules/turtle/?.lua;/rom/modules/turtle/?/init.lua"
elseif command then
package.path = package.path..";/rom/modules/command/?;/rom/modules/command/?.lua;/rom/modules/command/?/init.lua"
package.path = package.path .. ";/rom/modules/command/?;/rom/modules/command/?.lua;/rom/modules/command/?/init.lua"
end
package.config = "/\n;\n?\n!\n-"
package.preload = {}
@ -52,7 +52,7 @@ local function createShellEnv( sDir )
local sError = ""
for pattern in string.gmatch(package.path, "[^;]+") do
local sPath = string.gsub(pattern, "%?", fname)
if sPath:sub(1,1) ~= "/" then
if sPath:sub(1, 1) ~= "/" then
sPath = fs.combine(sDir, sPath)
end
if fs.exists(sPath) and not fs.isDir(sPath) then
@ -70,7 +70,7 @@ local function createShellEnv( sDir )
end
end
return nil, sError
end
end,
}
local sentinel = {}
@ -125,7 +125,7 @@ local function run( _sCommand, ... )
if multishell then
local sTitle = fs.getName( sPath )
if sTitle:sub(-4) == ".lua" then
sTitle = sTitle:sub(1,-5)
sTitle = sTitle:sub(1, -5)
end
multishell.setTitle( multishell.getCurrent(), sTitle )
end
@ -140,7 +140,7 @@ local function run( _sCommand, ... )
if #tProgramStack > 0 then
local sTitle = fs.getName( tProgramStack[#tProgramStack] )
if sTitle:sub(-4) == ".lua" then
sTitle = sTitle:sub(1,-5)
sTitle = sTitle:sub(1, -5)
end
multishell.setTitle( multishell.getCurrent(), sTitle )
else
@ -272,12 +272,12 @@ function shell.programs( _bIncludeHidden )
sPath = shell.resolve( sPath )
if fs.isDir( sPath ) then
local tList = fs.list( sPath )
for n=1,#tList do
for n = 1, #tList do
local sFile = tList[n]
if not fs.isDir( fs.combine( sPath, sFile ) ) and
(_bIncludeHidden or string.sub( sFile, 1, 1 ) ~= ".") then
if #sFile > 4 and sFile:sub(-4) == ".lua" then
sFile = sFile:sub(1,-5)
sFile = sFile:sub(1, -5)
end
tItems[ sFile ] = true
end
@ -326,7 +326,7 @@ local function completeProgram( sLine )
-- Add programs from the path
local tPrograms = shell.programs()
for n=1,#tPrograms do
for n = 1, #tPrograms do
local sProgram = tPrograms[n]
if #sProgram > #sLine and string.sub( sProgram, 1, #sLine ) == sLine then
local sResult = string.sub( sProgram, #sLine + 1 )
@ -366,7 +366,7 @@ function shell.complete( sLine )
return { " " }
else
local tResults = completeProgram( sBit )
for n=1,#tResults do
for n = 1, #tResults do
local sResult = tResults[n]
local sPath = shell.resolveProgram( sBit .. sResult )
if tCompletionInfo[ sPath ] then
@ -397,7 +397,7 @@ function shell.setCompletionFunction( sProgram, fnComplete )
expect(1, sProgram, "string")
expect(2, fnComplete, "function")
tCompletionInfo[ sProgram ] = {
fnComplete = fnComplete
fnComplete = fnComplete,
}
end

View File

@ -1,3 +1,3 @@
local nTime = os.time()
local nDay = os.day()
print( "The time is "..textutils.formatTime( nTime, false ).." on Day "..nDay )
print( "The time is " .. textutils.formatTime( nTime, false ) .. " on Day " .. nDay )

View File

@ -29,7 +29,7 @@ if turtle.craft( nLimit ) then
end
if nCrafted > 1 then
print( nCrafted.." items crafted" )
print( nCrafted .. " items crafted" )
elseif nCrafted == 1 then
print( "1 item crafted" )
else

View File

@ -81,10 +81,10 @@ textutils.slowWrite( "Preparing to get down." )
textutils.slowPrint( "..", 0.75 )
local sAudio = nil
for _,sName in pairs( peripheral.getNames() ) do
for _, sName in pairs( peripheral.getNames() ) do
if disk.hasAudio( sName ) then
disk.playAudio( sName )
print( "Jamming to "..disk.getAudioTitle( sName ) )
print( "Jamming to " .. disk.getAudioTitle( sName ) )
sAudio = sName
break
end
@ -103,7 +103,7 @@ parallel.waitForAny(
end,
function()
while true do
local fnMove = tMoves[math.random(1,#tMoves)]
local fnMove = tMoves[math.random(1, #tMoves)]
fnMove()
end
end

View File

@ -20,15 +20,15 @@ local depth = 0
local unloaded = 0
local collected = 0
local xPos,zPos = 0,0
local xDir,zDir = 0,1
local xPos, zPos = 0, 0
local xDir, zDir = 0, 1
local goTo -- Filled in further down
local refuel -- Filled in further down
local function unload( _bKeepOneFuelStack )
print( "Unloading items..." )
for n=1,16 do
for n = 1, 16 do
local nCount = turtle.getItemCount(n)
if nCount > 0 then
turtle.select(n)
@ -48,11 +48,11 @@ local function unload( _bKeepOneFuelStack )
end
local function returnSupplies()
local x,y,z,xd,zd = xPos,depth,zPos,xDir,zDir
local x, y, z, xd, zd = xPos, depth, zPos, xDir, zDir
print( "Returning to surface..." )
goTo( 0,0,0,0,-1 )
goTo( 0, 0, 0, 0, -1 )
local fuelNeeded = 2*(x+y+z) + 1
local fuelNeeded = 2 * (x + y + z) + 1
if not refuel( fuelNeeded ) then
unload( true )
print( "Waiting for fuel" )
@ -64,13 +64,13 @@ local function returnSupplies()
end
print( "Resuming mining..." )
goTo( x,y,z,xd,zd )
goTo( x, y, z, xd, zd )
end
local function collect()
local bFull = true
local nTotalItems = 0
for n=1,16 do
for n = 1, 16 do
local nCount = turtle.getItemCount(n)
if nCount == 0 then
bFull = false
@ -81,7 +81,7 @@ local function collect()
if nTotalItems > collected then
collected = nTotalItems
if math.fmod(collected + unloaded, 50) == 0 then
print( "Mined "..collected + unloaded.." items." )
print( "Mined " .. collected + unloaded .. " items." )
end
end
@ -100,7 +100,7 @@ function refuel( ammount )
local needed = ammount or xPos + zPos + depth + 2
if turtle.getFuelLevel() < needed then
for n=1,16 do
for n = 1, 16 do
if turtle.getItemCount(n) > 0 then
turtle.select(n)
if turtle.refuel(1) then
@ -176,7 +176,7 @@ local function tryDown()
depth = depth + 1
if math.fmod( depth, 10 ) == 0 then
print( "Descended "..depth.." metres." )
print( "Descended " .. depth .. " metres." )
end
return true
@ -290,8 +290,8 @@ end
local alternate = 0
local done = false
while not done do
for n=1,size do
for _=1,size-1 do
for n = 1, size do
for _ = 1, size - 1 do
if not tryForwards() then
done = true
break
@ -300,8 +300,8 @@ while not done do
if done then
break
end
if n<size then
if math.fmod(n + alternate,2) == 0 then
if n < size then
if math.fmod(n + alternate, 2) == 0 then
turnLeft()
if not tryForwards() then
done = true
@ -323,7 +323,7 @@ while not done do
end
if size > 1 then
if math.fmod(size,2) == 0 then
if math.fmod(size, 2) == 0 then
turnRight()
else
if alternate == 0 then
@ -344,13 +344,13 @@ end
print( "Returning to surface..." )
-- Return to where we started
goTo( 0,0,0,0,-1 )
goTo( 0, 0, 0, 0, -1 )
unload( false )
goTo( 0,0,0,0,1 )
goTo( 0, 0, 0, 0, 1 )
-- Seal the hole
if reseal then
turtle.placeDown()
end
print( "Mined "..collected + unloaded.." items total." )
print( "Mined " .. collected + unloaded .. " items total." )

View File

@ -50,7 +50,7 @@ while nArg <= #tArgs do
end
end
else
print( "No such direction: "..sDirection )
print( "No such direction: " .. sDirection )
print( "Try: forward, back, up, down" )
return
end

View File

@ -36,7 +36,7 @@ if turtle.getFuelLevel() ~= "unlimited" then
end
end
end
print( "Fuel level is "..turtle.getFuelLevel() )
print( "Fuel level is " .. turtle.getFuelLevel() )
if turtle.getFuelLevel() == turtle.getFuelLimit() then
print( "Fuel limit reached" )
end

View File

@ -20,7 +20,7 @@ local collected = 0
local function collect()
collected = collected + 1
if math.fmod(collected, 25) == 0 then
print( "Mined "..collected.." items." )
print( "Mined " .. collected .. " items." )
end
end
@ -67,7 +67,7 @@ local function refuel()
end
local function tryRefuel()
for n=1,16 do
for n = 1, 16 do
if turtle.getItemCount(n) > 0 then
turtle.select(n)
if turtle.refuel(1) then
@ -139,7 +139,7 @@ end
print( "Tunnelling..." )
for n=1,length do
for n = 1, length do
turtle.placeDown()
tryDigUp()
turtle.turnLeft()
@ -153,7 +153,7 @@ for n=1,length do
tryDig()
turtle.turnLeft()
if n<length then
if n < length then
tryDig()
if not tryForward() then
print( "Aborting Tunnel." )
@ -183,4 +183,4 @@ turtle.turnRight()
]]
print( "Tunnel complete." )
print( "Mined "..collected.." items total." )
print( "Mined " .. collected .. " items total." )

View File

@ -31,11 +31,11 @@ while nArg <= #tArgs do
local fnHandler = tHandlers[string.lower(sDirection)]
if fnHandler then
for _=1,nDistance do
for _ = 1, nDistance do
fnHandler( nArg )
end
else
print( "No such direction: "..sDirection )
print( "No such direction: " .. sDirection )
print( "Try: left, right" )
return
end

View File

@ -14,7 +14,7 @@ if #tArgs ~= 1 then
end
local function unequip( fnEquipFunction )
for nSlot=1,16 do
for nSlot = 1, 16 do
local nOldCount = turtle.getItemCount( nSlot )
if nOldCount == 0 then
turtle.select( nSlot )

View File

@ -3,24 +3,24 @@ local completion = require "cc.shell.completion"
-- Setup paths
local sPath = ".:/rom/programs"
if term.isColor() then
sPath = sPath..":/rom/programs/advanced"
sPath = sPath .. ":/rom/programs/advanced"
end
if turtle then
sPath = sPath..":/rom/programs/turtle"
sPath = sPath .. ":/rom/programs/turtle"
else
sPath = sPath..":/rom/programs/rednet:/rom/programs/fun"
sPath = sPath .. ":/rom/programs/rednet:/rom/programs/fun"
if term.isColor() then
sPath = sPath..":/rom/programs/fun/advanced"
sPath = sPath .. ":/rom/programs/fun/advanced"
end
end
if pocket then
sPath = sPath..":/rom/programs/pocket"
sPath = sPath .. ":/rom/programs/pocket"
end
if commands then
sPath = sPath..":/rom/programs/command"
sPath = sPath .. ":/rom/programs/command"
end
if http then
sPath = sPath..":/rom/programs/http"
sPath = sPath .. ":/rom/programs/http"
end
shell.setPath( sPath )
help.setPath( "/rom/help" )
@ -121,7 +121,7 @@ if fs.exists( "/rom/autorun" ) and fs.isDir( "/rom/autorun" ) then
local tFiles = fs.list( "/rom/autorun" )
for _, sFile in ipairs( tFiles ) do
if string.sub( sFile, 1, 1 ) ~= "." then
local sPath = "/rom/autorun/"..sFile
local sPath = "/rom/autorun/" .. sFile
if not fs.isDir( sPath ) then
shell.run( sPath )
end
@ -142,7 +142,7 @@ local function findStartups( sBaseDir )
if tStartups == nil then
tStartups = {}
end
for _,v in pairs( fs.list( sBasePath ) ) do
for _, v in pairs( fs.list( sBasePath ) ) do
local sPath = "/" .. fs.combine( sBasePath, v )
if not fs.isDir( sPath ) then
tStartups[ #tStartups + 1 ] = sPath
@ -163,7 +163,7 @@ if settings.get( "shell.allow_startup" ) then
tUserStartups = findStartups( "/" )
end
if settings.get( "shell.allow_disk_startup" ) then
for _,sName in pairs( peripheral.getNames() ) do
for _, sName in pairs( peripheral.getNames() ) do
if disk.isPresent( sName ) and disk.hasData( sName ) then
local startups = findStartups( disk.getMountPath( sName ) )
if startups then
@ -174,7 +174,7 @@ if settings.get( "shell.allow_disk_startup" ) then
end
end
if tUserStartups then
for _,v in pairs( tUserStartups ) do
for _, v in pairs( tUserStartups ) do
shell.run( v )
end
end

View File

@ -11,19 +11,19 @@
--- Assert an argument to the given function has the specified type.
--
-- @tparam string The function's name
-- @tparam int The argument index to this function
-- @tparam string The type this argument should have. May be 'value' for any
-- non-nil value.
-- @param val The value to check
-- @raise If this value doesn't match the expected type.
local function check(func, arg, ty, val)
-- @tparam string func The function's name
-- @tparam int idx The argument index to this function
-- @tparam string ty The type this argument should have. May be 'value' for
-- any non-nil value.
-- @param val val The value to check
-- @throws If this value doesn't match the expected type.
local function check(func, idx, ty, val)
if ty == 'value' then
if val == nil then
error(('%s: bad argument #%d (got nil)'):format(func, arg), 3)
error(('%s: bad argument #%d (got nil)'):format(func, idx), 3)
end
elseif type(val) ~= ty then
return error(('%s: bad argument #%d (expected %s, got %s)'):format(func, arg, ty, type(val)), 3)
return error(('%s: bad argument #%d (expected %s, got %s)'):format(func, idx, ty, type(val)), 3)
end
end
@ -122,7 +122,7 @@ local error_mt = { __tostring = function(self) return self.message end }
--- Attempt to execute the provided function, gathering a stack trace when it
-- errors.
--
-- @tparam
-- @tparam function() fn The function to run
-- @return[1] true
-- @return[2] false
-- @return[2] The error object
@ -170,7 +170,7 @@ end
--- Fail a test with the given message
--
-- @tparam string message The message to fail with
-- @raises An error with the given message
-- @throws An error with the given message
local function fail(message)
check('fail', 1, 'string', message)
error(setmetatable({ message = message, fail = true }, error_mt))
@ -192,7 +192,7 @@ expect_mt.__index = expect_mt
--- Assert that this expectation has the provided value
--
-- @param value The value to require this expectation to be equal to
-- @raises If the values are not equal
-- @throws If the values are not equal
function expect_mt:equals(value)
if value ~= self.value then
fail(("Expected %s\n but got %s"):format(format(value), format(self.value)))
@ -206,7 +206,7 @@ expect_mt.eq = expect_mt.equals
--- Assert that this expectation does not equal the provided value
--
-- @param value The value to require this expectation to not be equal to
-- @raises If the values are equal
-- @throws If the values are equal
function expect_mt:not_equals(value)
if value == self.value then
fail(("Expected any value but %s"):format(format(value)))
@ -220,7 +220,7 @@ expect_mt.ne = expect_mt.not_equals
--- Assert that this expectation has something of the provided type
--
-- @tparam string exp_type The type to require this expectation to have
-- @raises If it does not have that thpe
-- @throws If it does not have that thpe
function expect_mt:type(exp_type)
local actual_type = type(self.value)
if exp_type ~= actual_type then
@ -270,7 +270,7 @@ end
-- the provided object.
--
-- @param value The value to check for structural equivalence
-- @raises If they are not equivalent
-- @throws If they are not equivalent
function expect_mt:same(value)
if not matches({}, true, self.value, value) then
fail(("Expected %s\n but got %s"):format(format(value), format(self.value)))
@ -283,7 +283,7 @@ end
-- in the provided object.
--
-- @param value The value to check against
-- @raises If this does not match the provided value
-- @throws If this does not match the provided value
function expect_mt:matches(value)
if not matches({}, false, value, self.value) then
fail(("Expected %s\nto match %s"):format(format(self.value), format(value)))
@ -296,7 +296,7 @@ end
--
-- @tparam[opt] number The exact number of times the function must be called.
-- If not given just require the function to be called at least once.
-- @raises If this function was not called the expected number of times.
-- @throws If this function was not called the expected number of times.
function expect_mt:called(times)
if getmetatable(self.value) ~= stub_mt or self.value.arguments == nil then
fail(("Expected stubbed function, got %s"):format(type(self.value)))
@ -380,7 +380,7 @@ local expect = setmetatable( {
-- @return The new expectation
__call = function(_, value)
return setmetatable({ value = value }, expect_mt)
end
end,
})
--- The stack of "describe"s.
@ -623,7 +623,7 @@ end
-- And some summary statistics
local actual_count = tests_run - test_status.pending
local info = ("Ran %s test(s), of which %s passed (%g%%).")
:format(actual_count, test_status.pass, (test_status.pass / actual_count) * 100)
:format(actual_count, test_status.pass, test_status.pass / actual_count * 100)
if test_status.pending > 0 then
info = info .. (" Skipped %d pending test(s)."):format(test_status.pending)

View File

@ -2,7 +2,7 @@ describe("The gps library", function()
describe("gps.locate", function()
it("validates arguments", function()
stub(_G, "commands", { getBlockPosition = function()
end })
end, })
gps.locate()
gps.locate(1)

View File

@ -60,10 +60,10 @@ describe("The io library", function()
expect(io.output():seek()):equal(0)
assert(io.write("alo alo"))
expect(io.output():seek()):equal(#("alo alo"))
expect(io.output():seek("cur", -3)):equal(#("alo alo") - 3)
expect(io.output():seek()):equal(#"alo alo")
expect(io.output():seek("cur", -3)):equal(#"alo alo" - 3)
assert(io.write("joao"))
expect(io.output():seek("end"):equal(#("alo joao")))
expect(io.output():seek("end"):equal(#"alo joao"))
expect(io.output():seek("set")):equal(0)

View File

@ -70,7 +70,7 @@ describe("The Lua base library", function()
it("does not prefix for unnamed chunks", function()
local info = debug.getinfo(loadstring("return 1"), "S")
expect(info):matches { short_src = '[string "return 1"]', source = "return 1", }
expect(info):matches { short_src = '[string "return 1"]', source = "return 1" }
end)
it("does not prefix when already prefixed", function()

View File

@ -5,7 +5,7 @@ describe("cc.shell.completion", function()
it("completes both", function()
expect(c.dirOrFile(shell, "rom/")):same {
"apis/", "apis", "autorun/", "autorun", "help/", "help",
"modules/", "modules", "motd.txt", "programs/", "programs", "startup.lua"
"modules/", "modules", "motd.txt", "programs/", "programs", "startup.lua",
}
end)

View File

@ -10,7 +10,7 @@ describe("The commands program", function()
it("lists commands", function()
local pagedTabulate = stub(textutils, "pagedTabulate", function(x) print(table.unpack(x)) end)
stub(_G, "commands", {
list = function() return { "computercraft" } end
list = function() return { "computercraft" } end,
})
expect(capture(stub, "/rom/programs/command/commands.lua"))

View File

@ -15,7 +15,7 @@ describe("The exec program", function()
it("runs a command", function()
stub(_G, "commands", {
exec = function() return true, {"Hello World!"} end
exec = function() return true, {"Hello World!"} end,
})
expect(capture(stub, "/rom/programs/command/exec.lua computercraft"))
@ -23,8 +23,8 @@ describe("The exec program", function()
end)
it("reports command failures", function()
stub(_G,"commands",{
exec = function() return false, {"Hello World!"} end
stub(_G, "commands", {
exec = function() return false, {"Hello World!"} end,
})
expect(capture(stub, "/rom/programs/command/exec.lua computercraft"))

View File

@ -1,5 +1,4 @@
local capture = require "test_helpers".capture_program
local testFile = require "test_helpers".testFile
describe("The edit program", function()

View File

@ -17,7 +17,7 @@ describe("The pastebin program", function()
local tHeader = {}
tHeader["Content-Type"] = "text/plain; charset=utf-8"
return tHeader
end
end,
}
end,
post = function()
@ -28,7 +28,7 @@ describe("The pastebin program", function()
close = function()
end,
}
end
end,
})
end

View File

@ -14,7 +14,7 @@ describe("The wget program", function()
close = function()
end,
}
end
end,
})
end

View File

@ -6,6 +6,6 @@ describe("The id program", function()
local id = os.getComputerID()
expect(capture(stub, "id"))
:matches { ok = true, output = "This is computer #"..id.."\n", error = "" }
:matches { ok = true, output = "This is computer #" .. id .. "\n", error = "" }
end)
end)

View File

@ -3,10 +3,10 @@ local capture = require "test_helpers".capture_program
describe("The motd program", function()
it("displays MODT", function()
local file = fs.open("/modt_check.txt","w")
local file = fs.open("/modt_check.txt", "w")
file.write("Hello World!")
file.close()
settings.set("motd.path","/modt_check.txt")
settings.set("motd.path", "/modt_check.txt")
expect(capture(stub, "motd"))
:matches { ok = true, output = "Hello World!\n", error = "" }

View File

@ -9,7 +9,7 @@ describe("The pocket equip program", function()
it("can equip an upgrade", function()
stub(_G, "pocket", {
equipBack = function() return true end
equipBack = function() return true end,
})
expect(capture(stub, "/rom/programs/pocket/equip.lua"))
@ -18,7 +18,7 @@ describe("The pocket equip program", function()
it("handles when an upgrade cannot be equipped", function()
stub(_G, "pocket", {
equipBack = function() return false, "Cannot equip this item." end
equipBack = function() return false, "Cannot equip this item." end,
})
expect(capture(stub, "/rom/programs/pocket/equip.lua"))

View File

@ -9,7 +9,7 @@ describe("The pocket unequip program", function()
it("unequips an upgrade", function()
stub(_G, "pocket", {
unequipBack = function() return true end
unequipBack = function() return true end,
})
expect(capture(stub, "/rom/programs/pocket/unequip.lua"))
@ -18,7 +18,7 @@ describe("The pocket unequip program", function()
it("handles when an upgrade cannot be equipped", function()
stub(_G, "pocket", {
unequipBack = function() return false, "Nothing to remove." end
unequipBack = function() return false, "Nothing to remove." end,
})
expect(capture(stub, "/rom/programs/pocket/unequip.lua"))

View File

@ -4,8 +4,8 @@ describe("The set program", function()
it("displays all settings", function()
settings.clear()
settings.set("Test","Hello World!")
settings.set("123",456)
settings.set("Test", "Hello World!")
settings.set("123", 456)
expect(capture(stub, "set"))
:matches { ok = true, output = '"123" is 456\n"Test" is "Hello World!"\n', error = "" }
@ -13,8 +13,8 @@ describe("The set program", function()
it("displays a single settings", function()
settings.clear()
settings.set("Test","Hello World!")
settings.set("123",456)
settings.set("Test", "Hello World!")
settings.set("123", 456)
expect(capture(stub, "set Test"))
:matches { ok = true, output = '"Test" is "Hello World!"\n', error = "" }

View File

@ -7,6 +7,6 @@ describe("The time program", function()
local day = os.day()
expect(capture(stub, "time"))
:matches { ok = true, output = "The time is "..time.." on Day "..day.."\n", error = "" }
:matches { ok = true, output = "The time is " .. time .. " on Day " .. day .. "\n", error = "" }
end)
end)

View File

@ -39,7 +39,7 @@ describe("The craft program", function()
it("craft a single item", function()
local item_count = 2
stub(_G,"turtle",{
stub(_G, "turtle", {
craft = function()
item_count = 1
return true
@ -54,7 +54,7 @@ describe("The craft program", function()
it("crafts no items", function()
local item_count = 2
stub(_G,"turtle",{
stub(_G, "turtle", {
craft = function()
item_count = 1
return false

View File

@ -29,7 +29,7 @@ describe("The turtle equip program", function()
end)
it("swaps existing upgrades", function()
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return 1 end,
equipLeft = function() return true end,
@ -45,7 +45,7 @@ describe("The turtle equip program", function()
describe("equips a new upgrade", function()
local function setup()
local item_count = 1
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return item_count end,
equipLeft = function()
@ -73,7 +73,7 @@ describe("The turtle equip program", function()
end)
it("handles when an upgrade cannot be equipped", function()
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return 1 end,
equipLeft = function() return false end,

View File

@ -17,7 +17,7 @@ describe("The refuel program", function()
end,
getFuelLimit = function()
return fuel_limit
end
end,
})
end
@ -49,13 +49,13 @@ describe("The refuel program", function()
end)
it("reports when the fuel limit is reached", function()
setup_turtle(0,5,5)
setup_turtle(0, 5, 5)
expect(capture(stub, "/rom/programs/turtle/refuel.lua 5"))
:matches { ok = true, output = "Fuel level is 5\nFuel limit reached\n", error = "" }
end)
it("reports when the fuel level is unlimited", function()
setup_turtle("unlimited",5,5)
setup_turtle("unlimited", 5, 5)
expect(capture(stub, "/rom/programs/turtle/refuel.lua 5"))
:matches { ok = true, output = "Fuel level is unlimited\n", error = "" }
end)

View File

@ -17,11 +17,11 @@ describe("The turtle unequip program", function()
end)
it("says when nothing was unequipped", function()
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return 0 end,
equipRight = function() return true end,
equipLeft = function() return true end
equipLeft = function() return true end,
})
expect(capture(stub, "/rom/programs/turtle/unequip.lua left"))
@ -32,7 +32,7 @@ describe("The turtle unequip program", function()
it("unequips a upgrade", function()
local item_count = 0
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return item_count end,
equipRight = function()
@ -42,7 +42,7 @@ describe("The turtle unequip program", function()
equipLeft = function()
item_count = 1
return true
end
end,
})
expect(capture(stub, "/rom/programs/turtle/unequip.lua left"))
@ -53,11 +53,11 @@ describe("The turtle unequip program", function()
end)
it("fails when the turtle is full", function()
stub(_G,"turtle",{
stub(_G, "turtle", {
select = function() end,
getItemCount = function() return 1 end,
equipRight = function() return true end,
equipLeft = function() return true end
equipLeft = function() return true end,
})
expect(capture(stub, "/rom/programs/turtle/unequip.lua left"))

View File

@ -37,7 +37,7 @@ local function capture_program(stub, program, ...)
output = table.concat(output),
error = table.concat(error),
combined = table.concat(combined),
ok = ok
ok = ok,
}
end