use bevy::prelude::*; use std::env; #[derive(Resource)] pub struct Settings { pub mute_sfx: bool, pub mute_music: bool, pub volume_sfx: u8, pub volume_music: u8, pub font_size_hud: f32, pub font_size_conversations: f32, pub hud_active: bool, pub key_togglehud: KeyCode, pub key_exit: KeyCode, pub key_restart: KeyCode, pub key_fullscreen: KeyCode, pub key_forward: KeyCode, pub key_back: KeyCode, pub key_left: KeyCode, pub key_right: KeyCode, pub key_up: KeyCode, pub key_down: KeyCode, pub key_run: KeyCode, pub key_stop: KeyCode, pub key_interact: KeyCode, pub key_reply1: KeyCode, pub key_reply2: KeyCode, pub key_reply3: KeyCode, pub key_reply4: KeyCode, pub key_reply5: KeyCode, pub key_reply6: KeyCode, pub key_reply7: KeyCode, pub key_reply8: KeyCode, pub key_reply9: KeyCode, pub key_reply10: KeyCode, } impl Default for Settings { fn default() -> Self { let default_mute_sfx; let default_mute_music; if let Ok(_) = env::var("CARGO") { // Mute audio by default when run through `cargo` default_mute_sfx = cfg!(debug_assertions); default_mute_music = cfg!(debug_assertions); } else { default_mute_sfx = false; default_mute_music = false; } Settings { mute_sfx: default_mute_sfx, mute_music: default_mute_music, volume_sfx: 100, volume_music: 100, font_size_hud: 32.0, font_size_conversations: 32.0, hud_active: false, key_togglehud: KeyCode::Tab, key_exit: KeyCode::Escape, key_restart: KeyCode::F12, key_fullscreen: KeyCode::F11, key_forward: KeyCode::KeyW, key_back: KeyCode::KeyS, key_left: KeyCode::KeyA, key_right: KeyCode::KeyD, key_up: KeyCode::ShiftLeft, key_down: KeyCode::ControlLeft, key_run: KeyCode::KeyR, key_stop: KeyCode::Space, key_interact: KeyCode::KeyE, key_reply1: KeyCode::Digit1, key_reply2: KeyCode::Digit2, key_reply3: KeyCode::Digit3, key_reply4: KeyCode::Digit4, key_reply5: KeyCode::Digit5, key_reply6: KeyCode::Digit6, key_reply7: KeyCode::Digit7, key_reply8: KeyCode::Digit8, key_reply9: KeyCode::Digit9, key_reply10: KeyCode::Digit0, } } } impl Settings { pub fn reset(&mut self) { println!("Resetting settings!"); *self = Self::default(); } pub fn get_reply_keys(&self) -> [KeyCode; 10] { return [ self.key_reply1, self.key_reply2, self.key_reply3, self.key_reply4, self.key_reply5, self.key_reply6, self.key_reply7, self.key_reply8, self.key_reply9, self.key_reply10, ]; } }