Skip to content

Commit e55c6c3

Browse files
committed
dont require hitting the save button for audio settings
1 parent 8b9de38 commit e55c6c3

File tree

1 file changed

+53
-31
lines changed

1 file changed

+53
-31
lines changed

noita-proxy/src/lib.rs

+53-31
Original file line numberDiff line numberDiff line change
@@ -703,35 +703,48 @@ pub struct AudioSettings {
703703
}
704704

705705
impl AudioSettings {
706-
fn show_ui(&mut self, ui: &mut Ui, main: bool) {
706+
fn show_ui(&mut self, ui: &mut Ui, main: bool) -> bool {
707+
let mut changed = false;
707708
ui.label("drop off rate of audio from others");
708-
ui.add(Slider::new(&mut self.dropoff, 0.0..=128.0));
709-
/*ui.label("how much walls effect drop off rate of audio from others");
710-
ui.add(Slider::new(&mut self.walls_strength, 0.0..=128.0));
711-
ui.label("highest durability of wall which sound can pass through");
712-
ui.add(Slider::new(&mut self.max_wall_durability, 0..=14));*/
709+
changed |= ui
710+
.add(Slider::new(&mut self.dropoff, 0.0..=128.0))
711+
.changed();
713712
ui.label("maximal range of audio");
714-
ui.add(Slider::new(&mut self.range, 0..=4096));
713+
changed |= ui.add(Slider::new(&mut self.range, 0..=4096)).changed();
715714
ui.label("global input volume");
716-
ui.add(Slider::new(&mut self.global_input_volume, 0.0..=8.0));
715+
changed |= ui
716+
.add(Slider::new(&mut self.global_input_volume, 0.0..=8.0))
717+
.changed();
717718
ui.label("global output volume");
718-
ui.add(Slider::new(&mut self.global_output_volume, 0.0..=8.0));
719-
ui.checkbox(&mut self.loopback, "loopback audio");
720-
ui.checkbox(&mut self.global, "have voice always be played");
721-
ui.checkbox(
722-
&mut self.push_to_talk,
723-
"push to talk, keybinds in noita, T by default",
724-
);
725-
ui.checkbox(
726-
&mut self.player_position,
727-
"use player position rather then camera position",
728-
);
729-
ui.checkbox(&mut self.mute_in, "mute input");
730-
ui.checkbox(&mut self.mute_in_while_polied, "mute input while polied");
731-
ui.checkbox(&mut self.mute_in_while_dead, "mute input while dead");
732-
ui.checkbox(&mut self.mute_out, "mute output");
719+
changed |= ui
720+
.add(Slider::new(&mut self.global_output_volume, 0.0..=8.0))
721+
.changed();
722+
changed |= ui.checkbox(&mut self.loopback, "loopback audio").changed();
723+
changed |= ui
724+
.checkbox(&mut self.global, "have voice always be played")
725+
.changed();
726+
changed |= ui
727+
.checkbox(
728+
&mut self.push_to_talk,
729+
"push to talk, keybinds in noita, T by default",
730+
)
731+
.changed();
732+
changed |= ui
733+
.checkbox(
734+
&mut self.player_position,
735+
"use player position rather than camera position",
736+
)
737+
.changed();
738+
changed |= ui.checkbox(&mut self.mute_in, "mute input").changed();
739+
changed |= ui
740+
.checkbox(&mut self.mute_in_while_polied, "mute input while polied")
741+
.changed();
742+
changed |= ui
743+
.checkbox(&mut self.mute_in_while_dead, "mute input while dead")
744+
.changed();
745+
changed |= ui.checkbox(&mut self.mute_out, "mute output").changed();
733746
if main {
734-
ui.checkbox(&mut self.disabled, "disabled");
747+
changed |= ui.checkbox(&mut self.disabled, "disabled").changed();
735748
if self.input_devices.is_empty() {
736749
#[cfg(target_os = "linux")]
737750
let host = cpal::available_hosts()
@@ -769,6 +782,7 @@ impl AudioSettings {
769782
.clicked()
770783
{
771784
self.input_device = Some(device.clone());
785+
changed = true;
772786
}
773787
}
774788
});
@@ -785,13 +799,16 @@ impl AudioSettings {
785799
.clicked()
786800
{
787801
self.output_device = Some(device.clone());
802+
changed = true;
788803
}
789804
}
790805
});
791806
}
792807
if ui.button("default").clicked() {
793808
*self = Default::default();
809+
changed = true;
794810
}
811+
changed
795812
}
796813
}
797814

@@ -1259,7 +1276,7 @@ impl App {
12591276
self.show_audio_settings = !self.show_audio_settings
12601277
}
12611278
if self.show_audio_settings {
1262-
self.audio.show_ui(ui, true)
1279+
self.audio.show_ui(ui, true);
12631280
}
12641281
if self.running_on_steamdeck && ui.button("Close Proxy").clicked() {
12651282
exit(0)
@@ -1748,7 +1765,7 @@ impl App {
17481765
}
17491766
},
17501767
ConnectedMenu::VoIP => {
1751-
self.audio.show_ui(ui, false);
1768+
let mut save = self.audio.show_ui(ui, false);
17521769
for peer in netman.peer.iter_peer_ids() {
17531770
if netman.peer.my_id() != peer {
17541771
ui.label(format!(
@@ -1760,13 +1777,18 @@ impl App {
17601777
.get(&peer)
17611778
.unwrap_or(&peer.to_string())
17621779
));
1763-
ui.add(Slider::new(
1764-
self.audio.volume.entry(peer).or_insert(1.0),
1765-
0.0..=8.0,
1766-
));
1780+
if ui
1781+
.add(Slider::new(
1782+
self.audio.volume.entry(peer).or_insert(1.0),
1783+
0.0..=8.0,
1784+
))
1785+
.changed()
1786+
{
1787+
save = true;
1788+
}
17671789
}
17681790
}
1769-
if ui.button("save").clicked() {
1791+
if save {
17701792
*netman.audio.lock().unwrap() = self.audio.clone()
17711793
}
17721794
}

0 commit comments

Comments
 (0)