task: rewrite event handling as a step towards event-based subscriptions

This commit is contained in:
2024-12-14 14:53:24 +01:00
parent f9a8b32d3e
commit a0d524b825
8 changed files with 319 additions and 158 deletions

View File

@@ -66,7 +66,9 @@ impl<T: Surface> IdleTask<T> {
}
impl<T: Surface> Task for IdleTask<T> {
fn start(&mut self) {
fn name(&self) -> &'static str { "Idle" }
fn start(&mut self, _bus: &mut EventBus) {
self.solid.set_shader(Box::new(SolidShader { }));
self.surface.set_shader(Box::new(ThinkingShader { }));
self.shimmer.set_shader(Box::new(ShimmerShader { }));
@@ -76,9 +78,7 @@ impl<T: Surface> Task for IdleTask<T> {
self.shimmer.set_opacity(64);
}
fn tick(&mut self, event: &Event, bus: &mut EventBus) {}
fn stop(&mut self) {
fn stop(&mut self, _bus: &mut EventBus) {
self.solid.clear_shader();
self.surface.clear_shader();
self.shimmer.clear_shader();
@@ -169,16 +169,19 @@ impl<T: Surface> TestPattern<T> {
}
impl<T: Surface> Task for TestPattern<T> {
fn start(&mut self) {
self.surface.set_shader(Box::new(self.pattern.clone()));
fn name(&self) -> &'static str { "TestPattern" }
fn start(&mut self, _bus: &mut EventBus) {
self.surface.set_shader(Box::new(self.pattern));
}
fn tick(&mut self, event: &Event, bus: &mut EventBus) {
fn on_tick(&mut self, bus: &mut EventBus) {
self.updater.run(|| {
self.pattern = self.pattern.next();
log::info!("Test pattern: {:?}", self.pattern);
self.frame = 0;
self.surface.set_shader(Box::new(self.pattern.clone()));
self.surface.set_shader(Box::new(self.pattern));
bus.push(Event::new_property_change("animations.test.pattern", format!("{:?}", self.pattern)));
});
self.stepper.run(|| {
self.frame = self.frame.wrapping_add(1);
@@ -197,7 +200,7 @@ impl<T: Surface> Task for TestPattern<T> {
});
}
fn stop(&mut self) {
fn stop(&mut self, _bus: &mut EventBus) {
self.surface.clear_shader();
}
}