1use rust_rocket::client::{Event, RocketClient};
2use std::error::Error;
3use std::fs::OpenOptions;
4use std::time::Duration;
5
6static TRACKS_FILE: &str = "tracks.bin";
7
8fn main() -> Result<(), Box<dyn Error>> {
9 let mut rocket = RocketClient::new()?;
10 rocket.get_track_mut("test")?;
11 rocket.get_track_mut("test2")?;
12 rocket.get_track_mut("a:test2")?;
13
14 let mut current_row = 0;
15 let mut paused = true;
16
17 loop {
18 if let Some(event) = rocket.poll_events()? {
19 match event {
20 Event::SetRow(row) => {
21 println!("SetRow (row: {:?})", row);
22 current_row = row;
23 }
24 Event::Pause(state) => {
25 paused = state;
26
27 let track1 = rocket.get_track("test").unwrap();
28 println!(
29 "Pause (value: {:?}) (row: {:?})",
30 track1.get_value(current_row as f32),
31 current_row
32 );
33 }
34 Event::SaveTracks => {
35 let tracks = rocket.save_tracks();
37
38 let mut file = OpenOptions::new()
41 .write(true)
42 .create(true)
43 .truncate(true)
44 .open(TRACKS_FILE)?;
45
46 let bincode_conf = bincode::config::standard();
48 bincode::encode_into_std_write(tracks, &mut file, bincode_conf)?;
49 println!("Tracks saved to {}", TRACKS_FILE);
51 }
52 }
53 println!("{:?}", event);
54 }
55
56 if !paused {
57 current_row += 1;
58 rocket.set_row(current_row)?;
59 }
60
61 std::thread::sleep(Duration::from_millis(32));
62 }
63}