Crysys icon

BigReactors - Turbine/Battery Monitor

Crysys | PRO | 11/19/18 06:42:57 AM UTC | 0 ⭐ | 350 👁️ | Never ⏰ | []
Lua |

5.86 KB

|

None

|

0 👍

/

0 👎

local rValue = math.random(1000, 9999) --has no actual effect on the operation of the program
 
while true do --enter our loop
 
  local pList = peripheral.getNames()
  local i, name
 
  --get the full device names
 
  function getMonitorName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "monitor" then
        return peripheral.wrap(name)
      end
    end
  end
  function getMatrixName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "Induction Matrix" then
         return peripheral.wrap(name)
       end
    end
  end
  function getbCubeName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "Basic Energy Cube" then
        return peripheral.wrap(name)
      end
    end
  end
  function getaCubeName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "Advanced Energy Cube" then
        return peripheral.wrap(name)
      end
    end
  end
  function geteCubeName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "Elite Energy Cube" then
        return peripheral.wrap(name)
      end
    end
  end
  function getuCubeName()
    for i, name in pairs(pList) do
      if peripheral.getType(name) == "Ultimate Energy Cube" then
        return peripheral.wrap(name)
      end
    end
  end
 
  --set the short name aliases
 
  local mon = getMonitorName()
  local matrix = getMatrixName()
  local bCube = getbCubeName()
  local aCube = getaCubeName()
  local eCube = geteCubeName()
  local uCube = getuCubeName()
  local sType = 0 --storage type counter
 
  --quick formatting aliases
 
  function mCursor(x,y) --monitor cursor alias
    mon.setCursorPos(x,y)
  end
  function tCursor(x,y) --terminal cursor alias
    term.setCursorPos(x,y)
  end
  function nText() --nominal text (need to rework later)
    mon.setTextColor(colors.lime)
  end
  function hText() --header text
    mon.setTextColor(colors.white)
  end
  function iText() --info text
    mon.setTextColor(colors.yellow)
  end
  function cText() --caution text
    mon.setTextColor(colors.orange)
  end
  function wText() --warning text
    mon.setTextColor(colors.red)
  end
  function tReset() --reset terminal to initial state
    term.clear()
    tCursor(1,1)
  end
  function mReset() --reset monitor to initial state
    mon.clear()
    mCursor(1,1)
  end
 
  if mon == nil then --detect if a monitor exists, error if it doesn't
    tReset()
    print("Error -1\n")
    print("This system was designed to output to a",
    "monitor, but one couldn't be found. Please",
    "attach a monitor to any side of the terminal",
    "or with a wired modem.")
  else
    tReset()
    print("Process ID:", rValue)
    print("Status: Running...")
  end
 
  if matrix ~= nil then --detect if an Induction Matrix exists, set method aliases if it does
    mEnergy = matrix.getEnergy()
    mMaxEnergy = matrix.getMaxEnergy()
    mInput = matrix.getInput()
    mOutput = matrix.getOutput()
    mXFerCap = matrix.getTransferCap()
    sType = sType+1
  end
 
  if bCube ~= nil then --detect if a Basic Energy Cube exists, set method aliases if it does
    bEnergy = bCube.getEnergy()
    bMaxEnergy = bCube.getMaxEnergy()
    bEnergyNeeded = bCube.getEnergyNeeded()
    bOutput = bCube.getOutput()
    sType = sType+1
  end
 
  if aCube ~= nil then --detect if an Advanced Energy Cube exists, set method aliases if it does
    aEnergy = aCube.getEnergy()
    aMaxEnergy = aCube.getMaxEnergy()
    aEnergyNeeded = aCube.getEnergyNeeded()
    aOutput = aCube.getOutput()
    sType = sType+1
  end
 
  if eCube ~= nil then --detect if an Elite Energy Cube exists, set method aliases if it does
    eEnergy = eCube.getEnergy()
    eMaxEnergy = eCube.getMaxEnergy()
    eEnergyNeeded = eCube.getEnergyNeeded()
    eOutput = eCube.getOutput()
    sType = sType+1
  end
 
  if uCube ~= nil then --detect if an Ultimate Energy Cube exists, set method aliases if it does
    uEnergy = uCube.getEnergy()
    uMaxEnergy = uCube.getMaxEnergy()
    uEnergyNeeded = uCube.getEnergyNeeded()
    uOutput = uCube.getOutput()
    sType = sType+1
  end
 
  function putNumber (number) --round numbers and make them into human readable format
    local round = 0
    local texts = ""
 
    if number >= 1000000000000000000 then
      round = (number / 1000000000000000000)
      texts = string.sub(round, 0, 5) .. " EJ"
    elseif number >= 1000000000000000 then
      round = (number / 1000000000000000)
      texts = string.sub(round, 0, 5) .. " PJ"
    elseif number >= 1000000000000 then
      round = (number / 1000000000000)
      texts = string.sub(round, 0, 5) .. " TJ"
    elseif number >= 1000000000 then
      round = (number / 1000000000)
      texts = string.sub(round, 0, 5) .. " GJ"
    elseif number >= 1000000 then
      round = (number / 1000000)
      texts = string.sub(round, 0, 5) .. " MJ"
    elseif number >= 1000 then
      round = (number / 1000)
      texts = string.sub(round, 0, 5) .. " kJ"
    else
      round = (number)
      texts = string.sub(number, 0, 5) .. " J"
    end
      return texts
  end
 
  mReset()
  mon.write(putNumber(bEnergy))
  mCursor(1,2)
  mon.write(putNumber(aEnergy))
  mCursor(1,3)
  mon.write(putNumber(eEnergy))
  mCursor(1,4)
  mon.write(putNumber(uEnergy))
  mCursor(1,5)
  mon.write(putNumber(mEnergy)) mon.write(putNumber(mMaxEnergy))
 
--[[
  if sType == 0 then
    mReset()
    mon.write("ERROR: No power storage detected.")
    mCursor(1,3)
    mon.write("System TERMINATED.")
    mCursor(1,5)
    mon.write("Please connect power storage")
    tReset()
    break
  elseif sType > 1 then
    mReset()
    mon.write("ERROR: Multi-Type Storage Detected")
    mCursor(1,3)
    mon.write("System TERMINATED")
    tReset()
    break
  end
--]]
  sleep(1) --wait for 1sec
end --exit our loop

Comments