************************************************************

* Merged Source Code from Development Trunk: Revision 4063 *
************************************************************
- Source Code is merged from: https://81.169.133.124/source/ja2/branches/Wanne/JA2%201.13%20MP
- This will be the Source for the Beta 2011 Test

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4064 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2011-01-18 09:11:09 +00:00
parent 44e1646410
commit 91087ca8c0
469 changed files with 118108 additions and 24678 deletions
+212 -174
View File
@@ -14,27 +14,36 @@
#include "fade screen.h"
#endif
extern int iScreenMode;
//extern int iScreenMode;
UINT32 uiMusicHandle=NO_SAMPLE;
UINT32 uiMusicVolume=50;
BOOLEAN fMusicPlaying=FALSE;
BOOLEAN fMusicFadingOut=FALSE;
BOOLEAN fMusicFadingIn=FALSE;
static UINT32 uiMusicHandle = NO_SAMPLE;
static BOOLEAN fMusicPlaying = FALSE;
BOOLEAN gfMusicEnded = FALSE;
static BOOLEAN fMusicFadingOut = FALSE;
static BOOLEAN fMusicFadingIn = FALSE;
static UINT32 uiMusicVolume = 50;
UINT8 gubMusicMode = 0;
UINT8 gubOldMusicMode = 0;
static BOOLEAN gfMusicEnded = FALSE;
INT8 gbVictorySongCount = 0;
INT8 gbDeathSongCount = 0;
static UINT8 gubMusicMode = 0;
INT8 bNothingModeSong;
INT8 bEnemyModeSong;
INT8 bBattleModeSong;
static UINT8 gubOldMusicMode = 0;
static INT8 gbVictorySongCount = 0;
static INT8 gbDeathSongCount = 0;
static INT8 bNothingModeSong;
static INT8 bEnemyModeSong;
static INT8 bBattleModeSong;
static BOOLEAN gfUseCreatureMusic = FALSE;
static INT8 gbFadeSpeed = 1;
static BOOLEAN gfDontRestartSong = FALSE;
// unused
//BOOLEAN gfForceMusicToTense = FALSE;
INT8 gbFadeSpeed = 1;
CHAR8 *szMusicList[NUM_MUSIC]=
{
@@ -55,39 +64,40 @@ CHAR8 *szMusicList[NUM_MUSIC]=
"MUSIC\\creature battle.wav",
};
BOOLEAN gfForceMusicToTense = FALSE;
BOOLEAN gfDontRestartSong = FALSE;
BOOLEAN StartMusicBasedOnMode(void);
void DoneFadeOutDueToEndMusic(void);
void MusicStopCallback(void *pData);
BOOLEAN MusicStop(void);
BOOLEAN MusicFadeOut(void);
BOOLEAN MusicFadeIn(void);
BOOLEAN StartMusicBasedOnMode( );
void DoneFadeOutDueToEndMusic( void );
extern void HandleEndDemoInCreatureLevel( );
//extern void HandleEndDemoInCreatureLevel( );
//BOOLEAN NoEnemiesInSight( )
//{
// SOLDIERTYPE *pSoldier;
// INT32 cnt;
//
// // Loop through our guys
// // End the turn of player charactors
// cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
//
// // look for all mercs on the same team,
// for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ )
// {
// if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
// {
// if ( pSoldier->aiData.bOppCnt != 0 )
// {
// return( FALSE );
// }
// }
// }
//
// return( TRUE );
//}
BOOLEAN NoEnemiesInSight( )
{
SOLDIERTYPE *pSoldier;
INT32 cnt;
// Loop through our guys
// End the turn of player charactors
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// look for all mercs on the same team,
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ )
{
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
{
if ( pSoldier->aiData.bOppCnt != 0 )
{
return( FALSE );
}
}
}
return( TRUE );
}
void MusicStopCallback( void *pData );
//********************************************************************************
// MusicPlay
@@ -109,28 +119,28 @@ BOOLEAN MusicPlay(UINT32 uiNum)
MusicStop();
memset(&spParms, 0xff, sizeof(SOUNDPARMS));
spParms.uiPriority=PRIORITY_MAX;
spParms.uiVolume=0;
spParms.uiLoop=1; // Lesh: only 1 line added
spParms.uiPriority = PRIORITY_MAX;
spParms.uiVolume = 0;
spParms.uiLoop = 1; // Lesh: only 1 line added
spParms.EOSCallback = MusicStopCallback;
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "About to call SoundPlayStreamedFile" );
uiMusicHandle=SoundPlayStreamedFile(szMusicList[uiNum], &spParms);
uiMusicHandle = SoundPlayStreamedFile(szMusicList[uiNum], &spParms);
if(uiMusicHandle!=SOUND_ERROR)
if(uiMusicHandle != SOUND_ERROR)
{
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music PLay %d %d", uiMusicHandle, gubMusicMode ) );
gfMusicEnded = FALSE;
fMusicPlaying=TRUE;
gfMusicEnded = FALSE;
fMusicPlaying = TRUE;
MusicFadeIn();
return(TRUE);
return TRUE;
}
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music PLay %d %d", uiMusicHandle, gubMusicMode ) );
return(FALSE);
return FALSE;
}
//********************************************************************************
@@ -149,32 +159,31 @@ BOOLEAN MusicSetVolume(UINT32 uiVolume)
//if( 1==iScreenMode ) /* on Windowed mode, skip the music? was coded for WINDOWED_MODE that way...*/
//return FALSE;
uiMusicVolume = __min(uiVolume, 127);
uiMusicVolume=__min(uiVolume, 127);
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
// get volume and if 0 stop music!
if ( uiMusicVolume == 0 )
{
gfDontRestartSong = TRUE;
MusicStop( );
return( TRUE );
}
// get volume and if 0 stop music!
if (uiMusicVolume == 0)
{
gfDontRestartSong = TRUE;
MusicStop();
return TRUE;
}
SoundSetVolume(uiMusicHandle, uiMusicVolume);
return(TRUE);
return TRUE;
}
// If here, check if we need to re-start music
// Have we re-started?
if ( uiMusicVolume > 0 && uiOldMusicVolume == 0 )
if (uiMusicVolume > 0 && uiOldMusicVolume == 0)
{
StartMusicBasedOnMode( );
StartMusicBasedOnMode();
}
return(FALSE);
return FALSE;
}
//********************************************************************************
@@ -187,7 +196,7 @@ BOOLEAN MusicSetVolume(UINT32 uiVolume)
//********************************************************************************
UINT32 MusicGetVolume(void)
{
return(uiMusicVolume);
return uiMusicVolume;
}
//********************************************************************************
@@ -198,25 +207,24 @@ UINT32 MusicGetVolume(void)
// Returns: TRUE if the music was stopped, FALSE if an error occurred
//
//********************************************************************************
BOOLEAN MusicStop(void)
static BOOLEAN MusicStop(void)
{
// WANNE: We want music in windowed mode
//if( 1==iScreenMode ) /* on Windowed mode, skip the music? was coded for WINDOWED_MODE that way...*/
// return(FALSE);
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music Stop %d %d", uiMusicHandle, gubMusicMode ) );
SoundStop(uiMusicHandle);
fMusicPlaying=FALSE;
fMusicPlaying = FALSE;
uiMusicHandle = NO_SAMPLE;
return(TRUE);
return TRUE;
}
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music Stop %d %d", uiMusicHandle, gubMusicMode ) );
return(FALSE);
return FALSE;
}
//********************************************************************************
@@ -227,14 +235,14 @@ BOOLEAN MusicStop(void)
// Returns: TRUE if the music has begun fading, FALSE if an error occurred
//
//********************************************************************************
BOOLEAN MusicFadeOut(void)
static BOOLEAN MusicFadeOut(void)
{
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
fMusicFadingOut=TRUE;
return(TRUE);
fMusicFadingOut = TRUE;
return TRUE;
}
return(FALSE);
return FALSE;
}
//********************************************************************************
@@ -245,14 +253,14 @@ BOOLEAN MusicFadeOut(void)
// Returns: TRUE if the music has begun fading in, FALSE if an error occurred
//
//********************************************************************************
BOOLEAN MusicFadeIn(void)
static BOOLEAN MusicFadeIn(void)
{
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
fMusicFadingIn=TRUE;
return(TRUE);
fMusicFadingIn = TRUE;
return TRUE;
}
return(FALSE);
return FALSE;
}
//********************************************************************************
@@ -264,7 +272,7 @@ BOOLEAN MusicFadeIn(void)
// Returns: TRUE always
//
//********************************************************************************
BOOLEAN MusicPoll( BOOLEAN fForce )
BOOLEAN MusicPoll(BOOLEAN /*fForce*/)
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll");
@@ -281,99 +289,96 @@ BOOLEAN MusicPoll( BOOLEAN fForce )
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Handle Sound every sound overhead time");
// Handle Sound every sound overhead time....
if ( COUNTERDONE( MUSICOVERHEAD ) )
if (COUNTERDONE(MUSICOVERHEAD))
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Reset counter");
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: Reset counter");
// Reset counter
RESETCOUNTER( MUSICOVERHEAD );
RESETCOUNTER(MUSICOVERHEAD);
if(fMusicFadingIn)
if (fMusicFadingIn)
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music fading in");
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
iVol=SoundGetVolume(uiMusicHandle);
iVol=__min( (INT32)uiMusicVolume, iVol+gbFadeSpeed );
iVol = SoundGetVolume(uiMusicHandle);
iVol = __min( (INT32)uiMusicVolume, iVol+gbFadeSpeed );
SoundSetVolume(uiMusicHandle, iVol);
if(iVol==(INT32)uiMusicVolume)
if(iVol == (INT32)uiMusicVolume)
{
fMusicFadingIn=FALSE;
fMusicFadingIn = FALSE;
gbFadeSpeed = 1;
}
}
}
else if(fMusicFadingOut)
else if (fMusicFadingOut)
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music fading out");
if(uiMusicHandle!=NO_SAMPLE)
if(uiMusicHandle != NO_SAMPLE)
{
iVol=SoundGetVolume(uiMusicHandle);
iVol=(iVol >=1)? iVol-gbFadeSpeed : 0;
iVol = SoundGetVolume(uiMusicHandle);
iVol = (iVol >=1)? iVol-gbFadeSpeed : 0;
iVol=__max( (INT32)iVol, 0 );
iVol = __max( (INT32)iVol, 0 );
SoundSetVolume(uiMusicHandle, iVol);
if(iVol==0)
if(iVol == 0)
{
MusicStop();
fMusicFadingOut=FALSE;
fMusicFadingOut = FALSE;
gbFadeSpeed = 1;
}
}
}
//#endif
if ( gfMusicEnded )
if (gfMusicEnded)
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: music ended");
// OK, based on our music mode, play another!
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music End Loop %d %d", uiMusicHandle, gubMusicMode ) );
// If we were in victory mode, change!
if ( gbVictorySongCount == 1 || gbDeathSongCount == 1 )
if (gbVictorySongCount == 1 || gbDeathSongCount == 1)
{
if ( gbDeathSongCount == 1 && guiCurrentScreen == GAME_SCREEN )
if (gbDeathSongCount == 1 && guiCurrentScreen == GAME_SCREEN)
{
CheckAndHandleUnloadingOfCurrentWorld();
}
if ( gbVictorySongCount == 1 )
if (gbVictorySongCount == 1)
{
SetMusicMode( MUSIC_TACTICAL_NOTHING );
SetMusicMode(MUSIC_TACTICAL_NOTHING);
}
}
else
{
if ( !gfDontRestartSong )
if (!gfDontRestartSong)
{
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll: don't restart song, StartMusicBasedOnMode");
StartMusicBasedOnMode( );
StartMusicBasedOnMode();
}
}
gfMusicEnded = FALSE;
gfDontRestartSong = FALSE;
gfDontRestartSong = FALSE;
}
}
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"MusicPoll done");
return(TRUE);
return TRUE;
}
BOOLEAN SetMusicMode( UINT8 ubMusicMode )
static BOOLEAN SetMusicMode(UINT8 ubMusicMode, BOOLEAN fForce)
{
static INT8 bPreviousMode = 0;
// OK, check if we want to restore
if ( ubMusicMode == MUSIC_RESTORE )
if (ubMusicMode == MUSIC_RESTORE)
{
if ( bPreviousMode == MUSIC_TACTICAL_VICTORY || bPreviousMode == MUSIC_TACTICAL_DEATH )
{
bPreviousMode = MUSIC_TACTICAL_NOTHING;
}
if (bPreviousMode == MUSIC_TACTICAL_VICTORY || bPreviousMode == MUSIC_TACTICAL_DEATH)
{
bPreviousMode = MUSIC_TACTICAL_NOTHING;
}
ubMusicMode = bPreviousMode;
}
@@ -384,7 +389,7 @@ BOOLEAN SetMusicMode( UINT8 ubMusicMode )
}
// if different, start a new music song
if ( gubOldMusicMode != ubMusicMode )
if (fForce || gubOldMusicMode != ubMusicMode)
{
// Set mode....
gubMusicMode = ubMusicMode;
@@ -394,108 +399,106 @@ BOOLEAN SetMusicMode( UINT8 ubMusicMode )
gbVictorySongCount = 0;
gbDeathSongCount = 0;
if(uiMusicHandle!=NO_SAMPLE )
if(uiMusicHandle != NO_SAMPLE)
{
// Fade out old music
MusicFadeOut( );
MusicFadeOut();
}
else
{
// Change music!
StartMusicBasedOnMode( );
StartMusicBasedOnMode();
}
}
gubOldMusicMode = gubMusicMode;
return( TRUE );
return TRUE;
}
BOOLEAN StartMusicBasedOnMode( )
static BOOLEAN StartMusicBasedOnMode(void)
{
static BOOLEAN fFirstTime = TRUE;
if ( fFirstTime )
if (fFirstTime)
{
fFirstTime = FALSE;
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random( 4 ));
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random( 3 ));
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random( 2 ));
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random(4));
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random(3));
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random(2));
}
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "StartMusicBasedOnMode() %d %d", uiMusicHandle, gubMusicMode ) );
// Setup a song based on mode we're in!
switch( gubMusicMode )
switch(gubMusicMode)
{
case MUSIC_MAIN_MENU:
// ATE: Don't fade in
gbFadeSpeed = (INT8)uiMusicVolume;
MusicPlay( MENUMIX_MUSIC );
MusicPlay(MENUMIX_MUSIC);
break;
case MUSIC_LAPTOP:
gbFadeSpeed = (INT8)uiMusicVolume;
MusicPlay( MARIMBAD2_MUSIC );
MusicPlay(MARIMBAD2_MUSIC);
break;
case MUSIC_TACTICAL_NOTHING:
// ATE: Don't fade in
gbFadeSpeed = (INT8)uiMusicVolume;
if( gfUseCreatureMusic )
if(gfUseCreatureMusic)
{
MusicPlay( CREEPY_MUSIC );
MusicPlay(CREEPY_MUSIC);
}
else
{
MusicPlay( bNothingModeSong );
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random( 4 ) );
MusicPlay(bNothingModeSong);
bNothingModeSong = (INT8) (NOTHING_A_MUSIC + Random(4));
}
break;
case MUSIC_TACTICAL_ENEMYPRESENT:
// ATE: Don't fade in EnemyPresent...
gbFadeSpeed = (INT8)uiMusicVolume;
if( gfUseCreatureMusic )
if(gfUseCreatureMusic)
{
MusicPlay( CREEPY_MUSIC );
MusicPlay(CREEPY_MUSIC);
}
else
{
MusicPlay( bEnemyModeSong );
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random( 3 ));
MusicPlay(bEnemyModeSong);
bEnemyModeSong = (INT8) (TENSOR_A_MUSIC + Random(3));
}
break;
case MUSIC_TACTICAL_BATTLE:
// ATE: Don't fade in
gbFadeSpeed = (INT8)uiMusicVolume;
if( gfUseCreatureMusic )
if(gfUseCreatureMusic)
{
MusicPlay( CREATURE_BATTLE_MUSIC );
MusicPlay(CREATURE_BATTLE_MUSIC);
}
else
{
MusicPlay( bBattleModeSong );
MusicPlay(bBattleModeSong);
}
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random( 2 ));
bBattleModeSong = (INT8) (BATTLE_A_MUSIC + Random(2));
break;
case MUSIC_TACTICAL_VICTORY:
// ATE: Don't fade in EnemyPresent...
gbFadeSpeed = (INT8)uiMusicVolume;
MusicPlay( TRIUMPH_MUSIC );
MusicPlay(TRIUMPH_MUSIC);
gbVictorySongCount++;
if( gfUseCreatureMusic && !gbWorldSectorZ )
{ //We just killed all the creatures that just attacked the town.
if(gfUseCreatureMusic && !gbWorldSectorZ)
{
//We just killed all the creatures that just attacked the town.
gfUseCreatureMusic = FALSE;
}
break;
@@ -504,55 +507,90 @@ BOOLEAN StartMusicBasedOnMode( )
// ATE: Don't fade in EnemyPresent...
gbFadeSpeed = (INT8)uiMusicVolume;
MusicPlay( DEATH_MUSIC );
MusicPlay(DEATH_MUSIC);
gbDeathSongCount++;
break;
default:
MusicFadeOut( );
MusicFadeOut();
break;
}
return( TRUE );
return TRUE;
}
BOOLEAN SetMusicMode(UINT8 ubMusicMode)
{
return SetMusicMode(ubMusicMode, FALSE);
}
void MusicStopCallback( void *pData )
static void MusicStopCallback(void *pData)
{
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Music EndCallback %d %d", uiMusicHandle, gubMusicMode ) );
gfMusicEnded = TRUE;
gfMusicEnded = TRUE;
uiMusicHandle = NO_SAMPLE;
//DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "Music EndCallback completed" );
}
void SetMusicFadeSpeed( INT8 bFadeSpeed )
void SetMusicFadeSpeed(INT8 bFadeSpeed)
{
gbFadeSpeed = bFadeSpeed;
}
void FadeMusicForXSeconds( UINT32 uiDelay )
UINT8 GetMusicMode(void)
{
INT16 sNumTimeSteps, sNumVolumeSteps;
// get # time steps in delay....
sNumTimeSteps = (INT16)( uiDelay / 10 );
// Devide this by music volume...
sNumVolumeSteps = (INT16)( uiMusicVolume / sNumTimeSteps );
// Set fade delay...
SetMusicFadeSpeed( (INT8)sNumVolumeSteps );
return gubMusicMode;
}
void DoneFadeOutDueToEndMusic( void )
BOOLEAN UsingCreatureMusic(void)
{
// Quit game....
InternalLeaveTacticalScreen( MAINMENU_SCREEN );
//SetPendingNewScreen( MAINMENU_SCREEN );
return gfUseCreatureMusic;
}
void UseCreatureMusic(BOOLEAN fUseCreatureMusic)
{
if (gfUseCreatureMusic != fUseCreatureMusic)
{
// this means a change
gfUseCreatureMusic = fUseCreatureMusic;
SetMusicMode(gubMusicMode, TRUE); // same as before
}
}
BOOLEAN IsMusicPlaying(void)
{
return fMusicPlaying;
}
UINT32 GetMusicHandle(void)
{
return uiMusicHandle;
}
// unused
//void FadeMusicForXSeconds( UINT32 uiDelay )
//{
// INT16 sNumTimeSteps, sNumVolumeSteps;
//
// // get # time steps in delay....
// sNumTimeSteps = (INT16)( uiDelay / 10 );
//
// // Devide this by music volume...
// sNumVolumeSteps = (INT16)( uiMusicVolume / sNumTimeSteps );
//
// // Set fade delay...
// SetMusicFadeSpeed( (INT8)sNumVolumeSteps );
//}
// unused
//void DoneFadeOutDueToEndMusic( void )
//{
// // Quit game....
// InternalLeaveTacticalScreen( MAINMENU_SCREEN );
// //SetPendingNewScreen( MAINMENU_SCREEN );
//}