From a69fc7d2b0b3e5094842091b5f165bc77f532e51 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Sun, 1 Jun 2025 18:22:48 +0200 Subject: [PATCH] Sound effects --- assets/sounds/blip.wav | Bin 21190 -> 0 bytes assets/sounds/hit.wav | Bin 0 -> 14492 bytes assets/sounds/pickup.wav | Bin 0 -> 10642 bytes src/assets.cpp | 14 +++++++++++++- src/assets.hpp | 2 ++ src/audio.cpp | 3 ++- src/level.hpp | 36 ++++++++++++++++++++++++++++++++---- 7 files changed, 49 insertions(+), 6 deletions(-) delete mode 100644 assets/sounds/blip.wav create mode 100644 assets/sounds/hit.wav create mode 100644 assets/sounds/pickup.wav diff --git a/assets/sounds/blip.wav b/assets/sounds/blip.wav deleted file mode 100644 index b7827ed9e2aedc5c07cd571dcf77eb81ed6a2036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21190 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 Cat6mHWYq5ZqhMRU&4(jf8XYf3` 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 p_vC~4E(YY+T*yR=Tee%e6a{{f`)s67Ax literal 0 HcmV?d00001 diff --git a/src/assets.cpp b/src/assets.cpp index d55f6a6..8acc93e 100644 --- a/src/assets.cpp +++ b/src/assets.cpp @@ -25,6 +25,14 @@ static constexpr uint8_t BACKGROUND_MUSIC_DATA[] = { #embed "../assets/sounds/JamaicanSunrise.wav" }; +static constexpr uint8_t PICKUP_SOUND_DATA[] = { +#embed "../assets/sounds/pickup.wav" +}; + +static constexpr uint8_t HIT_SOUND_DATA[] = { +#embed "../assets/sounds/hit.wav" +}; + static constexpr uint8_t DEFAULT_FONT_DATA[] = { #embed "../assets/fonts/OpenTTD-Sans.ttf" }; @@ -96,7 +104,11 @@ AssetModule::AssetModule(flecs::world& world) .basket = Texture{.sdl_texture = basket, .texture_atlas_layout = basket_layout}}); auto background_music = load_audio(BACKGROUND_MUSIC_DATA, sizeof(BACKGROUND_MUSIC_DATA)); - world.set(AudioAssets{.background_music = background_music}); + auto pickup_sound = load_audio(PICKUP_SOUND_DATA, sizeof(PICKUP_SOUND_DATA)); + auto hit_sound = load_audio(HIT_SOUND_DATA, sizeof(HIT_SOUND_DATA)); + world.set(AudioAssets{.background_music = background_music, + .pickup_sound = pickup_sound, + .hit_sound = hit_sound}); auto font = load_font(DEFAULT_FONT_DATA, sizeof(DEFAULT_FONT_DATA)); world.set(FontAssets{.default_font = font}); diff --git a/src/assets.hpp b/src/assets.hpp index 99a081c..de61b00 100644 --- a/src/assets.hpp +++ b/src/assets.hpp @@ -31,6 +31,8 @@ struct TextureAssets struct AudioAssets { AudioAsset background_music; + AudioAsset pickup_sound; + AudioAsset hit_sound; }; struct FontAsset diff --git a/src/audio.cpp b/src/audio.cpp index 2e1a0c0..cf6b22e 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -7,9 +7,10 @@ AudioModule::AudioModule(flecs::world& world) auto* music_stream = SDL_OpenAudioDeviceStream( SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &audio_assets->background_music.spec, NULL, NULL); auto* sound_stream = SDL_OpenAudioDeviceStream( - SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &audio_assets->background_music.spec, NULL, NULL); + SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &audio_assets->pickup_sound.spec, NULL, NULL); SDL_ResumeAudioStreamDevice(music_stream); + SDL_ResumeAudioStreamDevice(sound_stream); world.set( AudioStreams{.music_stream = music_stream, .sound_stream = sound_stream}); diff --git a/src/level.hpp b/src/level.hpp index 0f3daf5..9926117 100644 --- a/src/level.hpp +++ b/src/level.hpp @@ -122,26 +122,54 @@ struct LevelModule // e.destruct(); // }); - world.system("CollectFruit") + world.system("CollectFruit") .term_at(0) .singleton() + .term_at(1) + .singleton() + .term_at(2) + .singleton() .each( - [](flecs::entity e, Game& game, Position& pos, Fruit, Collided) + [](flecs::entity e, + Game& game, + AudioStreams& audio_streams, + AudioAssets& audio_assets, + Position& pos, + Fruit, + Collided) { game.score += 10; pos.x += 1000; // e.destruct(); + + SDL_PutAudioStreamData(audio_streams.sound_stream, + audio_assets.pickup_sound.buffer, + audio_assets.pickup_sound.buffer_length); }); - world.system("CollectSpider") + world.system("CollectSpider") .term_at(0) .singleton() + .term_at(1) + .singleton() + .term_at(2) + .singleton() .each( - [](flecs::entity e, Game& game, Position& pos, Spider, Collided) + [](flecs::entity e, + Game& game, + AudioStreams& audio_streams, + AudioAssets& audio_assets, + Position& pos, + Spider, + Collided) { game.score -= 50; pos.x += 1000; // e.destruct(); + + SDL_PutAudioStreamData(audio_streams.sound_stream, + audio_assets.hit_sound.buffer, + audio_assets.hit_sound.buffer_length); }); world.system("MoveBasket")