aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/ttyplay/event.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-05 01:24:40 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-05 01:24:40 -0500
commitc1ea723f8277470e2bbaff7cd679e50d23c427f2 (patch)
treed1a2aa2b77a0d5e84e4249545bd3de67d907e6a5 /src/bin/ttyplay/event.rs
parent709cedd23d2d5c6f91d96e01dba30d7af4f316cc (diff)
downloadttyrec-bin-c1ea723f8277470e2bbaff7cd679e50d23c427f2.tar.gz
ttyrec-bin-c1ea723f8277470e2bbaff7cd679e50d23c427f2.zip
simplify
Diffstat (limited to 'src/bin/ttyplay/event.rs')
-rw-r--r--src/bin/ttyplay/event.rs50
1 files changed, 13 insertions, 37 deletions
diff --git a/src/bin/ttyplay/event.rs b/src/bin/ttyplay/event.rs
index d1d03e9..4effba4 100644
--- a/src/bin/ttyplay/event.rs
+++ b/src/bin/ttyplay/event.rs
@@ -2,23 +2,21 @@ pub enum Event {
FrameTransition((usize, vt100::Screen)),
Key(textmode::Key),
FrameLoaded(Option<usize>),
- Pause,
Paused(bool),
+ TimerAction(TimerAction),
+ ToggleUi,
+ Quit,
+}
+
+pub enum TimerAction {
+ Pause,
FirstFrame,
LastFrame,
NextFrame,
PreviousFrame,
- ToggleUi,
Quit,
}
-enum MoveFrame {
- First,
- Last,
- Next,
- Previous,
-}
-
pub struct Reader {
pending: async_std::sync::Mutex<Pending>,
cvar: async_std::sync::Condvar,
@@ -68,9 +66,8 @@ struct Pending {
key: std::collections::VecDeque<textmode::Key>,
frame_loaded: Option<usize>,
done_loading: bool,
- pause: bool,
paused: Option<bool>,
- frame_controls: std::collections::VecDeque<MoveFrame>,
+ timer_actions: std::collections::VecDeque<TimerAction>,
toggle_ui: bool,
quit: bool,
}
@@ -95,23 +92,11 @@ impl Pending {
self.done_loading = true;
}
}
- Event::Pause => {
- self.pause = !self.pause;
- }
Event::Paused(paused) => {
self.paused = Some(paused);
}
- Event::FirstFrame => {
- self.frame_controls.push_back(MoveFrame::First);
- }
- Event::LastFrame => {
- self.frame_controls.push_back(MoveFrame::Last);
- }
- Event::NextFrame => {
- self.frame_controls.push_back(MoveFrame::Next);
- }
- Event::PreviousFrame => {
- self.frame_controls.push_back(MoveFrame::Previous);
+ Event::TimerAction(action) => {
+ self.timer_actions.push_back(action);
}
Event::ToggleUi => {
self.toggle_ui = !self.toggle_ui;
@@ -127,9 +112,8 @@ impl Pending {
|| !self.key.is_empty()
|| self.frame_loaded.is_some()
|| self.done_loading
- || self.pause
|| self.paused.is_some()
- || !self.frame_controls.is_empty()
+ || !self.timer_actions.is_empty()
|| self.toggle_ui
|| self.quit
}
@@ -140,16 +124,8 @@ impl Pending {
Some(Event::Quit)
} else if let Some(key) = self.key.pop_front() {
Some(Event::Key(key))
- } else if self.pause {
- self.pause = false;
- Some(Event::Pause)
- } else if let Some(dir) = self.frame_controls.pop_front() {
- match dir {
- MoveFrame::First => Some(Event::FirstFrame),
- MoveFrame::Last => Some(Event::LastFrame),
- MoveFrame::Next => Some(Event::NextFrame),
- MoveFrame::Previous => Some(Event::PreviousFrame),
- }
+ } else if let Some(action) = self.timer_actions.pop_front() {
+ Some(Event::TimerAction(action))
} else if self.toggle_ui {
self.toggle_ui = false;
Some(Event::ToggleUi)