constructors and destructors for serialization
This commit is contained in:
parent
540e4a25fb
commit
d37ea33b1e
29
src/timer.rs
29
src/timer.rs
@ -26,6 +26,11 @@ impl PauseState for Unpaused{
|
||||
pub struct Realtime{
|
||||
offset:Time,
|
||||
}
|
||||
impl Realtime{
|
||||
const fn new(offset:Time)->Self{
|
||||
Self{offset}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone,Copy,Debug)]
|
||||
pub struct Scaled{
|
||||
@ -33,6 +38,9 @@ pub struct Scaled{
|
||||
offset:Time,
|
||||
}
|
||||
impl Scaled{
|
||||
const fn new(scale:Ratio64,offset:Time)->Self{
|
||||
Self{scale,offset}
|
||||
}
|
||||
const fn with_scale(scale:Ratio64)->Self{
|
||||
Self{scale,offset:Time::ZERO}
|
||||
}
|
||||
@ -149,6 +157,15 @@ impl<T:TimerState,P:PauseState> TimerFixed<T,P>{
|
||||
timer.set_time(time,new_time);
|
||||
timer
|
||||
}
|
||||
pub fn from_state(state:T)->Self{
|
||||
Self{
|
||||
state,
|
||||
_paused:P::new(),
|
||||
}
|
||||
}
|
||||
pub fn into_state(self)->T{
|
||||
self.state
|
||||
}
|
||||
pub fn time(&self,time:Time)->Time{
|
||||
match P::IS_PAUSED{
|
||||
true=>self.state.get_offset(),
|
||||
@ -182,6 +199,18 @@ pub enum Timer<T:TimerState>{
|
||||
Unpaused(TimerFixed<T,Unpaused>),
|
||||
}
|
||||
impl<T:TimerState> Timer<T>{
|
||||
pub fn from_state(state:T,paused:bool)->Self{
|
||||
match paused{
|
||||
true=>Self::Paused(TimerFixed::from_state(state)),
|
||||
false=>Self::Unpaused(TimerFixed::from_state(state)),
|
||||
}
|
||||
}
|
||||
pub fn into_state(self)->(T,bool){
|
||||
match self{
|
||||
Self::Paused(timer)=>(timer.into_state(),true),
|
||||
Self::Unpaused(timer)=>(timer.into_state(),false),
|
||||
}
|
||||
}
|
||||
pub fn paused(time:Time,new_time:Time)->Self{
|
||||
Self::Paused(TimerFixed::new(time,new_time))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user