Jharii

turtleManager

Jan 22nd, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.73 KB | None | 0 0
  1. -- TurtleManager
  2. -- This is a ComputerCraft program that will manage and monitor all of the turtles on the network.
  3.  
  4. -- FILE FORMAT
  5. -- ID|Nickname|xHome|zHome|yHome|facingHome|xCurrent|zCurrent|yCurrent|facingCurrent|task
  6. -- 6|Hyde|192|-79|56|3|192|-79|56|3|Sleeping
  7.  
  8. function loadDatabase(databaseName)
  9.   records = {}
  10.   counter = 1
  11.   endOfFile = false
  12.  
  13.   databaseName = databaseName or "turtleBase"
  14.   database = fs.open(databaseName,"r")
  15.   while not(endOfFile) do
  16.     record = database.readLine()
  17.     if record == nil then
  18.       endOfFile = true
  19.     else
  20.       records[counter] = record
  21.       counter = counter + 1
  22.     end
  23.   end
  24.   database.close()
  25.  
  26.   for i = 1,#records do
  27.     pointerBegin = 1
  28.     pointerEnd = 1
  29.  
  30.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  31.     fid = tonumber(getField(records[i],pointerBegin,pointerEnd))
  32.     pointerBegin = pointerEnd + 2
  33.  
  34.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  35.     fnickname = getField(records[i],pointerBegin,pointerEnd)
  36.     pointerBegin = pointerEnd + 2
  37.  
  38.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  39.     fxHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
  40.     pointerBegin = pointerEnd + 2
  41.    
  42.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  43.     fzHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
  44.     pointerBegin = pointerEnd + 2
  45.    
  46.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  47.     fyHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
  48.     pointerBegin = pointerEnd + 2
  49.  
  50.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  51.     ffacingHome = tonumber(getField(records[i],pointerBegin,pointerEnd))
  52.     pointerBegin = pointerEnd + 2
  53.  
  54.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  55.     fxCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
  56.     pointerBegin = pointerEnd + 2
  57.  
  58.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  59.     fzCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
  60.     pointerBegin = pointerEnd + 2
  61.    
  62.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  63.     fyCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
  64.     pointerBegin = pointerEnd + 2
  65.  
  66.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  67.     ffacingCurrent = tonumber(getField(records[i],pointerBegin,pointerEnd))
  68.     pointerBegin = pointerEnd + 2
  69.    
  70.     pointerEnd = getFieldLength(records[i],pointerBegin) - 1
  71.     ftask = getField(records[i],pointerBegin,pointerEnd)
  72.    
  73.     turtles[i] = {id = fid, nickname = fnickname, xHome = fxHome, zHome = fzHome, yHome = fyHome, facingHome = ffacingHome, xCurrent = fxCurrent, zCurrent = fzCurrent, yCurrent = fyCurrent, facingCurrent = ffacingCurrent, task = ftask}
  74.  
  75.   end
  76. end
  77.  
  78. function getFieldLength(record,location)
  79.   return string.find(record,"|",location)
  80. end
  81.  
  82. function getField(record,pointerBegin,pointerEnd)
  83.   return string.sub(record,pointerBegin,pointerEnd)
  84. end
  85.  
  86. function displayTurtles()
  87.     local monitor = peripheral.wrap("left")
  88.     monitor.setTextScale(.5)
  89.     term.redirect(monitor)
  90.     term.clear()
  91.     term.setCursorPos(1, 1)
  92.  
  93.   for i = 1,#turtles do
  94.     lineOne = turtles[i].nickname .. ":  Task: " .. turtles[i].task
  95.     lineTwo = "  Home - x" .. turtles[i].xHome .. " z" .. turtles[i].zHome .. " y" .. turtles[i].yHome .. " o" .. orientations[turtles[i].facingHome]
  96.     lineThree = "  CLoc - x" .. turtles[i].xCurrent .. " z" .. turtles[i].zCurrent .. " y" .. turtles[i].yCurrent .. " o" .. orientations[turtles[i].facingCurrent]
  97.  
  98.     print(lineOne)
  99.     print(lineTwo)
  100.     print(lineThree)
  101.   end
  102.     term.restore()
  103. end
  104.  
  105. turtles = {}
  106. orientations = {"West","North","East","South"}
  107. loadDatabase()
  108. displayTurtles()
Advertisement
Add Comment
Please, Sign In to add comment