1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-15 01:24:45 +02:00

* Reinstated music player. Added terrain music. To MSVC users: you need the recently uploaded libraries pack for this to work! [ http://download.vcmi.eu/msvc-pack.7z ]

* Not crash on empty (or 1-byte) lod file. (Case in SoD+WoG installations, where h3ab*.lod are dummies.
This commit is contained in:
Michał W. Urbańczyk
2011-08-17 20:44:14 +00:00
parent c0127032fc
commit a043bfa44a
4 changed files with 18 additions and 4 deletions

View File

@ -137,8 +137,8 @@ void init()
CCS->soundh->init(); CCS->soundh->init();
CCS->soundh->setVolume(GDefaultOptions.soundVolume); CCS->soundh->setVolume(GDefaultOptions.soundVolume);
CCS->musich = new CMusicHandler; CCS->musich = new CMusicHandler;
//CGI->musich->init(); CCS->musich->init();
//CGI->musich->setVolume(GDefaultOptions.musicVolume); CCS->musich->setVolume(GDefaultOptions.musicVolume);
tlog0<<"\tInitializing sound: "<<pomtime.getDif()<<std::endl; tlog0<<"\tInitializing sound: "<<pomtime.getDif()<<std::endl;
tlog0<<"Initializing screen and sound handling: "<<tmh.getDif()<<std::endl; tlog0<<"Initializing screen and sound handling: "<<tmh.getDif()<<std::endl;
@ -278,7 +278,7 @@ int main(int argc, char** argv)
if(!vm.count("battle")) if(!vm.count("battle"))
{ {
CCS->musich->playMusic(musicBase::mainMenu, -1); //CCS->musich->playMusic(musicBase::mainMenu, -1);
GH.curInt = new CGPreGame; //will set CGP pointer to itself GH.curInt = new CGPreGame; //will set CGP pointer to itself
} }
else else

View File

@ -316,6 +316,10 @@ CMusicHandler::CMusicHandler(): currentMusic(NULL), nextMusic(NULL)
musicBase::necroTown, musicBase::dungeonTown, musicBase::necroTown, musicBase::dungeonTown,
musicBase::strongHoldTown, musicBase::fortressTown, musicBase::strongHoldTown, musicBase::fortressTown,
musicBase::elemTown; musicBase::elemTown;
terrainMusics += musicBase::dirt, musicBase::sand, musicBase::grass,
musicBase::snow, musicBase::swamp, musicBase::rough,
musicBase::underground, musicBase::lava,musicBase::water;
} }
void CMusicHandler::init() void CMusicHandler::init()
@ -442,6 +446,10 @@ Mix_Music * CMusicHandler::LoadMUS(const char *file)
if(!ret) //load music and check for error if(!ret) //load music and check for error
tlog1 << "Unable to load music file (" << file <<"). Error: " << Mix_GetError() << std::endl; tlog1 << "Unable to load music file (" << file <<"). Error: " << Mix_GetError() << std::endl;
#ifdef _WIN32
//The assertion will fail if old MSVC libraries pack .dll is used
assert(Mix_GetMusicType(ret) == MUS_MP3_MAD);
#endif
return ret; return ret;
} }

View File

@ -121,6 +121,7 @@ public:
std::map<musicBase::musicID, std::string> musics; std::map<musicBase::musicID, std::string> musics;
std::vector<musicBase::musicID> battleMusics; std::vector<musicBase::musicID> battleMusics;
std::vector<musicBase::musicID> townMusics; std::vector<musicBase::musicID> townMusics;
std::vector<musicBase::musicID> terrainMusics;
void playMusic(musicBase::musicID musicID, int loop=1); void playMusic(musicBase::musicID musicID, int loop=1);
void playMusicFromSet(std::vector<musicBase::musicID> &music_vec, int loop=1); void playMusicFromSet(std::vector<musicBase::musicID> &music_vec, int loop=1);

View File

@ -280,6 +280,11 @@ void CLodHandler::init(const std::string lodFile, const std::string dirName)
totalFiles = SDL_SwapLE32(temp); totalFiles = SDL_SwapLE32(temp);
LOD.seekg(0x5c, std::ios::beg); LOD.seekg(0x5c, std::ios::beg);
if(!LOD)
{
tlog2 << lodFile << " doesn't store anything!\n";
return;
}
struct LodEntry *lodEntries = new struct LodEntry[totalFiles]; struct LodEntry *lodEntries = new struct LodEntry[totalFiles];
LOD.read((char *)lodEntries, sizeof(struct LodEntry) * totalFiles); LOD.read((char *)lodEntries, sizeof(struct LodEntry) * totalFiles);