elikar 0.1.9

A rust asynchronous ECS game engine
use std::time::Duration;
use elikar::Spawner;
use futures::StreamExt;

fn main() {
    let mut game = elikar::init().unwrap();

    game.window_builder()
        .title("time")
        .build()
        .unwrap();

    let events = game.events();
    game.spawn_local(async move {
        let mut quit = events.on_quit();
        while let Some(_) = quit.next().await{
            events.elikar_world().quit();
        }
    });

    let handle = game.spawn(async {
        let mut timer = tokio::time::interval(Duration::from_secs(1));
        let mut count = 0;
        loop {
            timer.tick().await;
            count += 1;
            println!("{}s",count);
        }
    });

    let events = game.events();
    game.spawn(async move {
        let mut mouse_down = events.on_mouse_down();
        if let Some(_) = mouse_down.next().await {
            println!("Timer stop");
            handle.abort();
        }
    });

    let handle = game.spawn_local(async move {
        let timer = tokio::time::sleep(Duration::from_secs(2));
        timer.await;
    });

    game.spawn_local(async move {
        handle.await;
        println!("Time out!")
    });
    
    game.run();
}