restore “open userGamePath/maps/” behavior when LastMapFolder unset 85/head
authorThomas Debesse <dev@illwieckz.net>
Mon, 5 Feb 2018 02:54:58 +0000 (03:54 +0100)
committerThomas Debesse <dev@illwieckz.net>
Tue, 2 Oct 2018 23:26:54 +0000 (01:26 +0200)
The former behavior when LastMapFolder was not implemented
was to try to open maps/ dir in userGamePath.

When LastMapFolder code was written the code only looked
for userGamePath, this is restoring that behavior,
mimicking the code for model opening that does the
same with userGamePath/models.

As an extra, it also fallback on userGamePath is maps/
is missing.

radiant/map.cpp

index 06c5f48..9b8e7f9 100644 (file)
@@ -59,6 +59,7 @@ MapModules &ReferenceAPI_getMapModules();
 #include "cmdlib.h"
 #include "stream/textfilestream.h"
 #include "os/path.h"
+#include "os/file.h"
 #include "uniquenames.h"
 #include "modulesystem/singletonmodule.h"
 #include "modulesystem/moduleregistry.h"
@@ -1945,7 +1946,13 @@ const char *getLastMapFolderPath()
     if (g_strLastMapFolder.empty()) {
         GlobalPreferenceSystem().registerPreference("LastMapFolder", make_property_string(g_strLastMapFolder));
         if (g_strLastMapFolder.empty()) {
-            g_strLastMapFolder = g_qeglobals.m_userGamePath;
+            StringOutputStream buffer(1024);
+            buffer << getMapsPath();
+            if (!file_readable(buffer.c_str())) {
+                buffer.clear();
+                buffer << g_qeglobals.m_userGamePath.c_str() << "/";
+            }
+            g_strLastMapFolder = buffer.c_str();
         }
     }
     return g_strLastMapFolder.c_str();