Monitor write doesn't newline
authorOlav Bakke Svendsen <mail@olavbs.no>
Thu, 12 Oct 2023 03:37:57 +0000 (05:37 +0200)
committerOlav Bakke Svendsen <mail@olavbs.no>
Thu, 12 Oct 2023 03:37:57 +0000 (05:37 +0200)
steam/temporary-coal-feeder.lua

index f14f663edc80791957ee000a544b3018b1ffa18c..5703f89cda70b3de391ab5ef7e56fbfb4293b71b 100644 (file)
@@ -3,10 +3,10 @@
 local refill_when = function(amt) return amt < 2 end
 local refill_amt  = 2
 
-local monitor = peripheral.wrap("monitor_1")
+local main_monitor = peripheral.wrap("monitor_1")
 local treefarm_monitor = peripheral.wrap("monitor_0")
 
-local coal_barrels_1 = {}
+local coal_barrels = {}
 for _,n in pairs({ "0", "1" }) do
   local prefix = "sophisticatedstorage:limited_barrel_"
   coal_barrels[prefix..n] = peripheral.wrap(prefix..n)
@@ -56,19 +56,26 @@ local feed = function(stock)
   end
 end
 
-local print_stats = function(to, stock)
+local print_stats = function(monitor, stock)
   local total_coal = 0
   local str = ""
   for k,v in pairs(stock) do
     total_coal = total_coal + v
-    str = str..tostring(v).." in "..string.match(k, "barrel_%d+$").."\n"
+    str = str.." + "..tostring(v)
   end
-  m.clear()
-  m.setCursorPos(1,1)
-  m.write(tostring(num_deployers).." deployers connected\n\n")
-  m.write(tostring(num_deployers/2).." charcoal/minute needed\n")
-  m.write(tostring(total_coal).." available\n"..str)
-  m.write("refreshes once every minute")
+  monitor.clear()
+  monitor.setTextColor(1)
+  monitor.setCursorPos(1,1)
+  monitor.write(tostring(num_deployers).." burners")
+  monitor.setCursorPos(1,2)
+  monitor.write(tostring(num_deployers/2).." charcoal/minute needed")
+  monitor.setCursorPos(1,3)
+  monitor.write(tostring(total_coal).." available")
+  monitor.setCursorPos(1,4)
+  monitor.setTextColor(128)
+  monitor.write(string.gsub(str, "^%s++%s*", ""))
+  monitor.setCursorPos(1,6)
+  monitor.write("refreshes once every minute")
 end
 
 local spinner_chars = {"\\","-","/","|"}
@@ -81,7 +88,7 @@ local main_timer = os.startTimer(0)
 local spinner_timer = os.startTimer(0)
 
 while true do
-  local e = table.pack(os.pullSignal())
+  local e = table.pack(os.pullEvent())
   if e[1] == "monitor_touch" and e[2] == treefarm_monitor then
     treefarm_monitor.write(spinner())
   elseif e[1] == "timer" and e[2] == main_timer then
@@ -90,9 +97,10 @@ while true do
     print_stats(main_monitor, stock)
     feed(stock)
   elseif e[1] == "timer" and e[2] == spinner_timer then
-    spinner_timer(0.5)
+    spinner_timer = os.startTimer(0.5)
     local s = spinner()
-    main_monitor.setCursorPos(29,12)
+    main_monitor.setCursorPos(27,10)
+    monitor.setTextColor(1)
     main_monitor.write(s)
   end
 end