1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
7pub struct AppConfig {
8 pub audio: AudioConfig,
9 pub visual: VisualConfig,
10 pub input: InputConfig,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct AudioConfig {
16 pub sample_rate: u32,
18 pub fft_size: usize,
20 pub buffer_size: usize,
22}
23
24impl Default for AudioConfig {
25 fn default() -> Self {
26 Self {
27 sample_rate: 44100,
28 fft_size: 2048,
29 buffer_size: 1024,
30 }
31 }
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct VisualConfig {
37 pub width: u32,
39 pub height: u32,
41 pub target_fps: u32,
43 pub vsync: bool,
45}
46
47impl Default for VisualConfig {
48 fn default() -> Self {
49 Self {
50 width: 1920,
51 height: 1080,
52 target_fps: 60,
53 vsync: true,
54 }
55 }
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct InputConfig {
61 pub keyboard_enabled: bool,
63 pub gamepad_enabled: bool,
65 pub midi_enabled: bool,
67}
68
69impl Default for InputConfig {
70 fn default() -> Self {
71 Self {
72 keyboard_enabled: true,
73 gamepad_enabled: true,
74 midi_enabled: false,
75 }
76 }
77}