From 927f0e2ad79f6fb36222a81116f63a95fe6c558d Mon Sep 17 00:00:00 2001 From: Dukantic Date: Sun, 22 Jun 2025 23:28:24 +0200 Subject: [PATCH] color and sound display now --- src/main.rs | 20 +++++++++++--------- src/polygon_draw.rs | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index d635804..f33fac5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,7 @@ enum Message { struct MyApp { poly_frame: PolygonFrame, time_last_frame: Instant, - nb_sec_for_rev: u32, + nb_sec_for_rev: f32, audio_manager: AudioManager, default_sound: StaticSoundData, } @@ -50,7 +50,7 @@ impl MyApp { let sound_data = StaticSoundData::from_file("assets/tick.ogg").expect("Fail to load audio"); ( Self { - nb_sec_for_rev: 4, + nb_sec_for_rev: 4.0, time_last_frame: Instant::now(), audio_manager: manager, default_sound: sound_data.clone(), @@ -67,10 +67,10 @@ impl MyApp { } fn update(&mut self, message: Message) { match message { - Message::ButtonPressedIncrement => self.nb_sec_for_rev += 1, + Message::ButtonPressedIncrement => self.nb_sec_for_rev += 0.5, Message::ButtonPressedDecrement => { - if self.nb_sec_for_rev > 1 { - self.nb_sec_for_rev -= 1; + if self.nb_sec_for_rev > 0.5 { + self.nb_sec_for_rev -= 0.5; } } Message::AddPolygon(s) => { @@ -168,16 +168,18 @@ impl MyApp { _ => c = Color::BLACK, } self.poly_frame.polygons[i].color = c; + self.poly_frame.polygons[i].color_name = s; } Message::ChangeSound(i, s) => { self.poly_frame.polygons[i].sound = - StaticSoundData::from_file(s).expect("Fail to load audio") + StaticSoundData::from_file(&s).expect("Fail to load audio"); + self.poly_frame.polygons[i].sound_name = s; } } } fn view(&self) -> iced::Element { - let txt_nb_rev = format!("Revolution per second : {}", self.nb_sec_for_rev); + let txt_nb_rev = format!("Number of second for revolution : {}", self.nb_sec_for_rev); let mut i = 0; //Create all polygon options @@ -205,10 +207,10 @@ impl MyApp { ["Black", "Blue", "Green", "Pink", "Yellow", "Cyan"] .map(|s| s.to_string()) .to_vec(), - Some("Color".to_string()), + Some(&polygon.color_name), move |s| { Message::ChangeColor(current_index, s) } ), - pick_list(entries, Some("Sound".to_string()), move |s| { + pick_list(entries, Some(&polygon.sound_name), move |s| { Message::ChangeSound(current_index, s) }), ] diff --git a/src/polygon_draw.rs b/src/polygon_draw.rs index 1564d98..bd9f5ad 100644 --- a/src/polygon_draw.rs +++ b/src/polygon_draw.rs @@ -107,8 +107,10 @@ pub struct Polygon { pub global_teta: f32, pub points_teta: Vec, pub sound: StaticSoundData, + pub sound_name: String, pub name: String, pub color: Color, + pub color_name: String, } #[warn(dead_code)] impl Polygon { @@ -138,6 +140,8 @@ impl Polygon { global_teta: teta, points_teta: v, sound: sound, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), name: "".to_string(), color: Color::BLACK, } @@ -160,6 +164,8 @@ impl Polygon { name: "".to_string(), color: Color::BLACK, global_teta: teta, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), points_teta: vec![ 2.0 * 5.0 * PI / 30.0, 2.0 * 6.0 * PI / 30.0, @@ -175,6 +181,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 0.0, @@ -192,6 +200,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 2.0 * PI / 30.0, @@ -210,6 +220,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 0.0, @@ -229,6 +241,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 2.0 * 3.0 * PI / 42.0, @@ -247,6 +261,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 0.0, @@ -266,6 +282,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 2.0 * 6.0 * PI / 42.0, @@ -286,6 +304,8 @@ impl Polygon { sound: sound, name: "".to_string(), color: Color::BLACK, + sound_name: "./assets/tick.ogg".to_string(), + color_name: "Black".to_string(), global_teta: teta, points_teta: vec![ 0.0,