From f139bd7fe6ba2e057db607305b97c6fd2b588801 Mon Sep 17 00:00:00 2001 From: Dean Blackborough Date: Wed, 1 Jul 2026 23:17:21 +0100 Subject: [PATCH 1/5] Basic sound effects, one per scene and credits --- README.md | 1 + assets/sound-effects/explosion.wav | Bin 0 -> 22456 bytes assets/sound-effects/jump.wav | Bin 0 -> 10287 bytes assets/sound-effects/shoot.wav | Bin 0 -> 9956 bytes 4 files changed, 1 insertion(+) create mode 100644 assets/sound-effects/explosion.wav create mode 100644 assets/sound-effects/jump.wav create mode 100644 assets/sound-effects/shoot.wav diff --git a/README.md b/README.md index 962cf84..39ed928 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,7 @@ build/Debug/Prune.exe - [SDL2_image](https://github.com/libsdl-org/SDL_image) — sprite loading - [The Cherno](https://www.youtube.com/@TheCherno) — C++ game engine architecture and editor design inspiration - [Kenny](https://kenney.nl/) — free game assets for prototyping +- [jsfxr](https://sfxr.me/) - free sound effect generator for prototyping ## Licence diff --git a/assets/sound-effects/explosion.wav b/assets/sound-effects/explosion.wav new file mode 100644 index 0000000000000000000000000000000000000000..67cecb7480edfb83d190b0bcf9910f512a3e05a3 GIT binary patch literal 22456 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�SXA*LS5%`E3nZ`J`8KY8Cg=atZ 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 S36fwrjA>A#Qo^4~^Zx)7(Ne4c literal 0 HcmV?d00001 From 8baa7623a37f86df05b9e296bcf186b1828cd45d Mon Sep 17 00:00:00 2001 From: Dean Blackborough Date: Wed, 1 Jul 2026 23:34:18 +0100 Subject: [PATCH 2/5] Audio hooks for basic events --- CMakeLists.txt | 2 + src/prune/app/app.cpp | 55 +++- src/prune/app/app.hpp | 6 + src/prune/audio/audio_system.cpp | 287 ++++++++++++++++++ src/prune/audio/audio_system.hpp | 77 +++++ .../scene/artillery/artillery_behaviour.cpp | 3 + .../scene/platformer/platformer_behaviour.cpp | 2 + src/prune/scene/scene.hpp | 4 + src/prune/scene/scene_event.hpp | 47 +++ src/prune/scene/scene_state.hpp | 2 + .../simple_shooter_behaviour.cpp | 2 + src/prune/scene/world_scene.cpp | 13 + src/prune/scene/world_scene.hpp | 2 + src/prune/tooling/ui.cpp | 19 +- src/prune/tooling/ui.hpp | 4 +- 15 files changed, 522 insertions(+), 3 deletions(-) create mode 100644 src/prune/audio/audio_system.cpp create mode 100644 src/prune/audio/audio_system.hpp create mode 100644 src/prune/scene/scene_event.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 41eb905..d4b9db8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,8 @@ add_executable(Prune src/prune/core/time.cpp src/prune/core/input.cpp + src/prune/audio/audio_system.cpp + src/prune/editor/editor_command.cpp src/prune/editor/editor_actions.cpp diff --git a/src/prune/app/app.cpp b/src/prune/app/app.cpp index 540374f..a55c767 100644 --- a/src/prune/app/app.cpp +++ b/src/prune/app/app.cpp @@ -12,6 +12,7 @@ #include "backends/imgui_impl_sdlrenderer2.h" #include "prune/app/app.hpp" +#include "prune/audio/audio_system.hpp" #include "prune/core/time.hpp" #include "prune/scene/scene_factory.hpp" #include "prune/tooling/theme.hpp" @@ -25,6 +26,8 @@ namespace prune { init_sdl(); m_window = std::make_unique(config.window); + init_audio(); + m_input = std::make_unique(); m_time = std::make_unique