From d66bdad9e32c99b324dd3b31cd478e141a9d9bfb Mon Sep 17 00:00:00 2001 From: Flugente Date: Sat, 21 Jul 2018 15:02:44 +0000 Subject: [PATCH] - Added a wrapper that takes care of determining the file type of audio files. - Fix: 'hit' sounds of non-profile NPCs were not played correctly git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8580 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameVersion.cpp | 4 +- Laptop/IMP Voices.cpp | 13 +- Standard Gaming Platform/FileMan.cpp | 17 ++ Standard Gaming Platform/FileMan.h | 3 + Tactical/Dialogue Control.cpp | 240 +++++---------------------- Tactical/Soldier Control.cpp | 138 ++++----------- Utils/Music Control.cpp | 23 +-- 7 files changed, 101 insertions(+), 337 deletions(-) diff --git a/GameVersion.cpp b/GameVersion.cpp index cbf9d0d55..d5d9c1170 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -55,8 +55,8 @@ #endif -CHAR8 czVersionNumber[16] = { "Build 18.07.14" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 18.07.21" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; -CHAR16 zRevisionNumber[16] = { L"Revision 8577" }; +CHAR16 zRevisionNumber[16] = { L"Revision 8580" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Laptop/IMP Voices.cpp b/Laptop/IMP Voices.cpp index 8423d5d3f..ac759e172 100644 --- a/Laptop/IMP Voices.cpp +++ b/Laptop/IMP Voices.cpp @@ -345,19 +345,14 @@ BOOLEAN CameBackToVoicePageButNotFinished( ) UINT32 PlayVoice( void ) { CHAR8 zFileName[164]; + CHAR8 zFileNameHelp[164]; UINT16 iSlot = gIMPVoice[iCurrentVoice].voiceset; Assert( (iSlot >= 0) && (iSlot <= 999) ); - sprintf( zFileName, "Speech\\%03d_001.mp3", iSlot ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "Speech\\%03d_001.ogg", iSlot ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "Speech\\%03d_001.wav", iSlot ); - } - } + sprintf( zFileNameHelp, "Speech\\%03d_001", iSlot ); + + SoundFileExists( zFileNameHelp, zFileName ); return(PlayJA2SampleFromFile( zFileName, RATE_11025, MIDVOLUME, 1, MIDDLEPAN )); } diff --git a/Standard Gaming Platform/FileMan.cpp b/Standard Gaming Platform/FileMan.cpp index 97b88e7e0..287ef008e 100644 --- a/Standard Gaming Platform/FileMan.cpp +++ b/Standard Gaming Platform/FileMan.cpp @@ -2552,3 +2552,20 @@ UINT32 GetFreeSpaceOnHardDrive( STR pzDriveLetter ) return( uiBytesFree ); } +// Flugente: simple wrapper to check whether an audio file in mp3/ogg/wav format exists +BOOLEAN SoundFileExists( STR strFilename, STR zFoundFilename ) +{ + SGPFILENAME zFilename; + + sprintf( zFoundFilename, "%s.mp3", strFilename ); + if ( !FileExists( zFoundFilename ) ) + { + sprintf( zFoundFilename, "%s.ogg", strFilename ); + if ( !FileExists( zFoundFilename ) ) + { + sprintf( zFoundFilename, "%s.wav", strFilename ); + } + } + + return FileExists( zFoundFilename ); +} diff --git a/Standard Gaming Platform/FileMan.h b/Standard Gaming Platform/FileMan.h index 4a95d5eda..5f51e5de2 100644 --- a/Standard Gaming Platform/FileMan.h +++ b/Standard Gaming Platform/FileMan.h @@ -192,6 +192,9 @@ UINT32 GetFreeSpaceOnHardDriveWhereGameIsRunningFrom( ); //Gets the free hard drive space from the drive letter passed in. It has to be the root dir. ( eg. c:\ ) UINT32 GetFreeSpaceOnHardDrive( STR pzDriveLetter ); +// Flugente: simple wrapper to check whether an audio file in mp3/ogg/wav format exists +BOOLEAN SoundFileExists( STR strFilename, STR zFoundFilename ); + /* #ifdef __cplusplus } diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index 924b6adec..112f97dc5 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -2314,7 +2314,7 @@ void CreateTalkingUI( INT8 bUIHandlerID, INT32 iFaceIndex, UINT8 ubCharacterNum, CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN fWavFile ) { static CHAR8 zFileName[164]; - static CHAR8 zFileNameExists[164]; + static CHAR8 zFileNameHelper[164]; UINT32 ubFileNumID; BOOLEAN isBartenderSantos = FALSE; @@ -2331,23 +2331,11 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN // build name of wav file (characternum + quotenum) //SB: curiously, there are no g_%03d_%03d audio files in all russian versions // #ifdef RUSSIAN -// sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.ogg",ubCharacterNum,usQuoteNum ); -// if ( !FileExists( zFileName ) ) -// { -// sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.wav",ubCharacterNum,usQuoteNum ); -// } +// sprintf( zFileNameHelper,"NPC_SPEECH\\g_%03d_%03d",ubCharacterNum,usQuoteNum ); // #else if ( gSoundProfileValue[ubCharacterNum].EnabledSound == TRUE ) { - sprintf( zFileName, "NPC_SPEECH\\d_%03d_%03d.ogg", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\d_%03d_%03d.mp3", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\d_%03d_%03d.wav", usVoiceSet, usQuoteNum ); - } - } + sprintf( zFileNameHelper, "NPC_SPEECH\\d_%03d_%03d", usVoiceSet, usQuoteNum ); } // #endif } @@ -2364,7 +2352,6 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN || ProfileCurrentlyTalkingInDialoguePanel( ubCharacterNum ) || (gMercProfiles[ ubCharacterNum ].ubMiscFlags & PROFILE_MISC_FLAG_FORCENPCQUOTE) ) ) - { ubFileNumID = usVoiceSet; @@ -2373,107 +2360,33 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN isBartenderSantos = TRUE; ubFileNumID = HERVE; } - else if ( ubCharacterNum == PETER ) + else if ( ubCharacterNum == PETER || ubCharacterNum == ALBERTO || ubCharacterNum == CARLO ) { isBartenderSantos = TRUE; - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", PETER ); + sprintf( (char *)zFileName,"NPCDATA\\%03d.EDT", ubCharacterNum ); if ( !FileExists( zFileName ) ) ubFileNumID = HERVE; else - ubFileNumID = PETER; - } - else if ( ubCharacterNum == ALBERTO ) - { - isBartenderSantos = TRUE; - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", ALBERTO ); - if ( !FileExists( zFileName ) ) - ubFileNumID = HERVE; - else - ubFileNumID = ALBERTO; - } - else if ( ubCharacterNum == CARLO ) - { - isBartenderSantos = TRUE; - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", CARLO ); - if ( !FileExists( zFileName ) ) - ubFileNumID = HERVE; - else - ubFileNumID = CARLO; + ubFileNumID = ubCharacterNum; } #ifdef JA2UB - if ( ubCharacterNum == MANUEL_UB ) + if ( ubCharacterNum == MANUEL_UB || + ubCharacterNum == BIGGENS_UB || + ubCharacterNum == JOHN_K_UB || + ubCharacterNum == TEX_UB || + ubCharacterNum == GASTON_UB || + ubCharacterNum == STOGIE_UB || + ubCharacterNum == JERRY_MILO_UB || + ubCharacterNum == PGMALE4_UB || + ubCharacterNum == BETTY_UB || + ubCharacterNum == RAUL_UB || + ubCharacterNum == MORRIS_UB || + ubCharacterNum == RUDY_UB ) { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", MANUEL_UB ); - ubFileNumID = MANUEL_UB; + sprintf( (char *)zFileName,"NPCDATA\\%03d.EDT", ubCharacterNum ); + ubFileNumID = ubCharacterNum; } - - if ( ubCharacterNum == BIGGENS_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", BIGGENS_UB ); - ubFileNumID = BIGGENS_UB; - } - - if ( ubCharacterNum == JOHN_K_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", JOHN_K_UB ); - ubFileNumID = JOHN_K_UB; - } - - if ( ubCharacterNum == TEX_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", TEX_UB ); - ubFileNumID = TEX_UB; - } - - if ( ubCharacterNum == GASTON_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", GASTON_UB ); - ubFileNumID = GASTON_UB; - } - - if ( ubCharacterNum == STOGIE_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", STOGIE_UB ); - ubFileNumID = STOGIE_UB; - } - - if ( ubCharacterNum == JERRY_MILO_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", JERRY_MILO_UB ); - ubFileNumID = JERRY_MILO_UB; - } - - if ( ubCharacterNum == PGMALE4_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", PGMALE4_UB ); - ubFileNumID = PGMALE4_UB; - } - - if ( ubCharacterNum == BETTY_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", BETTY_UB ); - ubFileNumID = BETTY_UB; - } - - if ( ubCharacterNum == RAUL_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", RAUL_UB ); - ubFileNumID = RAUL_UB; - } - - if ( ubCharacterNum == MORRIS_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", MORRIS_UB ); - ubFileNumID = MORRIS_UB; - } - - if ( ubCharacterNum == RUDY_UB ) - { - sprintf( (char *)zFileNameExists,"NPCDATA\\%03d.EDT", RUDY_UB ); - ubFileNumID = RUDY_UB; - } - #endif // If we are character #155, check fact! @@ -2487,31 +2400,13 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN if ( gSoundProfileValue[ubFileNumID].EnabledSound == TRUE ) { // Lesh: patch to allow playback ogg speech files - sprintf( zFileName,"NPC_SPEECH\\%03d_%03d.ogg",ubFileNumID,usQuoteNum ); - - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\%03d_%03d.mp3", ubFileNumID, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\%03d_%03d.wav", ubFileNumID, usQuoteNum ); - } - } + sprintf( zFileNameHelper,"NPC_SPEECH\\%03d_%03d",ubFileNumID,usQuoteNum ); // WANNE: We do not have any speech files for the other (!= HERVE) santos bartenders, take HERVE speech files - if (isBartenderSantos && HERVE != ubFileNumID && !FileExists(zFileName)) + if (isBartenderSantos && HERVE != ubFileNumID && !SoundFileExists( zFileNameHelper, zFileName ) ) { ubFileNumID = HERVE; - sprintf( zFileName,"NPC_SPEECH\\%03d_%03d.ogg",ubFileNumID,usQuoteNum ); - - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\%03d_%03d.mp3", ubFileNumID, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "NPC_SPEECH\\%03d_%03d.wav", ubFileNumID, usQuoteNum ); - } - } + sprintf( zFileNameHelper,"NPC_SPEECH\\%03d_%03d",ubFileNumID,usQuoteNum ); } } } @@ -2540,48 +2435,15 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN if ( gSoundProfileValue[ubCharacterNum].EnabledSound == TRUE ) { #ifdef JA2UB - sprintf( zFileName,"SPEECH\\%03d_%03d.ogg",usVoiceSet,usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName,"SPEECH\\%03d_%03d.ogg",usVoiceSet,usQuoteNum ); - } + //inshy: fix for UB-1.13 version only + sprintf( zFileNameHelper,"SPEECH\\%03d_%03d",usVoiceSet,usQuoteNum ); #else - sprintf( zFileName,"SPEECH\\r_%03d_%03d.ogg",usVoiceSet,usQuoteNum ); -#endif - if ( !FileExists( zFileName ) ) - { - //inshy: fix for UB-1.13 version only -#ifdef JA2UB - sprintf( zFileName,"SPEECH\\%03d_%03d.wav",usVoiceSet,usQuoteNum ); - - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName,"SPEECH\\%03d_%03d.mp3",usVoiceSet,usQuoteNum ); - } -#else - sprintf( zFileName,"SPEECH\\r_%03d_%03d.wav",usVoiceSet,usQuoteNum ); + sprintf( zFileNameHelper,"SPEECH\\r_%03d_%03d",usVoiceSet,usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\r_%03d_%03d.mp3", usVoiceSet, usQuoteNum ); - } + // Also check for Russian Gold sound files (identical to international ones) + if ( !SoundFileExists( zFileNameHelper, zFileName ) ) + sprintf( zFileNameHelper, "SPEECH\\%03d_%03d", usVoiceSet, usQuoteNum ); #endif - - // Also check for Russian Gold sound files (identical to international ones) - if(! FileExists( zFileName ) ) - { - sprintf( zFileName,"SPEECH\\%03d_%03d.ogg",usVoiceSet,usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName,"SPEECH\\%03d_%03d.mp3",usVoiceSet,usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\%03d_%03d.wav", usVoiceSet, usQuoteNum ); - } - } - } -// - } } } else @@ -2590,16 +2452,7 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN if ( gSoundProfileValue[ubCharacterNum].EnabledSound == TRUE ) { // build name of wav file (characternum + quotenum) - sprintf( zFileName, "SPEECH\\%03d_%03d.ogg", usVoiceSet, usQuoteNum ); - - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\%03d_%03d.mp3", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\%03d_%03d.wav", usVoiceSet, usQuoteNum ); - } - } + sprintf( zFileNameHelper, "SPEECH\\%03d_%03d", usVoiceSet, usQuoteNum ); } } } @@ -2610,13 +2463,16 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN } } + if ( fWavFile ) + SoundFileExists( zFileNameHelper, zFileName ); + return( zFileName ); } CHAR8 *GetSnitchDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN fWavFile, BOOLEAN fName ) { static CHAR8 zFileName[164]; - static CHAR8 zFileNameExists[164]; + static CHAR8 zFilename_Used[164]; // Flugente: For the voice set itself, use this number UINT32 usVoiceSet = gMercProfiles[ubCharacterNum].usVoiceIndex; @@ -2628,40 +2484,26 @@ CHAR8 *GetSnitchDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, B // build name of wav file (characternum + quotenum) if(fName) { - sprintf( zFileName, "SPEECH\\SNITCH\\NAMES\\%03d_%03d.ogg", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\SNITCH\\NAMES\\%03d_%03d.mp3", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\SNITCH\\NAMES\\%03d_%03d.wav", usVoiceSet, usQuoteNum ); - } - } + sprintf( zFileName, "SPEECH\\SNITCH\\NAMES\\%03d_%03d", usVoiceSet, usQuoteNum ); } else { - sprintf( zFileName, "SPEECH\\SNITCH\\%03d_%03d.ogg", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\SNITCH\\%03d_%03d.mp3", usVoiceSet, usQuoteNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "SPEECH\\SNITCH\\%03d_%03d.wav", usVoiceSet, usQuoteNum ); - } - } + sprintf( zFileName, "SPEECH\\SNITCH\\%03d_%03d", usVoiceSet, usQuoteNum ); } + + SoundFileExists( zFileName, zFilename_Used ); } } else { // assume EDT files are in EDT directory on HARD DRIVE if(fName) - sprintf( zFileName, "MERCEDT\\SNITCH\\NAMES\\%03d.EDT", usVoiceSet ); + sprintf( zFilename_Used, "MERCEDT\\SNITCH\\NAMES\\%03d.EDT", usVoiceSet ); else - sprintf( zFileName, "MERCEDT\\SNITCH\\%03d.EDT", usVoiceSet ); + sprintf( zFilename_Used, "MERCEDT\\SNITCH\\%03d.EDT", usVoiceSet ); } - return( zFileName ); + return( zFilename_Used ); } // Used to see if the dialog text file exists diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 862512461..cb9069025 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -10626,6 +10626,7 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe //in this function, pSoldier stands in for the this pointer, since //this soldier could be a vehicle, then the merc that makes the sound is inside SGPFILENAME zFilename; + SGPFILENAME zFilename_Used; SOUNDPARMS spParms; UINT8 ubSoundID = 0; UINT32 uiSoundID; @@ -10896,18 +10897,9 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe UINT16 numsounds = QuoteExp[pSoldier->ubProfile].numBattleSounds[ubSoundID]; // check: is there a sound with a bigger number? - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.ogg", usVoiceSet, gBattleSndsData[ubSoundID].zName, numsounds + 1 ); + sprintf( zFilename, "BATTLESNDS\\%03d_%s%d", usVoiceSet, gBattleSndsData[ubSoundID].zName, numsounds + 1 ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.mp3", usVoiceSet, gBattleSndsData[ubSoundID].zName, numsounds + 1 ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.wav", usVoiceSet, gBattleSndsData[ubSoundID].zName, numsounds + 1 ); - } - } - - if ( FileExists( zFilename ) ) + if ( SoundFileExists( zFilename, zFilename_Used ) ) { QuoteExp[pSoldier->ubProfile].numBattleSounds[ubSoundID]++; } @@ -10921,63 +10913,27 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe if ( soundtoplay > 1 ) { - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.ogg", usVoiceSet, gBattleSndsData[ubSoundID].zName, soundtoplay ); - - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.mp3", usVoiceSet, gBattleSndsData[ubSoundID].zName, soundtoplay ); - - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.wav", usVoiceSet, gBattleSndsData[ubSoundID].zName, soundtoplay ); - } + sprintf( zFilename, "BATTLESNDS\\%03d_%s%d", usVoiceSet, gBattleSndsData[ubSoundID].zName, soundtoplay ); } else { - sprintf( zFilename, "BATTLESNDS\\%03d_%s.ogg", usVoiceSet, gBattleSndsData[ubSoundID].zName ); - - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s.wav", usVoiceSet, gBattleSndsData[ubSoundID].zName ); + sprintf( zFilename, "BATTLESNDS\\%03d_%s", usVoiceSet, gBattleSndsData[ubSoundID].zName ); // due to legacy reasons, we both have to check for versions with '1' and without a number here - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.ogg", usVoiceSet, gBattleSndsData[ubSoundID].zName, 1 ); - - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.wav", usVoiceSet, gBattleSndsData[ubSoundID].zName, 1 ); - - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s.mp3", usVoiceSet, gBattleSndsData[ubSoundID].zName ); - - if ( !FileExists( zFilename ) ) - sprintf( zFilename, "BATTLESNDS\\%03d_%s%d.mp3", usVoiceSet, gBattleSndsData[ubSoundID].zName, 1 ); + if ( !SoundFileExists( zFilename, zFilename_Used ) ) + sprintf( zFilename, "BATTLESNDS\\%03d_%s%d", usVoiceSet, gBattleSndsData[ubSoundID].zName, 1 ); } - if ( !FileExists( zFilename ) ) + if ( !SoundFileExists( zFilename, zFilename_Used ) ) { // OK, temp build file... if ( pSoldier->ubBodyType == REGFEMALE ) { - sprintf( zFilename, "BATTLESNDS\\f_%s.ogg", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\f_%s.mp3", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\f_%s.wav", gBattleSndsData[ubSoundID].zName ); - } - } + sprintf( zFilename, "BATTLESNDS\\f_%s", gBattleSndsData[ubSoundID].zName ); } else { - sprintf( zFilename, "BATTLESNDS\\m_%s.ogg", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\m_%s.mp3", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\m_%s.wav", gBattleSndsData[ubSoundID].zName ); - } - } + sprintf( zFilename, "BATTLESNDS\\m_%s", gBattleSndsData[ubSoundID].zName ); } } } @@ -10993,85 +10949,49 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe { if ( ubSoundID == BATTLE_SOUND_DIE1 ) { - sprintf( zFilename, "BATTLESNDS\\kid%d_dying.ogg", pSoldier->ubBattleSoundID ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\kid%d_dying.mp3", pSoldier->ubBattleSoundID ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\kid%d_dying.wav", pSoldier->ubBattleSoundID ); - } - } + sprintf( zFilename, "BATTLESNDS\\kid%d_dying", pSoldier->ubBattleSoundID ); } else { - sprintf( zFilename, "BATTLESNDS\\kid%d_%s.ogg", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\kid%d_%s.mp3", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\kid%d_%s.wav", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - } - } + sprintf( zFilename, "BATTLESNDS\\kid%d_%s1", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); + + if ( !SoundFileExists( zFilename, zFilename_Used ) ) + sprintf( zFilename, "BATTLESNDS\\kid%d_%s2", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); } } else if ( pSoldier->IsZombie( ) ) // Madd: add zombie sounds { if ( ubSoundID == BATTLE_SOUND_DIE1 ) { - sprintf( zFilename, "BATTLESNDS\\zombie_die.ogg" ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\zombie_die.mp3" ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\zombie_die.wav" ); - } - } + sprintf( zFilename, "BATTLESNDS\\zombie_die" ); } else { - sprintf( zFilename, "BATTLESNDS\\zombie_%s.ogg", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\zombie_%s.mp3", gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\zombie_%s.wav", gBattleSndsData[ubSoundID].zName ); - } - } + sprintf( zFilename, "BATTLESNDS\\zombie_%s1", gBattleSndsData[ubSoundID].zName ); + + if ( !SoundFileExists( zFilename, zFilename_Used ) ) + sprintf( zFilename, "BATTLESNDS\\zombie_%s2", gBattleSndsData[ubSoundID].zName ); } } else { if ( ubSoundID == BATTLE_SOUND_DIE1 ) { - sprintf( zFilename, "BATTLESNDS\\bad%d_die.ogg", pSoldier->ubBattleSoundID ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\bad%d_die.mp3", pSoldier->ubBattleSoundID ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\bad%d_die.wav", pSoldier->ubBattleSoundID ); - } - } + sprintf( zFilename, "BATTLESNDS\\bad%d_die", pSoldier->ubBattleSoundID ); } else { - sprintf( zFilename, "BATTLESNDS\\bad%d_%s.ogg", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\bad%d_%s.mp3", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - if ( !FileExists( zFilename ) ) - { - sprintf( zFilename, "BATTLESNDS\\bad%d_%s.wav", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); - } - } + sprintf( zFilename, "BATTLESNDS\\bad%d_%s1", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); + + if ( !SoundFileExists( zFilename, zFilename_Used ) ) + sprintf( zFilename, "BATTLESNDS\\bad%d_%s2", pSoldier->ubBattleSoundID, gBattleSndsData[ubSoundID].zName ); } } } + if ( !SoundFileExists( zFilename, zFilename_Used ) ) + return FALSE; + // Play sound! memset( &spParms, 0xff, sizeof(SOUNDPARMS) ); @@ -11102,7 +11022,7 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe if ( gSoundProfileValue[pSoldier->ubProfile].EnabledSound == TRUE || pSoldier->ubProfile == NO_PROFILE ) { - if ( (uiSoundID = SoundPlay( zFilename, &spParms )) == SOUND_ERROR ) + if ( (uiSoundID = SoundPlay( zFilename_Used, &spParms )) == SOUND_ERROR ) { return(FALSE); } diff --git a/Utils/Music Control.cpp b/Utils/Music Control.cpp index 7b5efc9ef..e436ff89d 100644 --- a/Utils/Music Control.cpp +++ b/Utils/Music Control.cpp @@ -151,20 +151,13 @@ BOOLEAN MusicPlay(UINT32 uiNum) if ( NewSound == FALSE && MusicMode == MUSIC_OLD_TYPE ) { #endif - sprintf( zFileName, "%s.mp3", szMusicList[uiNum] ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "%s.ogg", szMusicList[uiNum] ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "%s.wav", szMusicList[uiNum] ); - } - } + SoundFileExists( szMusicList[uiNum], zFileName ); #ifdef NEWMUSIC } else if ( NewSound == TRUE ) { CHAR8 modstr[32] = ""; + CHAR8 modstr2[164] = ""; switch ( MusicMode ) { @@ -176,16 +169,10 @@ BOOLEAN MusicPlay(UINT32 uiNum) case MUSIC_TACTICAL_CREEPY_MUSIC: sprintf( modstr, "CREEPY_" ); break; default: break; } + + sprintf( modstr2, "%s\\%s%d", szMusicList[15], modstr, uiNum ); - sprintf( zFileName, "%s\\%s%d.ogg", szMusicList[15], modstr, uiNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "%s\\%s%d.wav", szMusicList[15], modstr, uiNum ); - if ( !FileExists( zFileName ) ) - { - sprintf( zFileName, "%s\\%s%d.mp3", szMusicList[15], modstr, uiNum ); - } - } + SoundFileExists( modstr2, zFileName ); } #endif uiMusicHandle = SoundPlayStreamedFile(zFileName, &spParms);