diff options
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/loaders/soundloader.cpp | 18 | ||||
-rw-r--r-- | src/resources/soundeffect.cpp | 19 | ||||
-rw-r--r-- | src/resources/soundeffect.h | 31 |
3 files changed, 24 insertions, 44 deletions
diff --git a/src/resources/loaders/soundloader.cpp b/src/resources/loaders/soundloader.cpp index b39c5fcbe..8c325db7c 100644 --- a/src/resources/loaders/soundloader.cpp +++ b/src/resources/loaders/soundloader.cpp @@ -36,7 +36,6 @@ namespace struct ResourceLoader final { std::string path; - ResourceManager::loader fun; static Resource *load(const void *const v) { @@ -51,15 +50,26 @@ namespace rl->path.c_str()); return nullptr; } - Resource *const res = rl->fun(rw, rl->path); - return res; + // Load the music data and free the RWops structure + Mix_Chunk *const tmpSoundEffect = Mix_LoadWAV_RW(rw, 1); + + if (tmpSoundEffect) + { + return new SoundEffect(tmpSoundEffect, rl->path); + } + else + { + reportAlways("Error, failed to load sound effect: %s", + Mix_GetError()); + return nullptr; + } } }; } // namespace SoundEffect *Loader::getSoundEffect(const std::string &idPath) { - ResourceLoader rl = { idPath, &SoundEffect::load }; + ResourceLoader rl = { idPath }; return static_cast<SoundEffect*>(resourceManager->get( idPath, ResourceLoader::load, &rl)); } diff --git a/src/resources/soundeffect.cpp b/src/resources/soundeffect.cpp index 4491e993a..1b1026783 100644 --- a/src/resources/soundeffect.cpp +++ b/src/resources/soundeffect.cpp @@ -31,25 +31,6 @@ SoundEffect::~SoundEffect() Mix_FreeChunk(mChunk); } -Resource *SoundEffect::load(SDL_RWops *const rw, - const std::string &name) -{ - if (!rw) - return nullptr; - // Load the music data and free the RWops structure - Mix_Chunk *const tmpSoundEffect = Mix_LoadWAV_RW(rw, 1); - - if (tmpSoundEffect) - { - return new SoundEffect(tmpSoundEffect, name); - } - else - { - logger->log("Error, failed to load sound effect: %s", Mix_GetError()); - return nullptr; - } -} - bool SoundEffect::play(const int loops, const int volume, const int channel) const { diff --git a/src/resources/soundeffect.h b/src/resources/soundeffect.h index 20861f218..bc0a353f6 100644 --- a/src/resources/soundeffect.h +++ b/src/resources/soundeffect.h @@ -35,6 +35,16 @@ class SoundEffect final : public Resource { public: + /** + * Constructor. + */ + SoundEffect(Mix_Chunk *const soundEffect, + const std::string &name) : + Resource(), + mName(name), + mChunk(soundEffect) + { } + A_DELETE_COPY(SoundEffect) /** @@ -43,17 +53,6 @@ class SoundEffect final : public Resource ~SoundEffect(); /** - * Loads a sample from a buffer in memory. - * - * @param rw The SDL_RWops to load the sample data from. - * - * @return <code>NULL</code> if the an error occurred, a valid pointer - * otherwise. - */ - static Resource *load(SDL_RWops *const rw, - const std::string &name); - - /** * Plays the sample. * * @param loops Number of times to repeat the playback. @@ -72,16 +71,6 @@ class SoundEffect final : public Resource { return mName; } protected: - /** - * Constructor. - */ - SoundEffect(Mix_Chunk *const soundEffect, - const std::string &name) : - Resource(), - mName(name), - mChunk(soundEffect) - { } - std::string mName; Mix_Chunk *mChunk; }; |