mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/exe/draw.rs')
| -rw-r--r-- | src/exe/draw.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/exe/draw.rs b/src/exe/draw.rs new file mode 100644 index 0000000..ff8ece7 --- /dev/null +++ b/src/exe/draw.rs @@ -0,0 +1,41 @@ +use plandustry::block::build_registry; +use plandustry::data::renderer::Renderer; +use plandustry::data::schematic::SchematicSerializer; +use std::env::Args; + +use crate::args::{self, OptionHandler}; +use crate::print_err; + +pub fn main(mut args: Args, arg_off: usize) { + let mut handler = OptionHandler::default(); + if let Err(e) = args::parse(&mut args, &mut handler, arg_off) { + print_err!(e, "Command error"); + return; + } + + let reg = build_registry(); + let mut ss = SchematicSerializer(®); + let mut first = true; + let mut need_space = false; + + // process schematics from command line + for curr in handler.get_literals() { + match ss.deserialize_base64(curr) { + Ok(s) => { + if !first || need_space { + println!(); + } + Renderer::render(&s).save("x.png").unwrap(); + } + // continue processing literals & maybe interactive mode + Err(e) => { + if need_space { + println!(); + } + first = false; + need_space = false; + print_err!(e, "Could not read schematic"); + } + } + } +} |