#pragma once #include #include #include #include namespace fs = std::filesystem; enum class AudioSelectionStrategy { INVALID = -1, SEQUENTIAL, RANDOM }; class EventOverrideData { public: EventOverrideData(const std::string&, const fs::path&); EventOverrideData(); public: bool LoadedSuccessfully = false; std::vector EventIds = {}; std::vector> EventIdsRegex = {}; std::vector>> Samples = {}; AudioSelectionStrategy Strategy = AudioSelectionStrategy::SEQUENTIAL; size_t CurrentIndex = 0; bool EnableOnLoopedSounds = false; }; class CustomAudioManager { public: bool TryLoadAudioOverride(const fs::path&); void ClearAudioOverrides(); std::shared_mutex m_loadingMutex; std::unordered_map> m_loadedAudioOverrides = {}; std::unordered_map> m_loadedAudioOverridesRegex = {}; }; extern CustomAudioManager g_CustomAudioManager;