From 615591cce917816d32a21e15ed17308cfa118fd7 Mon Sep 17 00:00:00 2001 From: James Turk Date: Thu, 20 Nov 2003 02:23:14 +0000 Subject: [PATCH] line endings! --- src/ZE_ZSound.cpp | 198 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 169 insertions(+), 29 deletions(-) diff --git a/src/ZE_ZSound.cpp b/src/ZE_ZSound.cpp index bd0fc7d..17a76fc 100644 --- a/src/ZE_ZSound.cpp +++ b/src/ZE_ZSound.cpp @@ -1,37 +1,177 @@ -/******************************************************************************* This file is Part of the ZEngine Library for 2D game development. Copyright (C) 2002, 2003 James Turk - Licensed under a BSD-style license. The maintainer of this library is James Turk (james@conceptofzero.net) and the home of this Library is http://www.zengine.sourceforge.net *******************************************************************************/ -/** \file ZE_ZSound.cpp \brief Source file for ZSound. - Implementation of ZSound, the basic Sound class for ZEngine.
$Id: ZE_ZSound.cpp,v 1.12 2003/11/20 00:56:53 cozman Exp $
\author James Turk **/ -#include "ZE_ZSound.h" #ifdef USE_SDL_MIXER namespace ZE -{ -//ZSound is almost exactly like ZMusic, when making changes check if that change should //be applied to ZMusic as well, roughly 90% of the time it should be. -const int ZSound::LoopInfinite = -1; -ZSound::ZSound() : rEngine(ZEngine::GetInstance()), rSound(NULL), rChannelID(-1) //request channel ID { } -ZSound::ZSound(std::string filename) : rEngine(ZEngine::GetInstance()), rSound(NULL), rChannelID(-1) //request channel ID { Open(filename); } -ZSound::~ZSound() { Release(); } void ZSound::Open(std::string filename) { Release(); +/******************************************************************************* + This file is Part of the ZEngine Library for 2D game development. + Copyright (C) 2002, 2003 James Turk + + Licensed under a BSD-style license. + + The maintainer of this library is James Turk (james@conceptofzero.net) + and the home of this Library is http://www.zengine.sourceforge.net +*******************************************************************************/ + +/** + \file ZE_ZSound.cpp + \brief Source file for ZSound. + + Implementation of ZSound, the basic Sound class for ZEngine. +
$Id: ZE_ZSound.cpp,v 1.13 2003/11/20 02:23:14 cozman Exp $
+ \author James Turk +**/ + +#include "ZE_ZSound.h" + +#ifdef USE_SDL_MIXER + +namespace ZE +{ + +//ZSound is almost exactly like ZMusic, when making changes check if that change should +//be applied to ZMusic as well, roughly 90% of the time it should be. + +const int ZSound::LoopInfinite = -1; + +ZSound::ZSound() : + rEngine(ZEngine::GetInstance()), + rSound(NULL), + rChannelID(-1) //request channel ID +{ +} + +ZSound::ZSound(std::string filename) : + rEngine(ZEngine::GetInstance()), + rSound(NULL), + rChannelID(-1) //request channel ID +{ + Open(filename); +} + +ZSound::~ZSound() +{ + Release(); +} + +void ZSound::Open(std::string filename) +{ + Release(); rSound = Mix_LoadWAV(filename.c_str()); if(!rSound) - rEngine->ReportError(ZERR_LOAD_SOUND,filename); } -void ZSound::OpenFromZip(std::string zipname, std::string filename) { SDL_RWops *rw = RWFromZip(zipname,filename); if(rw) + rEngine->ReportError(ZERR_LOAD_SOUND,filename); +} + +void ZSound::OpenFromZip(std::string zipname, std::string filename) +{ + SDL_RWops *rw = RWFromZip(zipname,filename); + if(rw) { rSound = Mix_LoadWAV_RW(rw,0); delete []rw->hidden.mem.base; //must free buffer SDL_FreeRW(rw); - } + } + if(!rSound) - rEngine->ReportError(ZERR_LOAD_SOUND,FormatStr("%s in %s archive",filename.c_str(),zipname.c_str())); } -void ZSound::Release() { if(rChannelID >= 0) Mix_HaltChannel(rChannelID); FreeSound(rSound); } -void ZSound::Play(int loopNum, int fadeTime) { if(rChannelID >= 0 && Mix_Playing(rChannelID)) //stop currently playing sound Mix_HaltChannel(rChannelID); - if(rSound) { if(fadeTime) rChannelID = Mix_FadeInChannel(rChannelID, rSound, loopNum, fadeTime); else rChannelID = Mix_PlayChannel(rChannelID, rSound, loopNum); } else if(!rSound) rEngine->ReportError(ZERR_NOSOUND, "Play"); } -void ZSound::Pause() const { if(rSound && rChannelID >= 0) Mix_Pause(rChannelID); else if(!rSound) rEngine->ReportError(ZERR_NOSOUND, "Pause"); } -void ZSound::Unpause() const { if(rSound && rChannelID >= 0) Mix_Resume(rChannelID); else if(!rSound) rEngine->ReportError(ZERR_NOSOUND, "Unpause"); -} -void ZSound::Stop(int fadeTime) const { if(rSound && rChannelID >= 0) { if(fadeTime) Mix_FadeOutChannel(rChannelID,fadeTime); else Mix_HaltChannel(rChannelID); } else if(!rSound) rEngine->ReportError(ZERR_NOSOUND, "Stop"); } -void ZSound::SetVolume(int volume) { if(rSound) Mix_VolumeChunk(rSound,volume); else rEngine->ReportError(ZERR_NOSOUND, "SetVolume"); } -bool ZSound::IsLoaded() const { return rSound != NULL; } -bool ZSound::IsPlaying() const { if(rSound && rChannelID >= 0) return Mix_Playing(rChannelID) > 0; else { if(rChannelID >= 0) rEngine->ReportError(ZERR_NOSOUND, "IsPlaying"); return false; } } -bool ZSound::IsPaused() const { if(rSound && rChannelID >= 0) return Mix_Paused(rChannelID) > 0; else { rEngine->ReportError(ZERR_NOSOUND, "IsPaused"); return false; } } -int ZSound::Volume() const { if(rSound) return Mix_VolumeChunk(rSound,-1); else { rEngine->ReportError(ZERR_NOSOUND, "GetVolume"); return -1; } } -} -#endif \ No newline at end of file + rEngine->ReportError(ZERR_LOAD_SOUND,FormatStr("%s in %s archive",filename.c_str(),zipname.c_str())); +} + +void ZSound::Release() +{ + if(rChannelID >= 0) + Mix_HaltChannel(rChannelID); + FreeSound(rSound); +} + +void ZSound::Play(int loopNum, int fadeTime) +{ + if(rChannelID >= 0 && Mix_Playing(rChannelID)) //stop currently playing sound + Mix_HaltChannel(rChannelID); + + if(rSound) + { + if(fadeTime) + rChannelID = Mix_FadeInChannel(rChannelID, rSound, loopNum, fadeTime); + else + rChannelID = Mix_PlayChannel(rChannelID, rSound, loopNum); + } + else if(!rSound) + rEngine->ReportError(ZERR_NOSOUND, "Play"); +} + +void ZSound::Pause() const +{ + if(rSound && rChannelID >= 0) + Mix_Pause(rChannelID); + else if(!rSound) + rEngine->ReportError(ZERR_NOSOUND, "Pause"); +} + +void ZSound::Unpause() const +{ + if(rSound && rChannelID >= 0) + Mix_Resume(rChannelID); + else if(!rSound) + rEngine->ReportError(ZERR_NOSOUND, "Unpause"); + +} + +void ZSound::Stop(int fadeTime) const +{ + if(rSound && rChannelID >= 0) + { + if(fadeTime) + Mix_FadeOutChannel(rChannelID,fadeTime); + else + Mix_HaltChannel(rChannelID); + } + else if(!rSound) + rEngine->ReportError(ZERR_NOSOUND, "Stop"); +} + +void ZSound::SetVolume(int volume) +{ + if(rSound) + Mix_VolumeChunk(rSound,volume); + else + rEngine->ReportError(ZERR_NOSOUND, "SetVolume"); +} + +bool ZSound::IsLoaded() const +{ + return rSound != NULL; +} + +bool ZSound::IsPlaying() const +{ + if(rSound && rChannelID >= 0) + return Mix_Playing(rChannelID) > 0; + else + { + if(rChannelID >= 0) + rEngine->ReportError(ZERR_NOSOUND, "IsPlaying"); + return false; + } +} + +bool ZSound::IsPaused() const +{ + if(rSound && rChannelID >= 0) + return Mix_Paused(rChannelID) > 0; + else + { + rEngine->ReportError(ZERR_NOSOUND, "IsPaused"); + return false; + } +} + +int ZSound::Volume() const +{ + if(rSound) + return Mix_VolumeChunk(rSound,-1); + else + { + rEngine->ReportError(ZERR_NOSOUND, "GetVolume"); + return -1; + } +} + +} + +#endif