]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/map.cpp
forgot to check lightDeluxel for NULL here
[xonotic/netradiant.git] / radiant / map.cpp
index 7b8c570de4d5f54610ee5cfa7d6a24c9e6203fc5..572459907e56867d1e820a877da5c78dc226f7eb 100644 (file)
@@ -1643,6 +1643,13 @@ bool Map_ImportFile(const char* filename)
     goto tryDecompile;
 
   {
+    const MapFormat* format = NULL;
+    const char* moduleName = findModuleName(&GlobalFiletypes(), MapFormat::Name(), path_get_extension(filename));
+    if(string_not_empty(moduleName))
+      format = ReferenceAPI_getMapModules().findModule(moduleName);
+
+    if(format)
+      format->wrongFormat = false;
     Resource* resource = GlobalReferenceCache().capture(filename);
     resource->refresh(); // avoid loading old version if map has changed on disk since last import
     if(!resource->load())
@@ -1650,6 +1657,12 @@ bool Map_ImportFile(const char* filename)
       GlobalReferenceCache().release(filename);
       goto tryDecompile;
     }
+    if(format)
+      if(format->wrongFormat)
+      {
+        GlobalReferenceCache().release(filename);
+        goto tryDecompile;
+      }
     NodeSmartReference clone(NewMapRoot(""));
     Node_getTraversable(*resource->getNode())->traverse(CloneAll(clone));
     Map_gatherNamespaced(clone);
@@ -1681,7 +1694,7 @@ tryDecompile:
     output.push_string(gamename_get());
     output.push_string(" -convert -format ");
     output.push_string(Brush::m_type == eBrushTypeQuake3BP ? "map_bp" : "map");
-    output.push_string(" \"");
+    output.push_string(" -readmap \"");
     output.push_string(filename);
     output.push_string("\"");