diff --git a/desktop_version/lang/ca/strings.xml b/desktop_version/lang/ca/strings.xml
index 0bc289cc..441dfbd9 100644
--- a/desktop_version/lang/ca/strings.xml
+++ b/desktop_version/lang/ca/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/de/strings.xml b/desktop_version/lang/de/strings.xml
index a51355a9..06ae62aa 100644
--- a/desktop_version/lang/de/strings.xml
+++ b/desktop_version/lang/de/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/en/strings.xml b/desktop_version/lang/en/strings.xml
index 43ca393d..1be77f6c 100644
--- a/desktop_version/lang/en/strings.xml
+++ b/desktop_version/lang/en/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/eo/strings.xml b/desktop_version/lang/eo/strings.xml
index d49c5211..352e30f9 100644
--- a/desktop_version/lang/eo/strings.xml
+++ b/desktop_version/lang/eo/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/es/strings.xml b/desktop_version/lang/es/strings.xml
index d576cc5c..00f6168a 100644
--- a/desktop_version/lang/es/strings.xml
+++ b/desktop_version/lang/es/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/fr/strings.xml b/desktop_version/lang/fr/strings.xml
index 98142709..96f4d6f0 100644
--- a/desktop_version/lang/fr/strings.xml
+++ b/desktop_version/lang/fr/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/it/strings.xml b/desktop_version/lang/it/strings.xml
index 5786d877..eb768a10 100644
--- a/desktop_version/lang/it/strings.xml
+++ b/desktop_version/lang/it/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/nl/strings.xml b/desktop_version/lang/nl/strings.xml
index 575cd9d9..18bfbcc2 100644
--- a/desktop_version/lang/nl/strings.xml
+++ b/desktop_version/lang/nl/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/pt_BR/strings.xml b/desktop_version/lang/pt_BR/strings.xml
index ea7a8ebb..393ce8fe 100644
--- a/desktop_version/lang/pt_BR/strings.xml
+++ b/desktop_version/lang/pt_BR/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/pt_PT/strings.xml b/desktop_version/lang/pt_PT/strings.xml
index 497f9e93..eb570743 100644
--- a/desktop_version/lang/pt_PT/strings.xml
+++ b/desktop_version/lang/pt_PT/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/ru/strings.xml b/desktop_version/lang/ru/strings.xml
index 4cefc76a..cdb79350 100644
--- a/desktop_version/lang/ru/strings.xml
+++ b/desktop_version/lang/ru/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/lang/tr/strings.xml b/desktop_version/lang/tr/strings.xml
index 38389b73..c0ba1de6 100644
--- a/desktop_version/lang/tr/strings.xml
+++ b/desktop_version/lang/tr/strings.xml
@@ -648,7 +648,10 @@
+
+
+
diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp
index 2d6c7dfa..9c42a635 100644
--- a/desktop_version/src/Game.cpp
+++ b/desktop_version/src/Game.cpp
@@ -442,6 +442,12 @@ void Game::clearcustomlevelstats(void)
void Game::updatecustomlevelstats(std::string clevel, int cscore)
{
+ if (!map.custommodeforreal)
+ {
+ /* We are playtesting, don't update level stats */
+ return;
+ }
+
if (clevel.find("levels/") != std::string::npos)
{
clevel = clevel.substr(7);
@@ -1573,6 +1579,14 @@ void Game::updatestate(void)
case 82:
//Time Trial Complete!
obj.removetrigger(82);
+#if !defined(NO_CUSTOM_LEVELS) && !defined(NO_EDITOR)
+ if (map.custommode && !map.custommodeforreal)
+ {
+ returntoeditor();
+ ed.show_note(loc::gettext("Time trial completed"));
+ break;
+ }
+#endif
if (translator_exploring)
{
translator_exploring_allowtele = true;
@@ -2151,6 +2165,7 @@ void Game::updatestate(void)
else
{
returntoeditor();
+ ed.show_note(loc::gettext("Level completed"));
}
#endif
}
@@ -7150,8 +7165,28 @@ static void hardreset(void)
script.hardreset();
}
+#if !defined(NO_CUSTOM_LEVELS) && !defined(NO_EDITOR)
+static void returntoeditor_callback(void)
+{
+ extern Game game;
+ game.returntoeditor();
+ ed.show_note(loc::gettext("Level quits to menu"));
+}
+#endif
+
void Game::quittomenu(void)
{
+#if !defined(NO_CUSTOM_LEVELS) && !defined(NO_EDITOR)
+ if (map.custommode && !map.custommodeforreal)
+ {
+ /* We are playtesting! Go back to the editor
+ * instead of losing unsaved changes. */
+ /* This needs to be deferred, otherwise some state would persist. */
+ DEFER_CALLBACK(returntoeditor_callback);
+ return;
+ }
+#endif
+
gamestate = TITLEMODE;
graphics.fademode = FADE_START_FADEIN;
FILESYSTEM_unmountAssets();