From e7364b43447fec3fe13467747d880d68e1539597 Mon Sep 17 00:00:00 2001 From: "Elijah C. Voigt" Date: Sun, 12 May 2024 20:20:15 -0700 Subject: [PATCH] Add capture SFX I don't love it, so it's easy to disable. But it's there if we want to keep it. --- assets/martian.tweak.toml | 1 + src/audio.rs | 31 ++++++++++++++++++------------- src/display3d.rs | 1 + src/game.rs | 3 ++- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/assets/martian.tweak.toml b/assets/martian.tweak.toml index 68a2a14..7b3032b 100644 --- a/assets/martian.tweak.toml +++ b/assets/martian.tweak.toml @@ -191,6 +191,7 @@ pick_up = "/SFX/3D/3DPickUpPiece" put_down = "/SFX/3D/3DPutDownPiece" idle = "/SFX/3D/3DPickup-Idle-PutdownWhirr" invalid = "/sfx/3D/3DInvalidMove" +captured = "/sfx/3d/PieceCaptured" #################### # Color Settings diff --git a/src/audio.rs b/src/audio.rs index f3950e4..e5771ee 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -46,6 +46,22 @@ pub enum AudioEvent { Idle, StopIdle, Invalid, + Captured, +} + +impl AudioEvent { + fn as_str(&self) -> &str { + match self { + AudioEvent::MainMusic | AudioEvent::_StopMainMusic => "audio_music_main", + AudioEvent::MenuHover => "audio_menu_hover", + AudioEvent::MenuSelect => "audio_menu_select", + AudioEvent::PickUp => "audio_display3d_pick_up", + AudioEvent::PutDown => "audio_display3d_put_down", + AudioEvent::Idle | AudioEvent::StopIdle => "audio_display3d_idle", + AudioEvent::Captured => "audio_display3d_captured", + AudioEvent::Invalid => "audio_display3d_invalid", + } + } } #[derive(Resource, Debug)] @@ -80,19 +96,8 @@ fn audio_trigger( .expect("Load tweaks"); let state = display_state.get(); events.read().for_each(|event| { - let aud = match event { - AudioEvent::MainMusic | AudioEvent::_StopMainMusic => { - tweak.get::("audio_music_main").unwrap() - } - AudioEvent::MenuHover => tweak.get::("audio_menu_hover").unwrap(), - AudioEvent::MenuSelect => tweak.get::("audio_menu_select").unwrap(), - AudioEvent::PickUp => tweak.get::("audio_display3d_pick_up").unwrap(), - AudioEvent::PutDown => tweak.get::("audio_display3d_put_down").unwrap(), - AudioEvent::Idle | AudioEvent::StopIdle => { - tweak.get::("audio_display3d_idle").unwrap() - } - AudioEvent::Invalid => tweak.get::("audio_display3d_invalid").unwrap(), - }; + let aud = tweak.get::(event.as_str()).unwrap_or("".into()); + // There is an event, play an audio if !aud.is_empty() { let event_str = format!("event:{}", aud); diff --git a/src/display3d.rs b/src/display3d.rs index 060cc49..7bed2c3 100644 --- a/src/display3d.rs +++ b/src/display3d.rs @@ -1180,6 +1180,7 @@ fn capture_piece_end( mut events: RemovedComponents, mut query: Query<(Entity, &Dissolvable, &Side, &mut Transform), With>, mut commands: Commands, + score: Res, ) { events.read().for_each(|e| { diff --git a/src/game.rs b/src/game.rs index e541735..d47ece6 100644 --- a/src/game.rs +++ b/src/game.rs @@ -1055,6 +1055,7 @@ pub(crate) fn update_board( .entity(entity) .remove::() .insert(BeingCaptured); + audio_events.send(AudioEvent::Captured); }, MoveType::Promotion(..) => { commands @@ -1246,7 +1247,7 @@ fn clear_endgame(query: Query>, mut commands: Commands) { /// * All captured pieces have their captured side preserved /// We can iterate over these pieces and calculate the score on the fly fn manage_score( - query: Query<(&Side, &Piece), (With, With)>, + query: Query<(&Side, &Piece), (Or<(With, With)>, With)>, mut debug_info: ResMut, mut score: ResMut, ) {