Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ReactorMonitor = {}
- local Status = {
- IDLE = 0;
- CHARGING = 1;
- HIGH = 2;
- }
- local function writeStatusToMonitor(monitor, state)
- if state == Status.IDLE then
- monitor.setTextColor(colors.red);
- monitor.write("Idle");
- elseif state == Status.CHARGING then
- monitor.setTextColor(colors.lime);
- monitor.write("Charging");
- elseif state == Status.HIGH then
- monitor.setTextColor(colors.orange);
- monitor.write("High Power");
- else
- monitor.setTextColor(colors.magenta);
- monitor.write("Error!");
- end
- end
- local function round(num, numDecimalPlaces)
- local mult = 10^(numDecimalPlaces or 0)
- return math.floor(num * mult + 0.5) / mult
- end
- local function writeRodControl(monitor, reactor, optimal)
- local numRods = reactor.getNumberOfControlRods();
- for i = 0, numRods - 1 do
- local rodLevel = reactor.getControlRodLevel(i)
- if rodLevel == optimal then
- monitor.setTextColor(colors.lightBlue);
- elseif rodLevel < optimal then
- monitor.setTextColor(colors.orange);
- else
- monitor.setTextColor(colors.magenta);
- end
- monitor.write(tostring(rodLevel));
- monitor.write(" ")
- end
- end
- --Display format--
- --Reactor Monitoring System
- --Refresh: {} sec
- --State: {}
- --Time In State: {} sec
- --Prev State: {}
- --Time In Prev State: {} sec
- --Energy Level: {}%
- --Energy Produced: {} RF/t
- --Fuel Consumed: {} mb/t
- --Rod Control: [{}, {}, ...]
- function ReactorMonitor.updateMonitor(config, state)
- local currentLineNumber = 0;
- local monitor = config.monitor;
- local reactor = config.reactor;
- --reset
- monitor.clear();
- monitor.setTextScale(0.5);
- --First Line
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.orange);
- monitor.write("Reactor Monitoring System");
- --Refresh: {} sec
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Refresh: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(state.PrevSleepTime));
- monitor.write(" sec");
- --State: {}
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("State: ");
- writeStatusToMonitor(monitor, state.CurrentSystemStatus);
- --Time In State: {} sec
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Time In State: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(os.clock() - state.CurrentSystemStatusStart));
- monitor.write(" sec");
- --Prev State: {}
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Prev State: ");
- writeStatusToMonitor(monitor, state.PrevSystemStatus);
- --Time In Prev State: {} sec
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Time In Prev State: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(state.PrevSystemStatusEnd - state.PrevSystemStatusStart));
- monitor.write(" sec");
- --Energy Level: {}%
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Energy Level: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(round(state.PrevEnergyLevel, 1)));
- monitor.write("%");
- --Energy Produced: {} RF/t
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Energy Produced: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(round(reactor.getEnergyProducedLastTick(), 1)));
- monitor.write(" RF/t");
- --Fuel Consumed: {} mb/t
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Fuel Consumed: ");
- monitor.setTextColor(colors.yellow);
- monitor.write(tostring(round(reactor.getFuelConsumedLastTick(), 1)));
- monitor.write(" mb/t");
- --Rod Control: [{}, {}, ...]
- currentLineNumber = currentLineNumber + 1;
- monitor.setCursorPos(1,currentLineNumber);
- monitor.setTextColor(colors.white);
- monitor.write("Rod Control: ");
- monitor.setTextColor(colors.yellow);
- monitor.write("[ ");
- writeRodControl(monitor, reactor, config.optimalInsertionPercent);
- monitor.setTextColor(colors.yellow);
- monitor.write("]");
- end
- return ReactorMonitor;
Advertisement
Add Comment
Please, Sign In to add comment