Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- TurtleManager
- -- This is a ComputerCraft program that will manage and monitor all of the turtles on the network.
- -- FILE FORMAT
- -- ID|Nickname|xHome|zHome|yHome|facingHome|xCurrent|zCurrent|yCurrent|facingCurrent|task
- -- 6|Hyde|192|-79|56|3|192|-79|56|3|Sleeping
- function loadDatabase(databaseName)
- records = {}
- counter = 1
- endOfFile = false
- databaseName = databaseName or "turtleBase"
- database = fs.open(databaseName,"r")
- while not(endOfFile) do
- record = database.readLine()
- if record == nil then
- endOfFile = true
- else
- records[counter] = record
- counter = counter + 1
- end
- end
- database.close()
- for i = 1,#records do
- pointerBegin = 1
- pointerEnd = 1
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fid = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fnickname = getField(records[i],pointerBegin,pointerEnd)
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fxHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fzHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fyHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- ffacingHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fxCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fzCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- fyCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- ffacingCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
- pointerBegin = pointerEnd + 2
- pointerEnd = getFieldLength(records[i],pointerBegin) - 1
- ftask = getField(records[i],pointerBegin,pointerEnd)
- turtles[i] = {id = fid, nickname = fnickname, xHome = fxHome, zHome = fzHome, yHome = fyHome, facingHome = ffacingHome, xCurrent = fxCurrent, zCurrent = fzCurrent, yCurrent = fyCurrent, facingCurrent = ffacingCurrent, task = ftask}
- end
- end
- function getFieldLength(record,location)
- return string.find(record,"|",location)
- end
- function getField(record,pointerBegin,pointerEnd)
- return string.sub(record,pointerBegin,pointerEnd)
- end
- function displayTurtles()
- local monitor = peripheral.wrap("left")
- monitor.setTextScale(.5)
- term.redirect(monitor)
- term.clear()
- term.setCursorPos(1, 1)
- for i = 1,#turtles do
- lineOne = turtles[i].nickname .. ": Task: " .. turtles[i].task
- lineTwo = " Home - x" .. turtles[i].xHome .. " z" .. turtles[i].zHome .. " y" .. turtles[i].yHome .. " o" .. orientations[turtles[i].facingHome]
- lineThree = " CLoc - x" .. turtles[i].xCurrent .. " z" .. turtles[i].zCurrent .. " y" .. turtles[i].yCurrent .. " o" .. orientations[turtles[i].facingCurrent]
- print(lineOne)
- print(lineTwo)
- print(lineThree)
- end
- term.restore()
- end
- turtles = {}
- orientations = {"West","North","East","South"}
- loadDatabase()
- displayTurtles()
Advertisement
Add Comment
Please, Sign In to add comment