comfy 0.4.0

A comfy 2d game engine in Rust.
Documentation
use comfy::*;

simple_game!("Z-index test", GameState, setup, update);

pub struct GameState {
    pub font: FontHandle,
    pub font_size: f32,
}

impl GameState {
    pub fn new(_c: &mut EngineState) -> Self {
        Self {
            font: load_font_from_bytes(include_bytes!(
                "../../assets/fonts/Orbitron-Black.ttf"
            )),
            font_size: 32.0,
        }
    }
}


const Z_BG: i32 = 0;
const Z_1: i32 = 1;
const Z_2: i32 = 2;

fn setup(_state: &mut GameState, _c: &mut EngineContext) {
    set_y_sort(0, true);
}

fn update(state: &mut GameState, _c: &mut EngineContext) {
    draw_rect(Vec2::ZERO, splat(40.0), GREEN.darken(0.99), Z_BG);

    {
        let left = vec2(-8.0, 0.0);

        draw_comfy(left, WHITE, Z_1, splat(2.0));
        draw_comfy(
            left + vec2(1.0, (4.0 * get_time()).sin() as f32),
            RED,
            Z_1,
            splat(3.0),
        );
    }

    {
        for (n, i) in (-5i32..5).enumerate() {
            let colors = [RED, BLUE];

            let index = (i.rem_euclid(colors.len() as i32)) as usize;

            let pos = vec2(-1.0 + i as f32 * 0.1, i as f32 * 0.8);

            draw_circle(pos, 0.5, colors[index], Z_2);

            draw_text_pro_experimental(
                simple_styled_text(&format!("{}", n)),
                pos,
                WHITE,
                TextAlign::Center,
                32.0,
                state.font,
                100,
            );

            draw_circle(
                vec2(2.0 - i as f32 * 0.1, -i as f32 * 0.8),
                0.5,
                colors[index],
                Z_2,
            );
        }
    }
}