events: implement a first attempt at an eventing system

This commit is contained in:
Torrie Fischer
2024-12-13 00:56:50 +01:00
parent 9a749c40a1
commit d7f312ffe4
8 changed files with 236 additions and 30 deletions

View File

@@ -8,7 +8,11 @@ mod platform;
mod animations;
mod mappings;
mod buffers;
mod events;
use events::Event;
use crate::events::EventBus;
use crate::platform::{DefaultBoard, Board};
use crate::task::{FixedSizeScheduler, Scheduler};
use crate::render::{Surfaces, Renderer};
@@ -39,10 +43,19 @@ fn main() {
let mut renderer = FixedSizeScheduler::new([Box::new(Renderer::new(output, surfaces))]);
log::info!("Starting event bus");
let mut bus = EventBus::new();
log::info!("Ready to rock and roll");
bus.push(Event::new_ready_to_rock());
loop {
animations.tick();
system.tick();
renderer.tick();
let next_event = bus.next();
match next_event {
events::Event::Tick => (),
_ => log::info!("Event: {:?}", next_event)
}
animations.tick(&next_event, &mut bus);
system.tick(&next_event, &mut bus);
renderer.tick(&next_event, &mut bus);
}
}