group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
SfxTypes.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <SDL3/SDL_audio.h>
7
8#include <cstddef>
9#include <cstdint>
10#include <optional>
11#include <string_view>
12#include <vector>
13
15enum class SfxId : uint8_t
16{
17 // Weapons
29
30 // Impacts / hitmarkers
37
38 // Player feedback
43
44 // Charge rifle
47
48 // Energy beam
50
51 // Healing / pickups
56
57 // Movement / equipment placeholders. FootstepLight/Heavy still back simple impact fallbacks.
102
103 // Menu UI feedback. Files live flat under assets/sounds/MenuSFX/.
117
119};
120
137
150
153{
154 std::vector<uint8_t> pcmData;
155 std::vector<float> samples;
156 SDL_AudioSpec spec{};
157 float durationSeconds = 0.0f;
158 std::size_t frameCount = 0;
160 float defaultGain = 1.0f;
161 float minCooldown = 0.05f;
162 bool loaded = false;
163};
164
165inline const char* sfxIdName(SfxId id) noexcept
166{
167 switch (id) {
168 case SfxId::RifleFire:
169 return "RifleFire";
171 return "RocketFire";
173 return "RailGunFire";
175 return "EnergyGunFire";
177 return "ShotgunFire";
179 return "RifleReload";
181 return "RocketReload";
183 return "RailGunReload";
185 return "EnergyReload";
187 return "ShotgunReload";
189 return "RailGunCharge";
190 case SfxId::FleshHit:
191 return "FleshHit";
192 case SfxId::Headshot:
193 return "Headshot";
194 case SfxId::Explosion:
195 return "Explosion";
197 return "RocketExplosion";
199 return "MolotovExplosion";
201 return "HEExplosion";
203 return "DamageTaken";
205 return "ArmorBreak";
206 case SfxId::Death:
207 return "Death";
209 return "KillConfirm";
211 return "ChargeRifleLoad";
213 return "ChargeRifleShoot";
215 return "EnergyBeamLoop";
216 case SfxId::Healing:
217 return "Healing";
219 return "PowerupPickup";
221 return "DamagePowerupPickup";
223 return "OvershieldPowerupPickup";
225 return "FootstepLight";
227 return "FootstepHeavy";
229 return "ConcreteFootstep01";
231 return "ConcreteFootstep02";
233 return "ConcreteFootstep03";
235 return "ConcreteFootstep04";
237 return "ConcreteFootstep05";
239 return "ConcreteFootstep06";
241 return "ConcreteFootstep07";
243 return "ConcreteFootstep08";
245 return "ConcreteFootstep09";
247 return "ConcreteFootstep10";
249 return "ConcreteFootstep11";
251 return "ConcreteFootstep12";
253 return "ConcreteFootstep13";
255 return "ConcreteFootstep14";
257 return "ConcreteFootstep15";
259 return "ConcreteFootstep16";
261 return "ConcreteFootstep17";
263 return "DirtFootstep01";
265 return "DirtFootstep02";
267 return "DirtFootstep03";
269 return "DirtFootstep04";
271 return "DirtFootstep05";
273 return "DirtFootstep06";
275 return "DirtFootstep07";
277 return "DirtFootstep08";
279 return "DirtFootstep09";
281 return "DirtFootstep10";
283 return "DirtFootstep11";
285 return "DirtFootstep12";
287 return "DirtFootstep13";
289 return "DirtFootstep14";
290 case SfxId::Slide:
291 return "Slide";
292 case SfxId::DashSfx:
293 return "DashSfx";
295 return "GravityFlipSfx";
297 return "GrappleSfx";
298 case SfxId::RecallSfx:
299 return "RecallSfx";
301 return "GrenadeThrow";
303 return "VoiceStart";
304 case SfxId::VoiceStop:
305 return "VoiceStop";
306 case SfxId::MenuMusic:
307 return "MenuMusic";
308 case SfxId::GameMusic:
309 return "GameMusic";
310 case SfxId::UiHover01:
311 return "UiHover01";
312 case SfxId::UiHover02:
313 return "UiHover02";
315 return "UiConfirm01";
317 return "UiConfirm02";
318 case SfxId::UiBack01:
319 return "UiBack01";
321 return "UiToggle01";
323 return "UiSliderStep01";
324 case SfxId::UiModal01:
325 return "UiModal01";
327 return "UiSuccess01";
328 case SfxId::UiError01:
329 return "UiError01";
330 case SfxId::UiError02:
331 return "UiError02";
333 return "UiDisabled01";
335 return "UiDanger01";
337 return "GameMusicLoop";
338 default:
339 return "Unknown";
340 }
341}
342
343inline std::optional<SfxId> sfxIdFromName(std::string_view name) noexcept
344{
345 for (std::uint8_t i = 0; i < static_cast<std::uint8_t>(SfxId::_Count); ++i) {
346 const auto id = static_cast<SfxId>(i);
347 if (name == sfxIdName(id))
348 return id;
349 }
350 return std::nullopt;
351}
352
353inline const char* sfxCategoryName(SfxCategory category) noexcept
354{
355 switch (category) {
357 return "Weapons";
359 return "Impacts";
361 return "Player";
363 return "Footsteps";
365 return "Voice";
367 return "Music";
368 case SfxCategory::UI:
369 return "UI";
370 default:
371 return "Unknown";
372 }
373}
SfxId
Identifies a loaded sound clip.
Definition SfxTypes.hpp:16
@ ConcreteFootstep17
Definition SfxTypes.hpp:76
@ RailGunCharge
Weapons/Railgun/Railgun_Charge.wav.
Definition SfxTypes.hpp:28
@ Headshot
Voicy_Headshot Rapid SFX.mp3.
Definition SfxTypes.hpp:32
@ DirtFootstep09
Definition SfxTypes.hpp:85
@ ConcreteFootstep16
Definition SfxTypes.hpp:75
@ RocketReload
Weapons/Rocket/Rocket_Reloading.wav.
Definition SfxTypes.hpp:24
@ RocketExplosion
Weapons/Rocket/Explosion_Rocket.wav.
Definition SfxTypes.hpp:34
@ ShotgunFire
Weapons/Shotgun/Shotgun_Shooting.wav.
Definition SfxTypes.hpp:22
@ DirtFootstep11
Definition SfxTypes.hpp:87
@ DirtFootstep13
Definition SfxTypes.hpp:89
@ UiSliderStep01
Definition SfxTypes.hpp:110
@ GrappleSfx
Synth: grapple twang/launch.
Definition SfxTypes.hpp:94
@ DamageTaken
damage.mp3
Definition SfxTypes.hpp:39
@ RifleFire
Weapons/Rifle/Rifle_Shooting.wav.
Definition SfxTypes.hpp:18
@ ChargeRifleLoad
Legacy charge cue alias.
Definition SfxTypes.hpp:45
@ DirtFootstep07
Definition SfxTypes.hpp:83
@ ConcreteFootstep04
Definition SfxTypes.hpp:63
@ RailGunReload
Weapons/Railgun/Railgun_Reloading.wav.
Definition SfxTypes.hpp:25
@ RifleReload
Weapons/Rifle/Rifle_Reloading.wav.
Definition SfxTypes.hpp:23
@ ConcreteFootstep07
Definition SfxTypes.hpp:66
@ UiConfirm01
Definition SfxTypes.hpp:106
@ Death
Death.wav.
Definition SfxTypes.hpp:41
@ Slide
sliding.mp3 — looped while in Slide mode.
Definition SfxTypes.hpp:91
@ RecallSfx
Synth: recall rewind.
Definition SfxTypes.hpp:95
@ DamagePowerupPickup
damage_powerup.mp3
Definition SfxTypes.hpp:54
@ UiError02
Definition SfxTypes.hpp:114
@ GrenadeThrow
Definition SfxTypes.hpp:96
@ ConcreteFootstep12
Definition SfxTypes.hpp:71
@ VoiceStart
Definition SfxTypes.hpp:97
@ DirtFootstep06
Definition SfxTypes.hpp:82
@ EnergyGunFire
Weapons/EnergyWeapon/Energy_Shooting_Start.wav.
Definition SfxTypes.hpp:21
@ VoiceStop
Definition SfxTypes.hpp:98
@ UiSuccess01
Definition SfxTypes.hpp:112
@ Healing
Health.wav.
Definition SfxTypes.hpp:52
@ DirtFootstep01
Definition SfxTypes.hpp:77
@ ConcreteFootstep08
Definition SfxTypes.hpp:67
@ Explosion
Generic explosion fallback.
Definition SfxTypes.hpp:33
@ EnergyReload
Weapons/EnergyWeapon/Energy_Reloading.wav.
Definition SfxTypes.hpp:26
@ RocketFire
Weapons/Rocket/Rocket_Shooting.wav.
Definition SfxTypes.hpp:19
@ ConcreteFootstep11
Definition SfxTypes.hpp:70
@ HEExplosion
Weapons/Grenade/Explosion_HE.wav.
Definition SfxTypes.hpp:36
@ ConcreteFootstep09
Definition SfxTypes.hpp:68
@ FootstepLight
Definition SfxTypes.hpp:58
@ UiError01
Definition SfxTypes.hpp:113
@ DirtFootstep12
Definition SfxTypes.hpp:88
@ KillConfirm
Voicy_Pilot Killed Indicator SFX.mp3.
Definition SfxTypes.hpp:42
@ UiModal01
Definition SfxTypes.hpp:111
@ EnergyBeamLoop
Weapons/EnergyWeapon/Energy_Shooting.wav (play while beam active).
Definition SfxTypes.hpp:49
@ PowerupPickup
Generic powerup pickup fallback.
Definition SfxTypes.hpp:53
@ DashSfx
Synth: dash whoosh.
Definition SfxTypes.hpp:92
@ GameMusic
Music/Gamesong2.wav.
Definition SfxTypes.hpp:100
@ DirtFootstep05
Definition SfxTypes.hpp:81
@ UiBack01
Definition SfxTypes.hpp:108
@ UiHover01
Definition SfxTypes.hpp:104
@ ConcreteFootstep15
Definition SfxTypes.hpp:74
@ OvershieldPowerupPickup
overshield_powerup.mp3
Definition SfxTypes.hpp:55
@ ConcreteFootstep06
Definition SfxTypes.hpp:65
@ DirtFootstep02
Definition SfxTypes.hpp:78
@ FleshHit
Voicy_Flesh Bullet Impact SFX.mp3.
Definition SfxTypes.hpp:31
@ GameMusicLoop
Music/Gamesong2_Main2.wav.
Definition SfxTypes.hpp:101
@ ConcreteFootstep05
Definition SfxTypes.hpp:64
@ ConcreteFootstep13
Definition SfxTypes.hpp:72
@ ChargeRifleShoot
charge-rifle-shoot.wav (play on release)
Definition SfxTypes.hpp:46
@ DirtFootstep14
Definition SfxTypes.hpp:90
@ DirtFootstep08
Definition SfxTypes.hpp:84
@ ShotgunReload
Weapons/Shotgun/Shotgun_Reloading.wav.
Definition SfxTypes.hpp:27
@ DirtFootstep10
Definition SfxTypes.hpp:86
@ UiDisabled01
Definition SfxTypes.hpp:115
@ ConcreteFootstep10
Definition SfxTypes.hpp:69
@ ConcreteFootstep03
Definition SfxTypes.hpp:62
@ ConcreteFootstep02
Definition SfxTypes.hpp:61
@ ConcreteFootstep14
Definition SfxTypes.hpp:73
@ DirtFootstep03
Definition SfxTypes.hpp:79
@ _Count
Definition SfxTypes.hpp:118
@ MolotovExplosion
Weapons/Grenade/Explosion_Molotov.wav.
Definition SfxTypes.hpp:35
@ UiToggle01
Definition SfxTypes.hpp:109
@ ConcreteFootstep01
Definition SfxTypes.hpp:60
@ RailGunFire
Weapons/Railgun/Railgun_Shooting.wav.
Definition SfxTypes.hpp:20
@ FootstepHeavy
Definition SfxTypes.hpp:59
@ MenuMusic
Music/Gamesong1.wav.
Definition SfxTypes.hpp:99
@ UiConfirm02
Definition SfxTypes.hpp:107
@ GravityFlipSfx
Synth: gravity flip warble.
Definition SfxTypes.hpp:93
@ ArmorBreak
Voicy_Fortnite Shield Break.mp3.
Definition SfxTypes.hpp:40
@ UiDanger01
Definition SfxTypes.hpp:116
@ DirtFootstep04
Definition SfxTypes.hpp:80
@ UiHover02
Definition SfxTypes.hpp:105
std::optional< SfxId > sfxIdFromName(std::string_view name) noexcept
Definition SfxTypes.hpp:343
SfxCategory
Sound category for per-category volume control.
Definition SfxTypes.hpp:140
@ Music
Definition SfxTypes.hpp:146
@ Player
Definition SfxTypes.hpp:143
@ UI
Definition SfxTypes.hpp:147
@ Impacts
Definition SfxTypes.hpp:142
@ Weapons
Definition SfxTypes.hpp:141
@ Footsteps
Definition SfxTypes.hpp:144
@ Voice
Definition SfxTypes.hpp:145
const char * sfxCategoryName(SfxCategory category) noexcept
Definition SfxTypes.hpp:353
UiSoundAction
Semantic menu/UI sound actions.
Definition SfxTypes.hpp:123
@ ModalOpen
Definition SfxTypes.hpp:129
@ Back
Definition SfxTypes.hpp:126
@ Success
Definition SfxTypes.hpp:131
@ Confirm
Definition SfxTypes.hpp:125
@ Error
Definition SfxTypes.hpp:132
@ Danger
Definition SfxTypes.hpp:134
@ Toggle
Definition SfxTypes.hpp:127
@ Disabled
Definition SfxTypes.hpp:133
@ ModalClose
Definition SfxTypes.hpp:130
@ SliderStep
Definition SfxTypes.hpp:128
@ Hover
Definition SfxTypes.hpp:124
const char * sfxIdName(SfxId id) noexcept
Definition SfxTypes.hpp:165
Pending explosion to process this tick.
Definition Explosion.hpp:13
ECS tag component: marks an entity as a player (vs. projectile, spawner, etc.).
Definition Player.hpp:8
A decoded sound clip ready for playback.
Definition SfxTypes.hpp:153
float defaultGain
Base volume for this clip.
Definition SfxTypes.hpp:160
std::size_t frameCount
Number of interleaved stereo frames in samples.
Definition SfxTypes.hpp:158
std::vector< float > samples
Mixer-ready F32 stereo samples.
Definition SfxTypes.hpp:155
float durationSeconds
Total playback duration in seconds.
Definition SfxTypes.hpp:157
std::vector< uint8_t > pcmData
Original/intermediate PCM bytes while loading.
Definition SfxTypes.hpp:154
SfxCategory category
Definition SfxTypes.hpp:159
float minCooldown
Minimum seconds between repeated plays.
Definition SfxTypes.hpp:161
bool loaded
True when the clip was decoded successfully.
Definition SfxTypes.hpp:162
SDL_AudioSpec spec
Format descriptor matching pcmData, or mixer format after conversion.
Definition SfxTypes.hpp:156