use auto_spaces::Spaces;
use auto_worlds::Worlds;
use clap::Parser;
#[cfg(feature = "sdl2")]
pub mod gui;
#[cfg(feature = "cursive")]
pub mod terminal;
#[cfg(feature = "wasm")]
pub mod web;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short = 'W', long, value_parser, default_value_t = 1200)]
width: usize,
#[clap(short = 'H', long, value_parser, default_value_t = 700)]
height: usize,
#[clap(short, long, value_parser, default_value_t = 20)]
cell_size: usize,
#[clap(short, long, value_parser, default_value_t = 100)]
update_millis: usize,
#[clap(short, long)]
world: Worlds,
#[clap(short, long)]
frontend: Spaces,
}
fn main() -> Result<(), String> {
use auto_cellular::common::Dimensions;
let args = Args::parse();
match args.frontend {
#[cfg(feature = "cursive")]
Spaces::Cursive => terminal::run(
args.world,
Dimensions(args.width, args.height),
args.update_millis,
),
#[cfg(feature = "sdl2")]
Spaces::Sdl2 => gui::run(
args.world,
Dimensions(args.width, args.height),
args.cell_size,
args.update_millis,
),
}
}