amazeing 0.9.0

Amazeing is a maze generator/solver application with simulation/visualization.
use crate::app::common::{get_colors, set_screen_size};
use crate::cli::{AmazeingArgs, AmazeingContext, CreateArgs};
use crate::render::display_loop::{generate_loop, generate_simulation_loop};
use crate::render::scene::MazeScene;

pub(super) async fn run(global: &AmazeingArgs, args: CreateArgs) {
    let context = AmazeingContext::create_context(
        None,
        args.maze,
        args.procedure,
        args.heuristic_function.heuristic(),
        args.jumble_factor,
        args.weight_direction.direction(),
        args.rows,
        args.cols,
        global.zoom,
        global.fps,
        global.show_perimeter,
    );

    let mut scene = MazeScene::new_from_dimension(
        args.unit_shape.shape(),
        &context,
        &get_colors(context.rows, context.cols, global.colors.as_ref()),
    );

    set_screen_size(scene.wh);
    if args.verbose {
        generate_simulation_loop(&mut scene).await
    } else {
        generate_loop(&mut scene).await
    }
}