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

@@ -2,6 +2,7 @@ use palette::Hsv;
use rgb::RGB8;
use crate::events::{Event, EventBus};
use crate::time::Periodically;
use crate::geometry::*;
use crate::render::{Shader, Surface, Surfaces};
@@ -75,7 +76,7 @@ impl<T: Surface> Task for IdleTask<T> {
self.shimmer.set_opacity(64);
}
fn tick(&mut self) {}
fn tick(&mut self, event: &Event, bus: &mut EventBus) {}
fn stop(&mut self) {
self.solid.clear_shader();
@@ -172,7 +173,7 @@ impl<T: Surface> Task for TestPattern<T> {
self.surface.set_shader(Box::new(self.pattern.clone()));
}
fn tick(&mut self) {
fn tick(&mut self, event: &Event, bus: &mut EventBus) {
self.updater.run(|| {
self.pattern = self.pattern.next();
log::info!("Test pattern: {:?}", self.pattern);