703 lines
22 KiB
Text
703 lines
22 KiB
Text
--CCRedirection by : RamiLego4Game and Dan200--
|
|
--Based on Redirection by Dan200: http://www.redirectiongame.com--
|
|
--Clearing Screen--
|
|
|
|
--Vars--
|
|
local TermW, TermH = term.getSize()
|
|
|
|
local sLevelTitle
|
|
local tScreen
|
|
local oScreen
|
|
local SizeW, SizeH
|
|
local aExits
|
|
local fExit
|
|
local nSpeed
|
|
local Speed
|
|
local fSpeed
|
|
local fSpeedS
|
|
local bPaused
|
|
local Tick
|
|
local Blocks
|
|
local XOrgin, YOrgin
|
|
local fLevel
|
|
|
|
local function reset()
|
|
sLevelTitle = ""
|
|
tScreen = {}
|
|
oScreen = {}
|
|
SizeW, SizeH = TermW, TermH
|
|
aExits = 0
|
|
fExit = "nop"
|
|
nSpeed = 0.6
|
|
Speed = nSpeed
|
|
fSpeed = 0.2
|
|
fSpeedS = false
|
|
bPaused = false
|
|
Tick = os.startTimer(Speed)
|
|
Blocks = 0
|
|
XOrgin, YOrgin = 1, 1
|
|
|
|
term.setBackgroundColor(colors.black)
|
|
term.setTextColor(colors.white)
|
|
term.clear()
|
|
end
|
|
|
|
local InterFace = {}
|
|
InterFace.cExit = colors.red
|
|
InterFace.cSpeedD = colors.white
|
|
InterFace.cSpeedA = colors.red
|
|
InterFace.cTitle = colors.red
|
|
|
|
local cG = colors.lightGray
|
|
local cW = colors.gray
|
|
local cS = colors.black
|
|
local cR1 = colors.blue
|
|
local cR2 = colors.red
|
|
local cR3 = colors.green
|
|
local cR4 = colors.yellow
|
|
|
|
local tArgs = { ... }
|
|
|
|
--Functions--
|
|
local function printCentred(yc, stg)
|
|
local xc = math.floor((TermW - #stg) / 2) + 1
|
|
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)
|
|
end
|
|
|
|
local function reMap()
|
|
tScreen = nil
|
|
tScreen = {}
|
|
for x = 1, SizeW do
|
|
tScreen[x] = {}
|
|
for y = 1, SizeH do
|
|
tScreen[x][y] = { space = true, wall = false, ground = false, robot = "zz", start = "zz", exit = "zz" }
|
|
end
|
|
end
|
|
end
|
|
|
|
local function tablecopy(t)
|
|
local t2 = {}
|
|
for k, v in pairs(t) do
|
|
t2[k] = v
|
|
end
|
|
return t2
|
|
end
|
|
|
|
local function buMap()
|
|
oScreen = nil
|
|
oScreen = {}
|
|
for x = 1, SizeW do
|
|
oScreen[x] = {}
|
|
for y = 1, SizeH do
|
|
oScreen[x][y] = tablecopy(tScreen[x][y])
|
|
end
|
|
end
|
|
end
|
|
|
|
local function addRobot(x, y, side, color)
|
|
local obj = tScreen[x][y]
|
|
local data = side .. color
|
|
if obj.wall == nil and obj.robot == nil then
|
|
tScreen[x][y].robot = data
|
|
else
|
|
obj.wall = nil
|
|
obj.robot = "zz"
|
|
tScreen[x][y].robot = data
|
|
end
|
|
end
|
|
|
|
local function addStart(x, y, side, color)
|
|
local obj = tScreen[x][y]
|
|
local data = side .. color
|
|
if obj.wall == nil and obj.space == nil then
|
|
tScreen[x][y].start = data
|
|
else
|
|
obj.wall = nil
|
|
obj.space = nil
|
|
tScreen[x][y].start = data
|
|
end
|
|
aExits = aExits + 1
|
|
end
|
|
|
|
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
|
|
else
|
|
obj.space = nil
|
|
obj.exit = "zz"
|
|
obj.wall = nil
|
|
obj.robot = "zz"
|
|
obj.start = "zz"
|
|
tScreen[x][y].ground = true
|
|
end
|
|
end
|
|
|
|
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
|
|
else
|
|
obj.space = nil
|
|
obj.ground = nil
|
|
obj.wall = nil
|
|
obj.robot = "zz"
|
|
obj.start = "zz"
|
|
tScreen[x][y].exit = cl
|
|
end
|
|
end
|
|
|
|
local function addWall(x, y)
|
|
local obj = tScreen[x][y]
|
|
if obj == nil then
|
|
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
|
|
else
|
|
obj.space = nil
|
|
obj.exit = nil
|
|
obj.ground = nil
|
|
obj.robot = nil
|
|
obj.start = nil
|
|
tScreen[x][y].wall = true
|
|
end
|
|
end
|
|
|
|
local function loadLevel(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 wl = true
|
|
Blocks = tonumber(string.sub(fLevel.readLine(), 1, 1))
|
|
local xSize = #fLevel.readLine() + 2
|
|
local Lines = 3
|
|
while wl do
|
|
local wLine = fLevel.readLine()
|
|
if wLine == nil then
|
|
fLevel.close()
|
|
wl = false
|
|
else
|
|
xSize = math.max(#wLine + 2, xSize)
|
|
Lines = Lines + 1
|
|
end
|
|
end
|
|
SizeW, SizeH = xSize, Lines
|
|
reMap()
|
|
fLevel = fs.open(sLevelD, "r")
|
|
fLevel.readLine()
|
|
for Line = 2, Lines - 1 do
|
|
local sLine = fLevel.readLine()
|
|
local chars = #sLine
|
|
for char = 1, chars do
|
|
local el = string.sub(sLine, char, char)
|
|
if el == "8" then
|
|
addGround(char + 1, Line)
|
|
elseif el == "0" then
|
|
addStart(char + 1, Line, "a", "a")
|
|
elseif el == "1" then
|
|
addStart(char + 1, Line, "b", "a")
|
|
elseif el == "2" then
|
|
addStart(char + 1, Line, "c", "a")
|
|
elseif el == "3" then
|
|
addStart(char + 1, Line, "d", "a")
|
|
elseif el == "4" then
|
|
addStart(char + 1, Line, "a", "b")
|
|
elseif el == "5" then
|
|
addStart(char + 1, Line, "b", "b")
|
|
elseif el == "6" then
|
|
addStart(char + 1, Line, "c", "b")
|
|
elseif el == "9" then
|
|
addStart(char + 1, Line, "d", "b")
|
|
elseif el == "b" then
|
|
addExit(char + 1, Line, "a")
|
|
elseif el == "e" then
|
|
addExit(char + 1, Line, "b")
|
|
elseif el == "7" then
|
|
addWall(char + 1, Line)
|
|
end
|
|
end
|
|
end
|
|
fLevel.close()
|
|
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()
|
|
|
|
term.clear()
|
|
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.setTextColor(cStar)
|
|
write(crStar)
|
|
elseif StarT == BStar then
|
|
term.setCursorPos(x, y)
|
|
term.setTextColor(cStar)
|
|
write(crStarB)
|
|
elseif StarT == nStar then
|
|
term.setCursorPos(x, y)
|
|
term.setTextColor(cStarG)
|
|
write(crStar)
|
|
elseif StarT == gStar then
|
|
term.setCursorPos(x, y)
|
|
term.setTextColor(cStarG)
|
|
write(crStarB)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function drawMap()
|
|
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)
|
|
end
|
|
if obj.wall == true then
|
|
paintutils.drawPixel(XOrgin + x, YOrgin + y + 1, cW)
|
|
end
|
|
|
|
local ex = tostring(tScreen[x][y].exit)
|
|
if not(ex == "zz" or ex == "nil") then
|
|
if ex == "a" then
|
|
ex = cR1
|
|
elseif ex == "b" then
|
|
ex = cR2
|
|
elseif ex == "c" then
|
|
ex = cR3
|
|
elseif ex == "d" then
|
|
ex = cR4
|
|
else
|
|
return error("Exit Color Out")
|
|
end
|
|
term.setBackgroundColor(cG)
|
|
term.setTextColor(ex)
|
|
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)
|
|
if Cr == "a" then
|
|
Cr = cR1
|
|
elseif Cr == "b" then
|
|
Cr = cR2
|
|
elseif Cr == "c" then
|
|
Cr = cR3
|
|
elseif Cr == "d" then
|
|
Cr = cR4
|
|
else
|
|
return error("Start Color Out")
|
|
end
|
|
|
|
term.setTextColor(Cr)
|
|
term.setBackgroundColor(cG)
|
|
term.setCursorPos(XOrgin + x, YOrgin + y + 1)
|
|
|
|
local sSide = string.sub(st, 1, 1)
|
|
if sSide == "a" then
|
|
print("^")
|
|
elseif sSide == "b" then
|
|
print(">")
|
|
elseif sSide == "c" then
|
|
print("v")
|
|
elseif sSide == "d" then
|
|
print("<")
|
|
else
|
|
print("@")
|
|
end
|
|
end
|
|
|
|
if obj.space == true then
|
|
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)
|
|
if Cr == "a" then
|
|
Cr = cR1
|
|
elseif Cr == "b" then
|
|
Cr = cR2
|
|
elseif Cr == "c" then
|
|
Cr = cR3
|
|
elseif Cr == "d" then
|
|
Cr = cR4
|
|
else
|
|
Cr = colors.white
|
|
end
|
|
term.setBackgroundColor(Cr)
|
|
term.setTextColor(colors.white)
|
|
term.setCursorPos(XOrgin + x, YOrgin + y + 1)
|
|
local sSide = string.sub(rb, 1, 1)
|
|
if sSide == "a" then
|
|
print("^")
|
|
elseif sSide == "b" then
|
|
print(">")
|
|
elseif sSide == "c" then
|
|
print("v")
|
|
elseif sSide == "d" then
|
|
print("<")
|
|
else
|
|
print("@")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
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
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
local function gRender(sContext)
|
|
if sContext == "start" then
|
|
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)
|
|
end
|
|
end
|
|
end
|
|
elseif sContext == "tick" then
|
|
buMap()
|
|
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 sobj = oScreen[x][y]
|
|
if sobj.space == true then
|
|
tScreen[x][y].robot = "zz"
|
|
if not sSide == "g" then
|
|
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
|
|
end
|
|
elseif sSide == "a" then
|
|
local obj = isBrick(x, y - 1)
|
|
tScreen[x][y].robot = "zz"
|
|
if not obj == true then
|
|
addRobot(x, y - 1, sSide, Cr)
|
|
else
|
|
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)
|
|
elseif Cr == "b" then
|
|
addRobot(x, y, "b", Cr)
|
|
end
|
|
elseif obj == true and obj2 == true and obj3 == true then
|
|
addRobot(x, y, "c", Cr)
|
|
else
|
|
if obj3 == true then
|
|
addRobot(x, y, "d", Cr)
|
|
elseif obj2 == true then
|
|
addRobot(x, y, "b", Cr)
|
|
end
|
|
end
|
|
end
|
|
elseif sSide == "b" then
|
|
local obj = isBrick(x + 1, y)
|
|
tScreen[x][y].robot = "zz"
|
|
if not obj == true then
|
|
addRobot(x + 1, y, sSide, Cr)
|
|
else
|
|
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)
|
|
elseif Cr == "b" then
|
|
addRobot(x, y, "c", Cr)
|
|
end
|
|
elseif obj == true and obj2 == true and obj3 == true then
|
|
addRobot(x, y, "d", Cr)
|
|
else
|
|
if obj3 == true then
|
|
addRobot(x, y, "a", Cr)
|
|
elseif obj2 == true then
|
|
addRobot(x, y, "c", Cr)
|
|
end
|
|
end
|
|
end
|
|
elseif sSide == "c" then
|
|
local obj = isBrick(x, y + 1)
|
|
tScreen[x][y].robot = "zz"
|
|
if not obj == true then
|
|
addRobot(x, y + 1, sSide, Cr)
|
|
else
|
|
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)
|
|
elseif Cr == "b" then
|
|
addRobot(x, y, "d", Cr)
|
|
end
|
|
elseif obj == true and obj2 == true and obj3 == true then
|
|
addRobot(x, y, "a", Cr)
|
|
else
|
|
if obj3 == true then
|
|
addRobot(x, y, "d", Cr)
|
|
elseif obj2 == true then
|
|
addRobot(x, y, "b", Cr)
|
|
end
|
|
end
|
|
end
|
|
elseif sSide == "d" then
|
|
local obj = isBrick(x - 1, y)
|
|
tScreen[x][y].robot = "zz"
|
|
if not obj == true then
|
|
addRobot(x - 1, y, sSide, Cr)
|
|
else
|
|
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)
|
|
elseif Cr == "b" then
|
|
addRobot(x, y, "a", Cr)
|
|
end
|
|
elseif obj == true and obj2 == true and obj3 == true then
|
|
addRobot(x, y, "b", Cr)
|
|
else
|
|
if obj3 == true then
|
|
addRobot(x, y, "a", Cr)
|
|
elseif obj2 == true then
|
|
addRobot(x, y, "c", Cr)
|
|
end
|
|
end
|
|
end
|
|
else
|
|
addRobot(x, y, sSide, "g")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function InterFace.drawBar()
|
|
term.setBackgroundColor(colors.black)
|
|
term.setTextColor(InterFace.cTitle)
|
|
printCentred(1, " " .. sLevelTitle .. " ")
|
|
|
|
term.setCursorPos(1, 1)
|
|
term.setBackgroundColor(cW)
|
|
write(" ")
|
|
term.setBackgroundColor(colors.black)
|
|
write(" x " .. tostring(Blocks) .. " ")
|
|
|
|
term.setCursorPos(TermW - 8, TermH)
|
|
term.setBackgroundColor(colors.black)
|
|
term.setTextColour(InterFace.cSpeedD)
|
|
write(" <<")
|
|
if bPaused then
|
|
term.setTextColour(InterFace.cSpeedA)
|
|
else
|
|
term.setTextColour(InterFace.cSpeedD)
|
|
end
|
|
write(" ||")
|
|
if fSpeedS then
|
|
term.setTextColour(InterFace.cSpeedA)
|
|
else
|
|
term.setTextColour(InterFace.cSpeedD)
|
|
end
|
|
write(" >>")
|
|
|
|
term.setCursorPos(TermW - 1, 1)
|
|
term.setBackgroundColor(colors.black)
|
|
term.setTextColour(InterFace.cExit)
|
|
write(" X")
|
|
term.setBackgroundColor(colors.black)
|
|
end
|
|
|
|
function InterFace.render()
|
|
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
|
|
return "retry"
|
|
elseif p3 == TermH and p2 >= TermW - 4 and p2 <= TermW - 3 then
|
|
bPaused = not bPaused
|
|
fSpeedS = false
|
|
Speed = bPaused and 0 or nSpeed
|
|
if Speed > 0 then
|
|
Tick = os.startTimer(Speed)
|
|
else
|
|
Tick = nil
|
|
end
|
|
InterFace.drawBar()
|
|
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)
|
|
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
|
|
InterFace.drawBar()
|
|
drawMap()
|
|
end
|
|
end
|
|
elseif id == "timer" and p1 == Tick then
|
|
gRender("tick")
|
|
drawMap()
|
|
if Speed > 0 then
|
|
Tick = os.startTimer(Speed)
|
|
else
|
|
Tick = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
local function startG(LevelN)
|
|
drawStars()
|
|
loadLevel(LevelN)
|
|
centerOrgin()
|
|
drawMap()
|
|
InterFace.drawBar()
|
|
gRender("start")
|
|
drawMap()
|
|
|
|
local NExit = true
|
|
if aExits == 0 then
|
|
NExit = false
|
|
end
|
|
|
|
while true do
|
|
local isExit = InterFace.render()
|
|
if isExit == "end" then
|
|
return nil
|
|
elseif isExit == "retry" then
|
|
return LevelN
|
|
elseif fExit == "yes" then
|
|
if fs.exists(fs.getDir(shell.getRunningProgram()) .. "/levels/" .. tostring(LevelN + 1) .. ".dat") then
|
|
return LevelN + 1
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
if aExits == 0 and NExit == true then
|
|
fExit = "yes"
|
|
end
|
|
end
|
|
end
|
|
|
|
local ok, err = true, nil
|
|
|
|
--Menu--
|
|
local sStartLevel = tArgs[1]
|
|
if ok and not sStartLevel then
|
|
ok, err = pcall(function()
|
|
term.setTextColor(colors.white)
|
|
term.setBackgroundColor(colors.black)
|
|
term.clear()
|
|
drawStars()
|
|
term.setTextColor(colors.red)
|
|
printCentred(TermH / 2 - 1, " REDIRECTION ")
|
|
printCentred(TermH / 2 - 0, " ComputerCraft Edition ")
|
|
term.setTextColor(colors.yellow)
|
|
printCentred(TermH / 2 + 2, " Click to Begin ")
|
|
os.pullEvent("mouse_click")
|
|
end)
|
|
end
|
|
|
|
--Game--
|
|
if ok then
|
|
ok, err = pcall(function()
|
|
local nLevel
|
|
if sStartLevel then
|
|
nLevel = tonumber(sStartLevel)
|
|
else
|
|
nLevel = 1
|
|
end
|
|
while nLevel do
|
|
reset()
|
|
nLevel = startG(nLevel)
|
|
end
|
|
end)
|
|
end
|
|
|
|
--Upsell screen--
|
|
if ok then
|
|
ok, err = pcall(function()
|
|
term.setTextColor(colors.white)
|
|
term.setBackgroundColor(colors.black)
|
|
term.clear()
|
|
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: ")
|
|
term.setTextColor(colors.yellow)
|
|
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: ")
|
|
term.setTextColor(colors.yellow)
|
|
printCentred(TermH / 2 + 3, " www.redirectiongame.com ")
|
|
end
|
|
parallel.waitForAll(
|
|
function() sleep(2) end,
|
|
function() os.pullEvent("mouse_click") end
|
|
)
|
|
end)
|
|
end
|
|
|
|
--Clear and exit--
|
|
term.setCursorPos(1, 1)
|
|
term.setTextColor(colors.white)
|
|
term.setBackgroundColor(colors.black)
|
|
term.clear()
|
|
if not ok then
|
|
if err == "Terminated" then
|
|
print("Check out the full version of Redirection:")
|
|
print("http://www.redirectiongame.com")
|
|
else
|
|
printError(err)
|
|
end
|
|
end
|