mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Load multiple musicdef lumps from a single wad
This commit is contained in:
parent
e7051737d7
commit
d896fee2e5
1 changed files with 56 additions and 38 deletions
|
|
@ -1602,25 +1602,37 @@ musicdef_t *musicdefstart = NULL;
|
||||||
struct cursongcredit cursongcredit; // Currently displayed song credit info
|
struct cursongcredit cursongcredit; // Currently displayed song credit info
|
||||||
int musicdef_volume;
|
int musicdef_volume;
|
||||||
|
|
||||||
//
|
static boolean
|
||||||
// search for music definition in wad
|
MusicDefError
|
||||||
//
|
(
|
||||||
static UINT16 W_CheckForMusicDefInPwad(UINT16 wadid)
|
alerttype_t level,
|
||||||
{
|
const char * description,
|
||||||
UINT16 i;
|
const char * field,
|
||||||
lumpinfo_t *lump_p;
|
lumpnum_t lumpnum,
|
||||||
|
int line
|
||||||
|
){
|
||||||
|
const wadfile_t * wad = wadfiles[WADFILENUM (lumpnum)];
|
||||||
|
const lumpinfo_t * lump = &wad->lumpinfo[LUMPNUM (lumpnum)];
|
||||||
|
|
||||||
lump_p = wadfiles[wadid]->lumpinfo;
|
CONS_Alert(level,
|
||||||
for (i = 0; i < wadfiles[wadid]->numlumps; i++, lump_p++)
|
va("%%s|%%s: %s (line %%d)\n", description),
|
||||||
if (memcmp(lump_p->name, "MUSICDEF", 8) == 0)
|
wad->filename,
|
||||||
return i;
|
lump->fullname,
|
||||||
|
field,
|
||||||
|
line
|
||||||
|
);
|
||||||
|
|
||||||
return INT16_MAX; // not found
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
ReadMusicDefFields
|
||||||
{
|
(
|
||||||
|
lumpnum_t lumpnum,
|
||||||
|
int line,
|
||||||
|
char * stoken,
|
||||||
|
musicdef_t ** defp
|
||||||
|
){
|
||||||
musicdef_t *def;
|
musicdef_t *def;
|
||||||
|
|
||||||
char *value;
|
char *value;
|
||||||
|
|
@ -1631,10 +1643,9 @@ ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
||||||
value = strtok(NULL, " ");
|
value = strtok(NULL, " ");
|
||||||
if (!value)
|
if (!value)
|
||||||
{
|
{
|
||||||
CONS_Alert(CONS_WARNING,
|
return MusicDefError(CONS_WARNING,
|
||||||
"MUSICDEF: Field '%s' is missing name. (file %s, line %d)\n",
|
"Field '%'s is missing name.",
|
||||||
stoken, wadfiles[wadnum]->filename, line);
|
stoken, lumpnum, line);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1678,10 +1689,9 @@ ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
||||||
|
|
||||||
if (!value)
|
if (!value)
|
||||||
{
|
{
|
||||||
CONS_Alert(CONS_WARNING,
|
return MusicDefError(CONS_WARNING,
|
||||||
"MUSICDEF: Field '%s' is missing value. (file %s, line %d)\n",
|
"Field '%s' is missing value.",
|
||||||
stoken, wadfiles[wadnum]->filename, line);
|
stoken, lumpnum, line);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1689,10 +1699,9 @@ ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
||||||
|
|
||||||
if (!def)
|
if (!def)
|
||||||
{
|
{
|
||||||
CONS_Alert(CONS_ERROR,
|
return MusicDefError(CONS_ERROR,
|
||||||
"MUSICDEF: No music definition before field '%s'. (file %s, line %d)\n",
|
"No music definition before field '%s'.",
|
||||||
stoken, wadfiles[wadnum]->filename, line);
|
stoken, lumpnum, line);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip the equals sign.
|
// Skip the equals sign.
|
||||||
|
|
@ -1713,9 +1722,9 @@ ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
||||||
} else if (!stricmp(stoken, "volume")) {
|
} else if (!stricmp(stoken, "volume")) {
|
||||||
def->volume = atoi(textline);
|
def->volume = atoi(textline);
|
||||||
} else {
|
} else {
|
||||||
CONS_Alert(CONS_WARNING,
|
MusicDefError(CONS_WARNING,
|
||||||
"MUSICDEF: Invalid field '%s'. (file %s, line %d)\n",
|
"Unknown field '%s'.",
|
||||||
stoken, wadfiles[wadnum]->filename, line);
|
stoken, lumpnum, line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1723,9 +1732,8 @@ ReadMusicDefFields (UINT16 wadnum, int line, char *stoken, musicdef_t **defp)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_LoadMusicDefs(UINT16 wadnum)
|
static void S_LoadMusicDefLump(lumpnum_t lumpnum)
|
||||||
{
|
{
|
||||||
UINT16 lumpnum;
|
|
||||||
char *lump;
|
char *lump;
|
||||||
char *musdeftext;
|
char *musdeftext;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
@ -1739,12 +1747,8 @@ void S_LoadMusicDefs(UINT16 wadnum)
|
||||||
musicdef_t *def = NULL;
|
musicdef_t *def = NULL;
|
||||||
int line = 1; // for better error msgs
|
int line = 1; // for better error msgs
|
||||||
|
|
||||||
lumpnum = W_CheckForMusicDefInPwad(wadnum);
|
lump = W_CacheLumpNum(lumpnum, PU_CACHE);
|
||||||
if (lumpnum == INT16_MAX)
|
size = W_LumpLength(lumpnum);
|
||||||
return;
|
|
||||||
|
|
||||||
lump = W_CacheLumpNumPwad(wadnum, lumpnum, PU_CACHE);
|
|
||||||
size = W_LumpLengthPwad(wadnum, lumpnum);
|
|
||||||
|
|
||||||
// Null-terminated MUSICDEF lump.
|
// Null-terminated MUSICDEF lump.
|
||||||
musdeftext = malloc(size+1);
|
musdeftext = malloc(size+1);
|
||||||
|
|
@ -1770,7 +1774,7 @@ void S_LoadMusicDefs(UINT16 wadnum)
|
||||||
stoken = strtok(stoken, " ");
|
stoken = strtok(stoken, " ");
|
||||||
if (stoken)
|
if (stoken)
|
||||||
{
|
{
|
||||||
if (! ReadMusicDefFields(wadnum, line, stoken, &def))
|
if (! ReadMusicDefFields(lumpnum, line, stoken, &def))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1795,6 +1799,20 @@ void S_LoadMusicDefs(UINT16 wadnum)
|
||||||
free(musdeftext);
|
free(musdeftext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void S_LoadMusicDefs(UINT16 wad)
|
||||||
|
{
|
||||||
|
const lumpnum_t wadnum = wad << 16;
|
||||||
|
|
||||||
|
UINT16 lump = 0;
|
||||||
|
|
||||||
|
while (( lump = W_CheckNumForNamePwad("MUSICDEF", wad, lump) ) != INT16_MAX)
|
||||||
|
{
|
||||||
|
S_LoadMusicDefLump(wadnum | lump);
|
||||||
|
|
||||||
|
lump++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// S_InitMusicDefs
|
// S_InitMusicDefs
|
||||||
//
|
//
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue