27 lines
467 B
Rust
27 lines
467 B
Rust
use std::marker::PhantomData;
|
|
|
|
use sfsm::TransitGuard;
|
|
|
|
use crate::game::GameContext;
|
|
|
|
pub enum TimeGuard {
|
|
Idle,
|
|
Waiting(u32),
|
|
}
|
|
|
|
impl TimeGuard {
|
|
pub fn start_wait(&mut self, time: u32) {
|
|
*self = Self::Waiting(time);
|
|
}
|
|
|
|
pub fn tick(&mut self) {
|
|
if let TimeGuard::Waiting(ref mut counter) = self {
|
|
*counter = counter.saturating_sub(1);
|
|
}
|
|
}
|
|
|
|
pub fn guard(&self) -> TransitGuard {
|
|
matches!(self, TimeGuard::Waiting(0)).into()
|
|
}
|
|
}
|