mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-25 13:51:43 +00:00
Merge branch '1281-several-patches-used-in-sol-sestancia-2-are-broken' into 'next'
Fix "Several patches used in Sol Sestancia 2 are broken" Closes #1281 See merge request STJr/SRB2!2501
This commit is contained in:
commit
556ed31b1f
2 changed files with 20 additions and 5 deletions
22
src/w_wad.c
22
src/w_wad.c
|
@ -1329,11 +1329,11 @@ UINT16 W_CheckNumForFolderStartPK3(const char *name, UINT16 wad, UINT16 startlum
|
||||||
/* SLADE is special and puts a single directory entry. Skip that. */
|
/* SLADE is special and puts a single directory entry. Skip that. */
|
||||||
if (strlen(lump_p->fullname) == name_length)
|
if (strlen(lump_p->fullname) == name_length)
|
||||||
i++;
|
i++;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return INT16_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
// In a PK3 type of resource file, it looks for the next lumpinfo entry that doesn't share the specified pathfile.
|
// In a PK3 type of resource file, it looks for the next lumpinfo entry that doesn't share the specified pathfile.
|
||||||
// Useful for finding folder ends.
|
// Useful for finding folder ends.
|
||||||
|
@ -1350,6 +1350,17 @@ UINT16 W_CheckNumForFolderEndPK3(const char *name, UINT16 wad, UINT16 startlump)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns 0 if the folder is not empty, 1 if it is empty, -1 if it doesn't exist
|
||||||
|
INT32 W_IsFolderEmpty(const char *name, UINT16 wad)
|
||||||
|
{
|
||||||
|
UINT16 start = W_CheckNumForFolderStartPK3(name, wad, 0);
|
||||||
|
if (start == INT16_MAX)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// Unlike W_CheckNumForFolderStartPK3, W_CheckNumForFolderEndPK3 doesn't return INT16_MAX.
|
||||||
|
return W_CheckNumForFolderEndPK3(name, wad, start) <= start;
|
||||||
|
}
|
||||||
|
|
||||||
char *W_GetLumpFolderPathPK3(UINT16 wad, UINT16 lump)
|
char *W_GetLumpFolderPathPK3(UINT16 wad, UINT16 lump)
|
||||||
{
|
{
|
||||||
const char *fullname = wadfiles[wad]->lumpinfo[lump].fullname;
|
const char *fullname = wadfiles[wad]->lumpinfo[lump].fullname;
|
||||||
|
@ -1692,7 +1703,7 @@ lumpnum_t W_GetNumForLongName(const char *name)
|
||||||
//
|
//
|
||||||
static UINT16 W_CheckNumForPatchNamePwad(const char *name, UINT16 wad, boolean longname)
|
static UINT16 W_CheckNumForPatchNamePwad(const char *name, UINT16 wad, boolean longname)
|
||||||
{
|
{
|
||||||
UINT16 i, start, end;
|
UINT16 i, start = INT16_MAX, end = INT16_MAX;
|
||||||
static char uname[8 + 1] = { 0 };
|
static char uname[8 + 1] = { 0 };
|
||||||
UINT32 hash = 0;
|
UINT32 hash = 0;
|
||||||
lumpinfo_t *lump_p;
|
lumpinfo_t *lump_p;
|
||||||
|
@ -1713,10 +1724,13 @@ static UINT16 W_CheckNumForPatchNamePwad(const char *name, UINT16 wad, boolean l
|
||||||
// When this situation changes, change the loops below to check for lumps INSIDE the namespaces to look in.
|
// When this situation changes, change the loops below to check for lumps INSIDE the namespaces to look in.
|
||||||
// TODO: cache namespace lump IDs
|
// TODO: cache namespace lump IDs
|
||||||
if (W_FileHasFolders(wadfiles[wad]))
|
if (W_FileHasFolders(wadfiles[wad]))
|
||||||
|
{
|
||||||
|
if (!W_IsFolderEmpty("Flats/", wad))
|
||||||
{
|
{
|
||||||
start = W_CheckNumForFolderStartPK3("Flats/", wad, 0);
|
start = W_CheckNumForFolderStartPK3("Flats/", wad, 0);
|
||||||
end = W_CheckNumForFolderEndPK3("Flats/", wad, start);
|
end = W_CheckNumForFolderEndPK3("Flats/", wad, start);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
start = W_CheckNumForMarkerStartPwad("F_START", wad, 0);
|
start = W_CheckNumForMarkerStartPwad("F_START", wad, 0);
|
||||||
|
|
|
@ -180,6 +180,7 @@ UINT16 W_CheckNumForMarkerStartPwad(const char *name, UINT16 wad, UINT16 startlu
|
||||||
UINT16 W_CheckNumForFullNamePK3(const char *name, UINT16 wad, UINT16 startlump);
|
UINT16 W_CheckNumForFullNamePK3(const char *name, UINT16 wad, UINT16 startlump);
|
||||||
UINT16 W_CheckNumForFolderStartPK3(const char *name, UINT16 wad, UINT16 startlump);
|
UINT16 W_CheckNumForFolderStartPK3(const char *name, UINT16 wad, UINT16 startlump);
|
||||||
UINT16 W_CheckNumForFolderEndPK3(const char *name, UINT16 wad, UINT16 startlump);
|
UINT16 W_CheckNumForFolderEndPK3(const char *name, UINT16 wad, UINT16 startlump);
|
||||||
|
INT32 W_IsFolderEmpty(const char *name, UINT16 wad);
|
||||||
char *W_GetLumpFolderPathPK3(UINT16 wad, UINT16 lump);
|
char *W_GetLumpFolderPathPK3(UINT16 wad, UINT16 lump);
|
||||||
char *W_GetLumpFolderNamePK3(UINT16 wad, UINT16 lump);
|
char *W_GetLumpFolderNamePK3(UINT16 wad, UINT16 lump);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue