Skip to content

Commit 6dfcb89

Browse files
bugfix: Prevent setGamePaused from resuming audio in init() and reset()
1 parent 60b6b58 commit 6dfcb89

File tree

4 files changed

+26
-26
lines changed

4 files changed

+26
-26
lines changed

Generals/Code/GameEngine/Include/GameLogic/GameLogic.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class GameLogic : public SubsystemInterface, public Snapshot
206206

207207
void setGamePausedInFrame( UnsignedInt frame, Bool disableLogicTimeScale );
208208
UnsignedInt getGamePauseFrame() const { return m_pauseFrame; }
209-
void setGamePaused( Bool paused, Bool pauseMusic = TRUE, Bool pauseInput = TRUE );
209+
void setGamePaused( Bool paused, Bool pauseMusic = TRUE, Bool pauseInput = TRUE, Bool allowResumeAudio = TRUE );
210210
Bool isGamePaused( void );
211211
Bool getInputEnabledMemory( void ) const { return m_inputEnabledMemory; }
212212

@@ -255,8 +255,8 @@ class GameLogic : public SubsystemInterface, public Snapshot
255255
void updateDisplayBusyState();
256256

257257
void pauseGameLogic(Bool paused);
258-
void pauseGameSound(Bool paused);
259-
void pauseGameMusic(Bool paused);
258+
void pauseGameSound(Bool paused, Bool allowResumeAudio);
259+
void pauseGameMusic(Bool paused, Bool allowResumeAudio);
260260
void pauseGameInput(Bool paused);
261261

262262
void pushSleepyUpdate(UpdateModulePtr u);

Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ void GameLogic::init( void )
404404
m_logicTimeScaleEnabledMemory = FALSE;
405405
m_inputEnabledMemory = TRUE;
406406
m_mouseVisibleMemory = TRUE;
407-
setGamePaused(FALSE);
407+
setGamePaused(FALSE, FALSE, FALSE, FALSE);
408408
m_pauseFrame = 0;
409409

410410
for(Int i = 0; i < MAX_SLOTS; ++i)
@@ -444,7 +444,7 @@ void GameLogic::reset( void )
444444
m_logicTimeScaleEnabledMemory = FALSE;
445445
m_inputEnabledMemory = TRUE;
446446
m_mouseVisibleMemory = TRUE;
447-
setGamePaused(FALSE);
447+
setGamePaused(FALSE, FALSE, FALSE, FALSE);
448448
m_pauseFrame = 0;
449449

450450
setFPMode();
@@ -3649,7 +3649,7 @@ UnsignedInt GameLogic::getCRC( Int mode, AsciiString deepCRCFileName )
36493649
void GameLogic::exitGame()
36503650
{
36513651
// TheSuperHackers @fix The logic update must not be halted to process the game exit message.
3652-
setGamePaused(FALSE);
3652+
setGamePaused(FALSE, TRUE, TRUE, FALSE);
36533653
TheScriptEngine->forceUnfreezeTime();
36543654
TheScriptEngine->doUnfreezeTime();
36553655

@@ -3727,7 +3727,7 @@ void GameLogic::setGamePausedInFrame( UnsignedInt frame, Bool disableLogicTimeSc
37273727

37283728
// ------------------------------------------------------------------------------------------------
37293729
// ------------------------------------------------------------------------------------------------
3730-
void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput )
3730+
void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput, Bool allowResumeAudio )
37313731
{
37323732
// We need to ignore an unpause called when we are unpaused or else:
37333733
// Mouse is hidden for some reason (script or something)
@@ -3743,8 +3743,8 @@ void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput )
37433743
// Set mouse the way it "was" <--- Was counting on right answer being set in Pause.
37443744

37453745
pauseGameLogic(paused);
3746-
pauseGameSound(paused);
3747-
pauseGameMusic(paused && pauseMusic);
3746+
pauseGameSound(paused, allowResumeAudio);
3747+
pauseGameMusic(paused && pauseMusic, allowResumeAudio);
37483748
pauseGameInput(paused && pauseInput);
37493749

37503750
updateDisplayBusyState();
@@ -3765,7 +3765,7 @@ void GameLogic::pauseGameLogic(Bool paused)
37653765

37663766
// ------------------------------------------------------------------------------------------------
37673767
// ------------------------------------------------------------------------------------------------
3768-
void GameLogic::pauseGameSound(Bool paused)
3768+
void GameLogic::pauseGameSound(Bool paused, Bool allowResumeAudio)
37693769
{
37703770
if(m_pauseSound == paused)
37713771
return;
@@ -3784,7 +3784,7 @@ void GameLogic::pauseGameSound(Bool paused)
37843784
drawable = drawable->getNextDrawable();
37853785
}
37863786
}
3787-
else
3787+
else if (allowResumeAudio)
37883788
{
37893789
TheAudio->resumeAudio((AudioAffect)(AudioAffect_All & ~AudioAffect_Music));
37903790

@@ -3800,7 +3800,7 @@ void GameLogic::pauseGameSound(Bool paused)
38003800

38013801
// ------------------------------------------------------------------------------------------------
38023802
// ------------------------------------------------------------------------------------------------
3803-
void GameLogic::pauseGameMusic(Bool paused)
3803+
void GameLogic::pauseGameMusic(Bool paused, Bool allowResumeAudio)
38043804
{
38053805
if(m_pauseMusic == paused)
38063806
return;
@@ -3811,7 +3811,7 @@ void GameLogic::pauseGameMusic(Bool paused)
38113811
{
38123812
TheAudio->pauseAudio(AudioAffect_Music);
38133813
}
3814-
else
3814+
else if (allowResumeAudio)
38153815
{
38163816
TheAudio->resumeAudio(AudioAffect_Music);
38173817
}

GeneralsMD/Code/GameEngine/Include/GameLogic/GameLogic.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class GameLogic : public SubsystemInterface, public Snapshot
221221

222222
void setGamePausedInFrame( UnsignedInt frame, Bool disableLogicTimeScale );
223223
UnsignedInt getGamePauseFrame() const { return m_pauseFrame; }
224-
void setGamePaused( Bool paused, Bool pauseMusic = TRUE, Bool pauseInput = TRUE );
224+
void setGamePaused( Bool paused, Bool pauseMusic = TRUE, Bool pauseInput = TRUE, Bool allowResumeAudio = TRUE);
225225
Bool isGamePaused( void );
226226
Bool getInputEnabledMemory( void ) const { return m_inputEnabledMemory; }
227227

@@ -273,8 +273,8 @@ class GameLogic : public SubsystemInterface, public Snapshot
273273
void updateDisplayBusyState();
274274

275275
void pauseGameLogic(Bool paused);
276-
void pauseGameSound(Bool paused);
277-
void pauseGameMusic(Bool paused);
276+
void pauseGameSound(Bool paused, Bool allowResumeAudio);
277+
void pauseGameMusic(Bool paused, Bool allowResumeAudio);
278278
void pauseGameInput(Bool paused);
279279

280280
void pushSleepyUpdate(UpdateModulePtr u);

GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ void GameLogic::init( void )
419419
m_logicTimeScaleEnabledMemory = FALSE;
420420
m_inputEnabledMemory = TRUE;
421421
m_mouseVisibleMemory = TRUE;
422-
setGamePaused(FALSE);
422+
setGamePaused(FALSE, FALSE, FALSE, FALSE);
423423
m_pauseFrame = 0;
424424

425425
for(Int i = 0; i < MAX_SLOTS; ++i)
@@ -457,7 +457,7 @@ void GameLogic::reset( void )
457457
m_logicTimeScaleEnabledMemory = FALSE;
458458
m_inputEnabledMemory = TRUE;
459459
m_mouseVisibleMemory = TRUE;
460-
setGamePaused(FALSE);
460+
setGamePaused(FALSE, FALSE, FALSE, FALSE);
461461
m_pauseFrame = 0;
462462

463463
setFPMode();
@@ -4201,7 +4201,7 @@ UnsignedInt GameLogic::getCRC( Int mode, AsciiString deepCRCFileName )
42014201
void GameLogic::exitGame()
42024202
{
42034203
// TheSuperHackers @fix The logic update must not be halted to process the game exit message.
4204-
setGamePaused(FALSE);
4204+
setGamePaused(FALSE, TRUE, TRUE, FALSE);
42054205
TheScriptEngine->forceUnfreezeTime();
42064206
TheScriptEngine->doUnfreezeTime();
42074207

@@ -4279,7 +4279,7 @@ void GameLogic::setGamePausedInFrame( UnsignedInt frame, Bool disableLogicTimeSc
42794279

42804280
// ------------------------------------------------------------------------------------------------
42814281
// ------------------------------------------------------------------------------------------------
4282-
void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput )
4282+
void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput, Bool allowResumeAudio)
42834283
{
42844284
// We need to ignore an unpause called when we are unpaused or else:
42854285
// Mouse is hidden for some reason (script or something)
@@ -4295,8 +4295,8 @@ void GameLogic::setGamePaused( Bool paused, Bool pauseMusic, Bool pauseInput )
42954295
// Set mouse the way it "was" <--- Was counting on right answer being set in Pause.
42964296

42974297
pauseGameLogic(paused);
4298-
pauseGameSound(paused);
4299-
pauseGameMusic(paused && pauseMusic);
4298+
pauseGameSound(paused, allowResumeAudio);
4299+
pauseGameMusic(paused && pauseMusic, allowResumeAudio);
43004300
pauseGameInput(paused && pauseInput);
43014301

43024302
updateDisplayBusyState();
@@ -4317,7 +4317,7 @@ void GameLogic::pauseGameLogic(Bool paused)
43174317

43184318
// ------------------------------------------------------------------------------------------------
43194319
// ------------------------------------------------------------------------------------------------
4320-
void GameLogic::pauseGameSound(Bool paused)
4320+
void GameLogic::pauseGameSound(Bool paused, Bool allowResumeAudio)
43214321
{
43224322
if(m_pauseSound == paused)
43234323
return;
@@ -4342,7 +4342,7 @@ void GameLogic::pauseGameSound(Bool paused)
43424342
}
43434343
#endif
43444344
}
4345-
else
4345+
else if (allowResumeAudio)
43464346
{
43474347
TheAudio->resumeAudio((AudioAffect)(AudioAffect_All & ~AudioAffect_Music));
43484348

@@ -4360,7 +4360,7 @@ void GameLogic::pauseGameSound(Bool paused)
43604360

43614361
// ------------------------------------------------------------------------------------------------
43624362
// ------------------------------------------------------------------------------------------------
4363-
void GameLogic::pauseGameMusic(Bool paused)
4363+
void GameLogic::pauseGameMusic(Bool paused, Bool allowResumeAudio)
43644364
{
43654365
if(m_pauseMusic == paused)
43664366
return;
@@ -4371,7 +4371,7 @@ void GameLogic::pauseGameMusic(Bool paused)
43714371
{
43724372
TheAudio->pauseAudio(AudioAffect_Music);
43734373
}
4374-
else
4374+
else if (allowResumeAudio)
43754375
{
43764376
TheAudio->resumeAudio(AudioAffect_Music);
43774377
}

0 commit comments

Comments
 (0)