Fix lingering messages in HUD after loading savegame

If you save, you get a message like "Game Saved..." which goes away
after a few seconds. This happens at the very end of idPlayer::Save():
    if ( hud ) {
        hud->SetStateString( "message", /* .. left out .. */ );
        hud->HandleNamedEvent( "Message" );
    }
And handled in hud.gui, "onNamedEvent Message { ..."

However, if you save again before it's gone, it'll be shown after
loading the savegame and not go away until you save again..
This works around that issue by setting an empty message after loading
a savegame.

The underlying problem (which is not fixed!) seems to be that the
transition GUI command (that's executed when hud.gui handles the
"Message" event that's used to show this message) is probably not
properly saved/restored so fading out the message isn't continued
after loading.
This commit is contained in:
Daniel Gibson 2020-09-06 04:49:18 +02:00
parent 5e299aa5d4
commit 76086703ef
2 changed files with 14 additions and 0 deletions

View file

@ -2536,6 +2536,13 @@ void idPlayer::Restore( idRestoreGame *savefile ) {
savefile->ReadFloat( bloomSpeed );
savefile->ReadFloat( bloomIntensity );
#endif
// DG: workaround for lingering messages that are shown forever after loading a savegame
// (one way to get them is saving again, while the message from first save is still
// shown, and then load)
if ( hud ) {
hud->SetStateString( "message", "" );
}
}
/*

View file

@ -2063,6 +2063,13 @@ void idPlayer::Restore( idRestoreGame *savefile ) {
// create combat collision hull for exact collision detection
SetCombatModel();
// DG: workaround for lingering messages that are shown forever after loading a savegame
// (one way to get them is saving again, while the message from first save is still
// shown, and then load)
if ( hud ) {
hud->SetStateString( "message", "" );
}
}
/*