This commit is contained in:
2025-06-29 11:20:36 -05:00
parent cff2e315ca
commit af719d83db
13 changed files with 90 additions and 586 deletions
-43
View File
@@ -1,43 +0,0 @@
pub mod keypress;
pub mod tick_rate;
use std::sync::Arc;
use crate::{events::EventManager, Screen};
pub trait Extension {
fn init(&mut self, screen: &mut Screen, events: &Arc<EventManager>);
fn tick_start(&mut self, screen: &mut Screen, events: &Arc<EventManager>);
fn tick_end(&mut self, screen: &mut Screen, events: &Arc<EventManager>);
}
pub struct ExtensionManager(Vec<Box<dyn Extension>>);
impl Extension for ExtensionManager {
fn init(&mut self, screen: &mut Screen, events: &Arc<EventManager>) {
for ext in &mut self.0 {
ext.init(screen, events);
}
}
fn tick_start(&mut self, screen: &mut Screen, events: &Arc<EventManager>) {
for ext in &mut self.0 {
ext.tick_start(screen, events);
}
}
fn tick_end(&mut self, screen: &mut Screen, events: &Arc<EventManager>) {
for ext in &mut self.0 {
ext.tick_end(screen, events);
}
}
}
impl ExtensionManager {
pub fn new() -> ExtensionManager {
ExtensionManager(Vec::new())
}
pub fn add<E: Extension + 'static>(&mut self, extension: E) {
self.0.push(Box::new(extension));
}
}