#pragma once #include #include #include #include namespace wowee { namespace pipeline { class AssetManager; } namespace audio { class UISoundManager { public: UISoundManager() = default; ~UISoundManager() = default; // Initialization bool initialize(pipeline::AssetManager* assets); void shutdown(); // Volume control void setVolumeScale(float scale); // Window sounds void playBagOpen(); void playBagClose(); void playQuestLogOpen(); void playQuestLogClose(); void playCharacterSheetOpen(); void playCharacterSheetClose(); void playAuctionHouseOpen(); void playAuctionHouseClose(); void playGuildBankOpen(); void playGuildBankClose(); // Button sounds void playButtonClick(); void playMenuButtonClick(); // Quest sounds void playQuestActivate(); void playQuestComplete(); void playQuestFailed(); void playQuestUpdate(); // Loot sounds void playLootCoinSmall(); void playLootCoinLarge(); void playLootItem(); // Item sounds void playDropOnGround(); void playPickupBag(); void playPickupBook(); void playPickupCloth(); void playPickupFood(); void playPickupGem(); // Eating/drinking void playEating(); void playDrinking(); // Level up void playLevelUp(); // Error/feedback void playError(); void playTargetSelect(); void playTargetDeselect(); private: struct UISample { std::string path; std::vector data; bool loaded; }; // Sound libraries std::vector bagOpenSounds_; std::vector bagCloseSounds_; std::vector questLogOpenSounds_; std::vector questLogCloseSounds_; std::vector characterSheetOpenSounds_; std::vector characterSheetCloseSounds_; std::vector auctionOpenSounds_; std::vector auctionCloseSounds_; std::vector guildBankOpenSounds_; std::vector guildBankCloseSounds_; std::vector buttonClickSounds_; std::vector menuButtonSounds_; std::vector questActivateSounds_; std::vector questCompleteSounds_; std::vector questFailedSounds_; std::vector questUpdateSounds_; std::vector lootCoinSmallSounds_; std::vector lootCoinLargeSounds_; std::vector lootItemSounds_; std::vector dropSounds_; std::vector pickupBagSounds_; std::vector pickupBookSounds_; std::vector pickupClothSounds_; std::vector pickupFoodSounds_; std::vector pickupGemSounds_; std::vector eatingSounds_; std::vector drinkingSounds_; std::vector levelUpSounds_; std::vector errorSounds_; std::vector selectTargetSounds_; std::vector deselectTargetSounds_; // State tracking float volumeScale_ = 1.0f; bool initialized_ = false; // Helper methods bool loadSound(const std::string& path, UISample& sample, pipeline::AssetManager* assets); void playSound(const std::vector& library); }; } // namespace audio } // namespace wowee