use godot::{classes::AudioStream, prelude::*};

#[derive(GodotClass)]
#[class(base=Resource)]
pub struct SoundBank {
    #[export]
    pub strain_loop: Option<Gd<AudioStream>>,
    #[export]
    pub effort_exhale: Option<Gd<AudioStream>>,
    #[export]
    pub win_stinger: Option<Gd<AudioStream>>,
    #[export]
    pub fail_stinger: Option<Gd<AudioStream>>,
    #[export]
    pub heartbeat_loop: Option<Gd<AudioStream>>,
    #[export]
    pub hazard_spawn: Option<Gd<AudioStream>>,
    #[export]
    pub hazard_resolve: Option<Gd<AudioStream>>,
    #[export]
    pub camera_trauma: Option<Gd<AudioStream>>,
    #[export]
    pub phone_ring: Option<Gd<AudioStream>>,
    #[export]
    pub gym_bro: Option<Gd<AudioStream>>,
    #[export]
    pub manager_get_out: Option<Gd<AudioStream>>,

    #[export]
    pub menu_music: Option<Gd<AudioStream>>,
    #[export]
    pub game_music: Option<Gd<AudioStream>>,

    base: Base<Resource>,
}

#[godot_api]
impl IResource for SoundBank {
    fn init(base: Base<Resource>) -> Self {
        Self {
            strain_loop: None,
            effort_exhale: None,
            win_stinger: None,
            fail_stinger: None,
            heartbeat_loop: None,
            hazard_spawn: None,
            hazard_resolve: None,
            camera_trauma: None,
            phone_ring: None,
            gym_bro: None,
            manager_get_out: None,
            menu_music: None,
            game_music: None,
            base,
        }
    }
}
