color and sound display now

This commit is contained in:
2025-06-22 23:28:24 +02:00
parent 71d1311f9d
commit 5a22159ace
2 changed files with 31 additions and 9 deletions

View File

@@ -38,7 +38,7 @@ enum Message {
struct MyApp { struct MyApp {
poly_frame: PolygonFrame, poly_frame: PolygonFrame,
time_last_frame: Instant, time_last_frame: Instant,
nb_sec_for_rev: u32, nb_sec_for_rev: f32,
audio_manager: AudioManager, audio_manager: AudioManager,
default_sound: StaticSoundData, default_sound: StaticSoundData,
} }
@@ -50,7 +50,7 @@ impl MyApp {
let sound_data = StaticSoundData::from_file("assets/tick.ogg").expect("Fail to load audio"); let sound_data = StaticSoundData::from_file("assets/tick.ogg").expect("Fail to load audio");
( (
Self { Self {
nb_sec_for_rev: 4, nb_sec_for_rev: 4.0,
time_last_frame: Instant::now(), time_last_frame: Instant::now(),
audio_manager: manager, audio_manager: manager,
default_sound: sound_data.clone(), default_sound: sound_data.clone(),
@@ -67,10 +67,10 @@ impl MyApp {
} }
fn update(&mut self, message: Message) { fn update(&mut self, message: Message) {
match message { match message {
Message::ButtonPressedIncrement => self.nb_sec_for_rev += 1, Message::ButtonPressedIncrement => self.nb_sec_for_rev += 0.5,
Message::ButtonPressedDecrement => { Message::ButtonPressedDecrement => {
if self.nb_sec_for_rev > 1 { if self.nb_sec_for_rev > 0.5 {
self.nb_sec_for_rev -= 1; self.nb_sec_for_rev -= 0.5;
} }
} }
Message::AddPolygon(s) => { Message::AddPolygon(s) => {
@@ -168,16 +168,18 @@ impl MyApp {
_ => c = Color::BLACK, _ => c = Color::BLACK,
} }
self.poly_frame.polygons[i].color = c; self.poly_frame.polygons[i].color = c;
self.poly_frame.polygons[i].color_name = s;
} }
Message::ChangeSound(i, s) => { Message::ChangeSound(i, s) => {
self.poly_frame.polygons[i].sound = 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<Message> { fn view(&self) -> iced::Element<Message> {
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; let mut i = 0;
//Create all polygon options //Create all polygon options
@@ -205,10 +207,10 @@ impl MyApp {
["Black", "Blue", "Green", "Pink", "Yellow", "Cyan"] ["Black", "Blue", "Green", "Pink", "Yellow", "Cyan"]
.map(|s| s.to_string()) .map(|s| s.to_string())
.to_vec(), .to_vec(),
Some("Color".to_string()), Some(&polygon.color_name),
move |s| { Message::ChangeColor(current_index, s) } 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) Message::ChangeSound(current_index, s)
}), }),
] ]

View File

@@ -107,8 +107,10 @@ pub struct Polygon {
pub global_teta: f32, pub global_teta: f32,
pub points_teta: Vec<f32>, pub points_teta: Vec<f32>,
pub sound: StaticSoundData, pub sound: StaticSoundData,
pub sound_name: String,
pub name: String, pub name: String,
pub color: Color, pub color: Color,
pub color_name: String,
} }
#[warn(dead_code)] #[warn(dead_code)]
impl Polygon { impl Polygon {
@@ -138,6 +140,8 @@ impl Polygon {
global_teta: teta, global_teta: teta,
points_teta: v, points_teta: v,
sound: sound, sound: sound,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
} }
@@ -160,6 +164,8 @@ impl Polygon {
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
global_teta: teta, global_teta: teta,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
points_teta: vec![ points_teta: vec![
2.0 * 5.0 * PI / 30.0, 2.0 * 5.0 * PI / 30.0,
2.0 * 6.0 * PI / 30.0, 2.0 * 6.0 * PI / 30.0,
@@ -175,6 +181,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
0.0, 0.0,
@@ -192,6 +200,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
2.0 * PI / 30.0, 2.0 * PI / 30.0,
@@ -210,6 +220,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
0.0, 0.0,
@@ -229,6 +241,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
2.0 * 3.0 * PI / 42.0, 2.0 * 3.0 * PI / 42.0,
@@ -247,6 +261,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
0.0, 0.0,
@@ -266,6 +282,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
2.0 * 6.0 * PI / 42.0, 2.0 * 6.0 * PI / 42.0,
@@ -286,6 +304,8 @@ impl Polygon {
sound: sound, sound: sound,
name: "".to_string(), name: "".to_string(),
color: Color::BLACK, color: Color::BLACK,
sound_name: "./assets/tick.ogg".to_string(),
color_name: "Black".to_string(),
global_teta: teta, global_teta: teta,
points_teta: vec![ points_teta: vec![
0.0, 0.0,