chnaged tick to return instructions array

This commit is contained in:
Nickiel12 2022-01-02 20:08:57 -08:00
parent bab92d3327
commit 2d2147f799

View file

@ -6,7 +6,7 @@ pub trait MessageHandler { //the first one goes to
fn handle_update(&mut self, update: StateUpdate, hotkey_handler: &Hotkeys) fn handle_update(&mut self, update: StateUpdate, hotkey_handler: &Hotkeys)
-> (Option<StateUpdate>, Option<Vec<StateUpdate>>); -> (Option<StateUpdate>, Option<Vec<StateUpdate>>);
fn get_states(&self) -> StreamState; fn get_states(&self) -> StreamState;
fn tick(&mut self) -> (Option<StateUpdate>, Option<StateUpdate>); fn tick(&mut self) -> Vec<StateUpdate>;
} }
impl MessageHandler for StreamState { impl MessageHandler for StreamState {
@ -126,26 +126,26 @@ impl MessageHandler for StreamState {
(None, None) (None, None)
} }
fn tick(&mut self) -> (Option<StateUpdate>, Option<StateUpdate>) { fn tick(&mut self) -> Vec<StateUpdate> {
let mut instructions = Vec::new();
if self.timer_finished == false && self.timer_can_run == true { if self.timer_finished == false && self.timer_can_run == true {
let change = self.timer_start.elapsed(); let change = self.timer_start.elapsed();
match change { match change {
Err(_) => {(None, None)}, Err(_) => {},
Ok(change) => { Ok(change) => {
if change.as_secs_f32() >= self.timer_length { if change.as_secs_f32() >= self.timer_length {
self.timer_finished = true; self.timer_finished = true;
(Some(StateUpdate::TimerText(String::from("0.0"))), instructions.push(StateUpdate::TimerText(String::from("0.0")));
Some(StateUpdate::Scene(Scenes::Camera))) instructions.push(StateUpdate::Scene(Scenes::Camera));
} else { } else {
(Some(StateUpdate::TimerText( instructions.push(StateUpdate::TimerText(
format!("{:.1}", self.timer_length - ((change.as_secs_f32() * 10.0).round() / 10.0)) format!("{:.1}", self.timer_length - ((change.as_secs_f32() * 10.0).round() / 10.0))
)), None) ));
} }
} }
} }
} else {
(None, None)
} }
instructions
} }
fn get_states(&self) -> StreamState{ fn get_states(&self) -> StreamState{
@ -160,8 +160,8 @@ fn test_tick_1() {
state.timer_finished = false; state.timer_finished = false;
state.tick(); state.tick();
std::thread::sleep(std::time::Duration::from_millis(1000)); std::thread::sleep(std::time::Duration::from_millis(1000));
let update = state.tick(); let mut update = state.tick();
state.update(update.0.unwrap()); state.update(update.pop().unwrap());
assert_eq!(state.timer_text, "14.0"); assert_eq!(state.timer_text, "14.0");
} }
@ -171,8 +171,8 @@ fn test_tick_one_half() {
state.timer_finished = false; state.timer_finished = false;
state.tick(); state.tick();
std::thread::sleep(std::time::Duration::from_millis(500)); std::thread::sleep(std::time::Duration::from_millis(500));
let update = state.tick(); let mut update = state.tick();
state.update(update.0.unwrap()); state.update(update.pop().unwrap());
assert_eq!(state.timer_text, "14.5"); assert_eq!(state.timer_text, "14.5");
} }
@ -183,7 +183,7 @@ fn test_tick_10() {
state.timer_finished = false; state.timer_finished = false;
state.tick(); state.tick();
std::thread::sleep(std::time::Duration::from_millis(10000)); std::thread::sleep(std::time::Duration::from_millis(10000));
let update = state.tick(); let mut update = state.tick();
state.update(update.0.unwrap()); state.update(update.pop().unwrap());
assert_eq!(state.timer_text, "5.0"); assert_eq!(state.timer_text, "5.0");
} }