Index: binaries/data/mods/_test.gui/gui/regainFocus/pushWithPopOnInit.js
===================================================================
--- binaries/data/mods/_test.gui/gui/regainFocus/pushWithPopOnInit.js
+++ binaries/data/mods/_test.gui/gui/regainFocus/pushWithPopOnInit.js
@@ -1 +1 @@
-Engine.PushGuiPage("regainFocus/page_emptyPage.xml", {}, () => Engine.PopGuiPage());
+Engine.RunGuiPage("regainFocus/page_emptyPage.xml").then(Engine.PopGuiPage.bind(Engine));
Index: binaries/data/mods/_test.scriptinterface/promises/simple.js
===================================================================
--- /dev/null
+++ binaries/data/mods/_test.scriptinterface/promises/simple.js
@@ -0,0 +1,33 @@
+var test = 0;
+
+function incrementTest()
+{
+ test += 1;
+}
+
+async function waitAndIncrement(promise)
+{
+ await promise;
+ incrementTest();
+}
+
+function runTest()
+{
+ var rsv;
+ let prom = new Promise((resolve, reject) => {
+ incrementTest();
+ rsv = resolve;
+ });
+ waitAndIncrement(prom);
+ TS_ASSERT_EQUALS(test, 1);
+ rsv();
+ // At this point, waitAndIncrement is still not run, but is now free to run.
+ TS_ASSERT_EQUALS(test, 1);
+}
+
+runTest();
+
+function endTest()
+{
+ TS_ASSERT_EQUALS(test, 2);
+}
Index: binaries/data/mods/mod/gui/common/functions_msgbox.js
===================================================================
--- binaries/data/mods/mod/gui/common/functions_msgbox.js
+++ binaries/data/mods/mod/gui/common/functions_msgbox.js
@@ -1,24 +1,23 @@
-function messageBox(mbWidth, mbHeight, mbMessage, mbTitle, mbButtonCaptions, mbBtnCode, mbCallbackArgs)
+async function messageBox(mbWidth, mbHeight, mbMessage, mbTitle, mbButtonCaptions, mbBtnCode,
+ mbCallbackArgs)
{
- Engine.PushGuiPage(
- "page_msgbox.xml",
+ const btnCode = await Engine.RunGuiPage("page_msgbox.xml",
{
"width": mbWidth,
"height": mbHeight,
"message": mbMessage,
"title": mbTitle,
"buttonCaptions": mbButtonCaptions
- },
- btnCode => {
- if (mbBtnCode !== undefined && mbBtnCode[btnCode])
- mbBtnCode[btnCode](mbCallbackArgs ? mbCallbackArgs[btnCode] : undefined);
- });
+ })
+
+ if (mbBtnCode !== undefined && mbBtnCode[btnCode])
+ mbBtnCode[btnCode](mbCallbackArgs ? mbCallbackArgs[btnCode] : undefined);
}
-function timedConfirmation(width, height, message, timeParameter, timeout, title, buttonCaptions, btnCode, callbackArgs)
+async function timedConfirmation(width, height, message, timeParameter, timeout, title, buttonCaptions,
+ btnCode, callbackArgs)
{
- Engine.PushGuiPage(
- "page_timedconfirmation.xml",
+ const button = await Engine.RunGuiPage("page_timedconfirmation.xml",
{
"width": width,
"height": height,
@@ -27,22 +26,15 @@
"timeout": timeout,
"title": title,
"buttonCaptions": buttonCaptions
- },
- button => {
- if (btnCode !== undefined && btnCode[button])
- btnCode[button](callbackArgs ? callbackArgs[button] : undefined);
});
+
+ if (btnCode !== undefined && btnCode[button])
+ btnCode[button](callbackArgs ? callbackArgs[button] : undefined);
}
-function colorMixer(color, callback)
+function colorMixer(color)
{
- Engine.PushGuiPage(
- "page_colormixer.xml",
- color,
- result => {
- callback(result);
- }
- );
+ return Engine.RunGuiPage("page_colormixer.xml", color)
}
function openURL(url)
Index: binaries/data/mods/mod/gui/common/terms.js
===================================================================
--- binaries/data/mods/mod/gui/common/terms.js
+++ binaries/data/mods/mod/gui/common/terms.js
@@ -5,10 +5,9 @@
g_Terms = terms;
}
-function openTerms(page)
+async function openTerms(page)
{
- Engine.PushGuiPage(
- "page_termsdialog.xml",
+ const data = await Engine.RunGuiPage("page_termsdialog.xml",
{
"file": g_Terms[page].file,
"title": g_Terms[page].title,
@@ -16,19 +15,15 @@
"urlButtons": g_Terms[page].urlButtons || [],
"termsURL": g_Terms[page].termsURL || undefined,
"page": page
- },
- data => {
- g_Terms[data.page].accepted = data.accepted;
-
- Engine.ConfigDB_CreateAndSaveValue(
- "user",
- g_Terms[data.page].config,
- data.accepted ? getTermsHash(data.page) : "0");
-
- if (g_Terms[data.page].callback)
- g_Terms[data.page].callback(data);
- }
- );
+ })
+
+ g_Terms[data.page].accepted = data.accepted;
+
+ Engine.ConfigDB_CreateAndSaveValue("user", g_Terms[data.page].config,
+ data.accepted ? getTermsHash(data.page) : "0");
+
+ if (g_Terms[data.page].callback)
+ g_Terms[data.page].callback(data);
}
function checkTerms()
Index: binaries/data/mods/mod/gui/modmod/modmod.js
===================================================================
--- binaries/data/mods/mod/gui/modmod/modmod.js
+++ binaries/data/mods/mod/gui/modmod/modmod.js
@@ -84,7 +84,7 @@
initMods();
initGUIButtons(data);
if (g_HasIncompatibleMods)
- Engine.PushGuiPage("page_incompatible_mods.xml", {});
+ Engine.RunGuiPage("page_incompatible_mods.xml");
}
function initMods()
Index: binaries/data/mods/mod/gui/modmod/modmod.xml
===================================================================
--- binaries/data/mods/mod/gui/modmod/modmod.xml
+++ binaries/data/mods/mod/gui/modmod/modmod.xml
@@ -200,7 +200,7 @@
-
+