use crate::engine::animation::base::Animation;
use std::time::Duration;
pub struct Wait {
pub(crate) duration: Duration,
pub(crate) elapsed: Duration,
}
impl Animation for Wait {
fn update(&mut self, dt: Duration) -> (bool, Duration) {
self.elapsed += dt;
let finished = self.elapsed >= self.duration;
let leftover = self.elapsed.saturating_sub(self.duration);
(finished, leftover)
}
fn duration(&self) -> Duration {
self.duration
}
fn reset(&mut self) {
self.elapsed = Duration::ZERO;
}
}
pub fn wait(duration: Duration) -> Box<dyn Animation> {
Box::new(Wait {
duration,
elapsed: Duration::ZERO,
})
}