Removed source files for playing mod music from the source tree and

windows project.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@1462 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2008-02-12 03:42:55 +00:00
parent f03fee4c9e
commit 3a3545c058
3 changed files with 0 additions and 405 deletions

View File

@ -786,10 +786,6 @@
RelativePath="../../../src\moving_texture.cpp"
>
</File>
<File
RelativePath="../../../src\music_mikmod.cpp"
>
</File>
<File
RelativePath="../../../src\music_ogg.cpp"
>
@ -1192,10 +1188,6 @@
RelativePath="../../../src\music.hpp"
>
</File>
<File
RelativePath="../../../src\music_mikmod.hpp"
>
</File>
<File
RelativePath="../../../src\music_ogg.hpp"
>

View File

@ -1,332 +0,0 @@
// $Id$
//
// SuperTuxKart - a fun racing game with go-kart
// Copyright (C) 2006 Patrick Ammann <pammann@aro.ch>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#if HAVE_OPENAL && HAVE_MIKMOD
#ifdef __APPLE__
# include <OpenAL/al.h>
#else
# include <AL/al.h>
#endif
#include <AL/alut.h>
#include "music_mikmod.hpp"
#include "loader.hpp"
#include "user_config.hpp"
#define BUFFER_SIZE (1024 * 32)
MusicMikMod::MusicMikMod()
{
m_modStream= NULL;
m_soundBuffers[0]= m_soundBuffers[1]= 0;
m_soundSource= 0;
m_pausedMusic= true;
static bool initialized = false;
if( !initialized )
{
initialized = true;
//Register network drivers
MikMod_RegisterDriver(&drv_AF);
MikMod_RegisterDriver(&drv_esd);
//Register hardware drivers, but disk writer drivers cause problems
//on computers without proper hardware or network drivers.
MikMod_RegisterDriver(&drv_aix);
MikMod_RegisterDriver(&drv_alsa);
MikMod_RegisterDriver(&drv_hp);
MikMod_RegisterDriver(&drv_sam9407);
MikMod_RegisterDriver(&drv_sgi);
MikMod_RegisterDriver(&drv_sun);
MikMod_RegisterDriver(&drv_ultra);
//These two won't link, at least under Gentoo linux.
//MikMod_RegisterDriver(&drv_dart);
//MikMod_RegisterDriver(&drv_os2);
//Register the null driver in case sound is not available.
//Also, for some reason, the assert at line 76 of this file
//crashes the program without it.
MikMod_RegisterDriver(&drv_nos);
// register loaders (it, s3m, xm y mod)
MikMod_RegisterAllLoaders();
}
if(MikMod_Init(""))
{
user_config->setMusic(UserConfig::UC_TEMPORARY_DISABLE);
fprintf(stderr,"Problems initialising mikmod. Disabling music.\n");
}
}
//-----------------------------------------------------------------------------
MusicMikMod::~MusicMikMod()
{
stopMusic();
if(!release())
{
fprintf(stderr,"Problems with mikmod:release.\n");
}
MikMod_Exit();
}
//-----------------------------------------------------------------------------
bool MusicMikMod::load(const char* filename)
{
if(!release())
{
user_config->setMusic(UserConfig::UC_TEMPORARY_DISABLE);
fprintf(stderr,"Problems mikmod:release. Disabling music.\n");
return false;
}
m_fileName = loader->getPath(filename);
FILE* modFile = fopen(m_fileName.c_str(), "rb");
if (modFile == NULL)
{
fprintf(stderr, "Loading Music: %s failed\n", m_fileName.c_str());
return false;
}
m_modStream= Player_LoadFP(modFile, 255, 0);
fclose(modFile);
if (m_modStream == NULL)
{
fprintf(stderr, "Loading Music: %s failed\n", m_fileName.c_str());
return false;
}
Player_Start(m_modStream);
alGenBuffers(2, m_soundBuffers);
if (alGetError() != AL_NO_ERROR)
{
fprintf(stderr, "Loading Music: %s failed\n", m_fileName.c_str());
return false;
}
alGenSources(1, &m_soundSource);
if (alGetError() != AL_NO_ERROR)
{
fprintf(stderr, "Loading Music: %s failed\n", m_fileName.c_str());
return false;
}
alSource3f(m_soundSource, AL_POSITION, 0.0, 0.0, 0.0);
alSource3f(m_soundSource, AL_VELOCITY, 0.0, 0.0, 0.0);
alSource3f(m_soundSource, AL_DIRECTION, 0.0, 0.0, 0.0);
alSourcef (m_soundSource, AL_ROLLOFF_FACTOR, 0.0 );
alSourcei (m_soundSource, AL_SOURCE_RELATIVE, AL_TRUE );
return true;
}
//-----------------------------------------------------------------------------
bool MusicMikMod::release()
{
if (m_fileName == "")
{
// nothing is loaded
return true;
}
m_fileName= "";
alSourceStop(m_soundSource);
// empty
int queued= 0;
alGetSourcei(m_soundSource, AL_BUFFERS_QUEUED, &queued);
while(queued--)
{
ALuint buffer= 0;
alSourceUnqueueBuffers(m_soundSource, 1, &buffer);
if (alGetError() != AL_NO_ERROR)
{
return false;
}
}
alDeleteSources(1, &m_soundSource);
if (alGetError() != AL_NO_ERROR)
{
return false;
}
alDeleteBuffers(2, m_soundBuffers);
if (alGetError() != AL_NO_ERROR)
{
return false;
}
Player_Free(m_modStream);
return true;
}
//-----------------------------------------------------------------------------
bool MusicMikMod::playMusic()
{
if(isPlaying())
{
return true;
}
if (!streamIntoBuffer(m_soundBuffers[0]))
{
return false;
}
if(!streamIntoBuffer(m_soundBuffers[1]))
{
return false;
}
alSourceQueueBuffers(m_soundSource, 2, m_soundBuffers);
alSourcePlay(m_soundSource);
m_pausedMusic= false;
return true;
}
//-----------------------------------------------------------------------------
bool MusicMikMod::isPlaying()
{
ALenum state;
alGetSourcei(m_soundSource, AL_SOURCE_STATE, &state);
return (state == AL_PLAYING);
}
//-----------------------------------------------------------------------------
bool MusicMikMod::stopMusic()
{
pauseMusic();
release();
return true;
}
//-----------------------------------------------------------------------------
bool MusicMikMod::pauseMusic()
{
if (m_fileName == "")
{
// nothing is loaded
return true;
}
alSourceStop(m_soundSource);
m_pausedMusic= true;
return true;
}
//-----------------------------------------------------------------------------
bool MusicMikMod::resumeMusic()
{
if (m_fileName == "")
{
// nothing is loaded
return true;
}
alSourcePlay(m_soundSource);
m_pausedMusic= false;
return true;
}
//-----------------------------------------------------------------------------
void MusicMikMod::update()
{
if (m_pausedMusic)
{
// nothing todo
return;
}
int processed= 0;
alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed);
bool active= true;
while(processed--)
{
ALuint buffer;
alSourceUnqueueBuffers(m_soundSource, 1, &buffer);
if (alGetError() != AL_NO_ERROR)
{
user_config->setMusic(UserConfig::UC_TEMPORARY_DISABLE);
fprintf(stderr,"Problems with mikmod:sourceUnqueueBuffers. Disabling music.\n");
return;
}
active= streamIntoBuffer(buffer);
alSourceQueueBuffers(m_soundSource, 1, &buffer);
if (alGetError() != AL_NO_ERROR)
{
user_config->setMusic(UserConfig::UC_TEMPORARY_DISABLE);
fprintf(stderr,"Problems with mikmod:sourceQueueBuffers. Disabling music.\n");
return;
}
}
// check for underrun
if (active)
{
// we have data, so we should be playing...
ALenum state;
alGetSourcei(m_soundSource, AL_SOURCE_STATE, &state);
if (state != AL_PLAYING)
{
alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed);
alSourcePlay(m_soundSource);
}
}
else
{
// no more data. Seek to beginning -> loop
Player_SetPosition(m_modStream->reppos);
}
}
//-----------------------------------------------------------------------------
bool MusicMikMod::streamIntoBuffer(ALuint buffer)
{
SBYTE pcm[BUFFER_SIZE];
// write bytes in pcm
VC_WriteBytes(pcm, BUFFER_SIZE);
if (!Player_Active())
{
// there aren't bytes that we could write in pcm
return false;
}
alBufferData(buffer, AL_FORMAT_STEREO16, (char*)pcm, BUFFER_SIZE, md_mixfreq);
if (alGetError() != AL_NO_ERROR)
{
return false;
}
return true;
}
#endif // HAVE_OPENAL && HAVE_MIKMOD

View File

@ -1,65 +0,0 @@
// $Id$
//
// SuperTuxKart - a fun racing game with go-kart
// Copyright (C) 2006 Patrick Ammann <pammann@aro.ch>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef HEADER_MUSICMIKMOD_H
#define HEADER_MUSICMIKMOD_H
#include <string>
#include <mikmod.h>
#ifdef __APPLE__
# include <OpenAL/al.h>
#else
# include <AL/al.h>
#endif
#include "music.hpp"
class MusicMikMod : public Music
{
public:
MusicMikMod();
virtual ~MusicMikMod();
virtual void update();
virtual bool load(const char* filename);
virtual bool playMusic();
virtual bool stopMusic();
virtual bool pauseMusic();
virtual bool resumeMusic();
private:
bool release();
bool isPlaying();
bool streamIntoBuffer(ALuint buffer);
std::string m_fileName;
MODULE* m_modStream;
ALuint m_soundBuffers[2];
ALuint m_soundSource;
bool m_pausedMusic;
};
#endif // HEADER_MUSICMIKMOD_H