]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
restore “open userGamePath/maps/” behavior when LastMapFolder unset
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 06c5f48cf3a47c16a1ecd01035211bbc216f712e..9b8e7f90b0abc6d746480f34148aae6b7c35ce53 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();