Skip to main content

rgc_chart/models/quaver/
sound.rs

1use serde::{Deserialize, Serialize};
2use crate::utils::serde::trim_float;
3
4#[derive(Debug, Deserialize, Serialize)]
5pub struct AudioSample {
6    #[serde(rename = "Path")]
7    pub path: String,
8}
9
10#[derive(Debug, Deserialize, Serialize)]
11pub struct SoundEffect {
12    #[serde(rename = "StartTime", serialize_with = "trim_float")]
13    pub start_time: f32,
14    
15    #[serde(rename = "Sample")]
16    pub sample: usize,
17    
18    #[serde(rename = "Volume", skip_serializing_if = "is_full_volume")]
19    pub volume: u8,
20}
21
22fn is_full_volume(volume: &u8) -> bool {
23    *volume >= 100
24}
25
26#[derive(Debug, Deserialize, Serialize)]
27pub struct KeySound {
28    #[serde(rename = "Sample")]
29    pub sample: usize,
30    
31    #[serde(rename = "Volume", skip_serializing_if = "is_full_volume")]
32    pub volume: u8,
33}