11#include " driver_level.h"
2+ #include " regions_d2.h"
23#include " core/VirtualStream.h"
34#include " util/DkList.h"
45
@@ -13,7 +14,7 @@ char* g_overlayMapData = nullptr;
1314
1415CDriverLevelTextures g_levTextures;
1516CDriverLevelModels g_levModels;
16- CDriver2LevelMap g_levMap;
17+ CBaseLevelMap* g_levMap = nullptr ;
1718
1819// ---------------------------------------------------------------------------------------------------------------------------------
1920
@@ -117,7 +118,16 @@ void ProcessLumps(IVirtualStream* pFile)
117118 // perform auto-detection if format is not specified
118119 if (g_format == LEV_FORMAT_AUTODETECT)
119120 DetectLevelFormat (pFile);
120-
121+
122+ if (!g_levMap)
123+ {
124+ // failed to detect Driver 1 level file - try Driver 2 loader
125+ if (g_format >= LEV_FORMAT_DRIVER2_ALPHA16 || g_format == LEV_FORMAT_AUTODETECT)
126+ g_levMap = new CDriver2LevelMap ();
127+ // else
128+ // g_levMap = new CDriver1LevelMap();
129+ }
130+
121131 int lump_count = 255 ; // Driver 2 difference: you not need to read lump count
122132
123133 // Driver 1 has lump count
@@ -142,7 +152,7 @@ void ProcessLumps(IVirtualStream* pFile)
142152 break ;
143153 case LUMP_MAP:
144154 MsgWarning (" LUMP_MAP ofs=%d size=%d\n " , pFile->Tell (), lump.size );
145- g_levMap. LoadMapLump (pFile);
155+ g_levMap-> LoadMapLump (pFile);
146156 break ;
147157 case LUMP_TEXTURENAMES:
148158 MsgWarning (" LUMP_TEXTURENAMES ofs=%d size=%d\n " , pFile->Tell (), lump.size );
@@ -171,7 +181,7 @@ void ProcessLumps(IVirtualStream* pFile)
171181 break ;
172182 case LUMP_SPOOLINFO:
173183 MsgWarning (" LUMP_SPOOLINFO ofs=%d size=%d\n " , pFile->Tell (), lump.size );
174- g_levMap. LoadSpoolInfoLump (pFile);
184+ g_levMap-> LoadSpoolInfoLump (pFile);
175185 break ;
176186 case LUMP_STRAIGHTS2:
177187 MsgWarning (" LUMP_STRAIGHTS2 ofs=%d size=%d\n " , pFile->Tell (), lump.size );
@@ -322,7 +332,7 @@ void FreeLevelData()
322332 delete g_levStream;
323333 g_levStream = nullptr ;
324334
325- g_levMap. FreeAll ();
335+ g_levMap-> FreeAll ();
326336 g_levTextures.FreeAll ();
327337 g_levModels.FreeAll ();
328338
0 commit comments