NielsUtrecht

base-tanks

Sep 7th, 2013
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.77 KB | None | 0 0
  1. local confMainPort = 1000
  2. local confMyPort = 1001
  3. local confModemSide = "right"
  4. local confTankModemSide = "back"
  5.  
  6. local tankData = {}
  7.  
  8. local nameFix = {
  9.     ["item.fuel"] = "Fuel",
  10.     ["tile.oilStill"] = "Oil" }
  11.  
  12. if(not os.loadAPI("hydraApi")) then
  13.     error("Could not load hydraApi")
  14. end
  15.  
  16. function getLiquidName(tableInfo)
  17.     if(tableInfo["name"] == nil) then
  18.         return "Empty"
  19.     elseif(nameFix[tableInfo["name"]] ~= nil) then
  20.         return nameFix[tableInfo["name"]]
  21.     else
  22.         return tostring(tableInfo["name"])
  23.     end
  24. end
  25.  
  26. local modem = hydraApi.getModem(true)
  27. local net = hydraApi.getModem(false)
  28. local tankIds = net.getNamesRemote()
  29.  
  30. -- Remove anything that's not a tank valve
  31. for k,v in pairs(tankIds) do
  32.     if(string.find(v, "tank_valve") == nil) then
  33.         tankIds[k] = nil
  34.     end
  35. end
  36.  
  37. local tank = {}
  38.  
  39. for k,v in pairs(tankIds) do
  40.         tank[k] = peripheral.wrap(v)
  41.         print("Connected to: " .. v)
  42. end
  43.  
  44. while true do
  45.     local data = ""
  46.     local dataTable = {}
  47.     for key, t in pairs(tank) do
  48.         local tableInfo = t.getTanks("back")[1]
  49.        
  50.         if(tableInfo["amount"] == nil) then tableInfo["amount"] = 0 end
  51.        
  52.         tableInfo["name"] = getLiquidName(tableInfo)
  53.         tableInfo["fraction"] = tableInfo["amount"] / tableInfo["capacity"]
  54.        
  55.         if(tankData[key] ~= nil) then
  56.             if(tankData[key]["amount"] > tableInfo["amount"]) then
  57.                 tableInfo["dir"] = "-"
  58.             elseif(tankData[key]["amount"] < tableInfo["amount"]) then
  59.                 tableInfo["dir"] = "+"
  60.             else
  61.                 tableInfo["dir"] = "="
  62.             end
  63.         end    
  64.        
  65.         print(tableInfo["name"] .. ": " .. hydraApi.formatLargeNumber(tableInfo["amount"]) .. " " .. hydraApi.formatPercent(tableInfo["fraction"]))
  66.        
  67.         dataTable[key] = tableInfo
  68.     end
  69.  
  70.     tankData = dataTable
  71.    
  72.     modem.transmit(confMainPort, confMyPort, tankData)
  73.  
  74.     os.sleep(2)
  75. end
Advertisement
Add Comment
Please, Sign In to add comment