0ad/binaries/data/mods/public/gui/session/message_box/QuitConfirmation.js
Vantha 2520c45220 Only call Engine.EndGame right before closing
Since #7786, the GUI tick completed normally after calling
`closePageCallback` instead of being cancelled like previously. Since
`Engine.EndGame` deletes the internal `g_Game` pointer, every Engine call
after it that tried to access `g_Game` caused a segfault.
This patch solves it by moving `Engine.EndGame` to the very end, right
before closing the session page.
In order to follow the convention that only functions directly closing
the page are called `closePageCallback`, that function is in turn
renamed to `closeSession`. Additionally, this allows only resolving
the promise with a bool (`showSummary`) and then only calling
`getNextPageOpenRequest` at the end of `init` for reasons of simplicity.
2026-07-22 23:51:49 +02:00

34 lines
897 B
JavaScript

class QuitConfirmation extends SessionMessageBox
{
}
QuitConfirmation.prototype.Title =
translate("Confirmation");
QuitConfirmation.prototype.Caption =
translate("The game has finished, what do you want to do?");
QuitConfirmation.prototype.Buttons =
[
{
// Translation: Shown in the Dialog that shows up when the game finishes
"caption": translate("Stay"),
"onPress": resumeGame
},
{
// Translation: Shown in the Dialog that shows up when the game finishes
"caption": translate("Quit and View Summary"),
"onPress": function() { this.closeSession(true); }
},
{
// Translation: Shown in the Dialog that shows up when the game finishes
"caption": translate("Quit"),
"onPress": function() { this.closeSession(false); }
}
];
QuitConfirmation.prototype.Width = 600;
QuitConfirmation.prototype.Height = 200;
QuitConfirmation.prototype.ResumeOnClose = false;