All messages sent to the displays are firstr enqueued, then "played
back" on globalstep, similar to biome_lib's deferred-generation method.
By default, no more than 10 messages will be added to the queue. If the
queue should exceed that, old messages will be deleted to make room for
new messages.
Messages will be pulled from the queue, one item per server tick, in the
order received, and relayed to their displays, if dtime <= 0.2s. If
dtime is greater, messages will be withheld until it decreases.
Autoscroll now limits the speed to 0.5s per step.
glyph images are now used as masks over the "leds_on" image
instead of the glyphs themselves looking like they're made of LEDs.
Makes font files much simpler, easier to draw, makes LEDs easier
to re-texture.
White for "on" LEDs, black for "off"
Also optimized all images (optipng, pngcrush)
instead of string.char(0-27), use "/" as an escape followed by
"[0-9][A-R][a-r]", all inside the string.
e.g. digiline_send("chan", "/0this /1is /2some /3colorful /4text")
"/" followed by any other character than the above will be treated as an
invalid color code and will be taken literally.
"//" will print a single slash.
Note: on receipt, all instances of "//" in a message are actually
translated to string.char(30) -- one for each pair. This makes the
scrolling code easier. Keep this in mind if you use the "getstr" and
"getindex" commands.
Also, this expands the max string length to 6 kB, to allow a full 80x25
display with one color code er character. "clear" and "allon" remain at
2kB since that's still enough.
also make sure to `return false` from the scroll_text function if the
scroll timer was last set to a value below the allowed minimum (which
would mean the user/program intended to shut it off by setting it to 0,
or the stepper was called manually, implying no timer)