- finish the implementation for nosectionmerge.

This commit is contained in:
Christoph Oelckers 2023-06-18 09:44:34 +02:00
parent 4538236a38
commit c675d60bac
3 changed files with 12 additions and 3 deletions

View file

@ -148,6 +148,7 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize,
else if(sc.Compare("Extended")) iwad->flags |= GI_MENUHACK_EXTENDED; else if(sc.Compare("Extended")) iwad->flags |= GI_MENUHACK_EXTENDED;
else if(sc.Compare("Shorttex")) iwad->flags |= GI_COMPATSHORTTEX; else if(sc.Compare("Shorttex")) iwad->flags |= GI_COMPATSHORTTEX;
else if(sc.Compare("Stairs")) iwad->flags |= GI_COMPATSTAIRS; else if(sc.Compare("Stairs")) iwad->flags |= GI_COMPATSTAIRS;
else if (sc.Compare("nosectionmerge")) iwad->flags |= GI_NOSECTIONMERGE;
else sc.ScriptError(NULL); else sc.ScriptError(NULL);
} }
while (sc.CheckString(",")); while (sc.CheckString(","));

View file

@ -51,6 +51,7 @@ enum
GI_COMPATPOLY1 = 0x00000040, // Hexen's MAP36 needs old polyobject drawing GI_COMPATPOLY1 = 0x00000040, // Hexen's MAP36 needs old polyobject drawing
GI_COMPATPOLY2 = 0x00000080, // so does HEXDD's MAP47 GI_COMPATPOLY2 = 0x00000080, // so does HEXDD's MAP47
GI_IGNORETITLEPATCHES = 0x00000200, // Ignore the map name graphics when not runnning in English language GI_IGNORETITLEPATCHES = 0x00000200, // Ignore the map name graphics when not runnning in English language
GI_NOSECTIONMERGE = 0x00000400, // For the original id IWADs: avoid merging sections due to how idbsp created its sectors.
}; };
#include "gametype.h" #include "gametype.h"

View file

@ -294,11 +294,18 @@ FName MapLoader::CheckCompatibility(MapData *map)
// When playing Doom IWAD levels force BCOMPATF_NOSECTIONMERGE, COMPAT_SHORTTEX and COMPATF_LIGHT. // When playing Doom IWAD levels force BCOMPATF_NOSECTIONMERGE, COMPAT_SHORTTEX and COMPATF_LIGHT.
// I'm not sure if the IWAD maps actually need COMPATF_LIGHT but it certainly does not hurt. // I'm not sure if the IWAD maps actually need COMPATF_LIGHT but it certainly does not hurt.
// TNT's MAP31 also needs COMPATF_STAIRINDEX but that only gets activated for TNT.WAD. // TNT's MAP31 also needs COMPATF_STAIRINDEX but that only gets activated for TNT.WAD.
if (fileSystem.GetFileContainer(map->lumpnum) == fileSystem.GetIwadNum() && (gameinfo.flags & GI_COMPATSHORTTEX) && Level->maptype == MAPTYPE_DOOM) if (fileSystem.GetFileContainer(map->lumpnum) == fileSystem.GetIwadNum())
{ {
Level->ii_compatflags = COMPATF_SHORTTEX|COMPATF_LIGHT; if ((gameinfo.flags & GI_COMPATSHORTTEX) && Level->maptype == MAPTYPE_DOOM)
{
Level->ii_compatflags = COMPATF_SHORTTEX | COMPATF_LIGHT;
if (gameinfo.flags & GI_COMPATSTAIRS) Level->ii_compatflags |= COMPATF_STAIRINDEX; if (gameinfo.flags & GI_COMPATSTAIRS) Level->ii_compatflags |= COMPATF_STAIRINDEX;
} }
if (gameinfo.flags & GI_NOSECTIONMERGE)
{
Level->ib_compatflags |= BCOMPATF_NOSECTIONMERGE;
}
}
map->GetChecksum(md5.Bytes); map->GetChecksum(md5.Bytes);