From 2f6ec137bb32bc0325d1dbf7730f19ca7ffb0c3a Mon Sep 17 00:00:00 2001 From: LJ Sonic <lamr@free.fr> Date: Sat, 6 Apr 2024 23:17:53 +0200 Subject: [PATCH] Refactor --- src/deh_soc.c | 242 +++++++++++++++++++++++++------------------------- 1 file changed, 122 insertions(+), 120 deletions(-) diff --git a/src/deh_soc.c b/src/deh_soc.c index d1643fd4ed..613bc5d10c 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -1362,6 +1362,8 @@ void readlevelheader(MYFILE *f, INT32 num) // Reset all previous map header information P_AllocMapHeader((INT16)(num-1)); + mapheader_t *header = mapheaderinfo[num-1]; + do { if (myfgets(s, MAXLINELEN, f)) @@ -1398,16 +1400,16 @@ void readlevelheader(MYFILE *f, INT32 num) if (fastcmp(word, "LEVELNAME")) { - deh_strlcpy(mapheaderinfo[num-1]->lvlttl, word2, - sizeof(mapheaderinfo[num-1]->lvlttl), va("Level header %d: levelname", num)); - strlcpy(mapheaderinfo[num-1]->selectheading, word2, sizeof(mapheaderinfo[num-1]->selectheading)); // not deh_ so only complains once + deh_strlcpy(header->lvlttl, word2, + sizeof(header->lvlttl), va("Level header %d: levelname", num)); + strlcpy(header->selectheading, word2, sizeof(header->selectheading)); // not deh_ so only complains once continue; } // CHEAP HACK: move this over here for lowercase subtitles if (fastcmp(word, "SUBTITLE")) { - deh_strlcpy(mapheaderinfo[num-1]->subttl, word2, - sizeof(mapheaderinfo[num-1]->subttl), va("Level header %d: subtitle", num)); + deh_strlcpy(header->subttl, word2, + sizeof(header->subttl), va("Level header %d: subtitle", num)); continue; } @@ -1429,19 +1431,19 @@ void readlevelheader(MYFILE *f, INT32 num) } // Sanity limit of 128 params - if (mapheaderinfo[num-1]->numCustomOptions == 128) + if (header->numCustomOptions == 128) { deh_warning("Level header %d: too many custom parameters", num); continue; } - j = mapheaderinfo[num-1]->numCustomOptions++; + j = header->numCustomOptions++; - mapheaderinfo[num-1]->customopts = - Z_Realloc(mapheaderinfo[num-1]->customopts, - sizeof(customoption_t) * mapheaderinfo[num-1]->numCustomOptions, PU_STATIC, NULL); + header->customopts = + Z_Realloc(header->customopts, + sizeof(customoption_t) * header->numCustomOptions, PU_STATIC, NULL); // Newly allocated - modoption = &mapheaderinfo[num-1]->customopts[j]; + modoption = &header->customopts[j]; strncpy(modoption->option, word, 31); modoption->option[31] = '\0'; @@ -1464,26 +1466,26 @@ void readlevelheader(MYFILE *f, INT32 num) { mobjtype_t tmpflickies[MAXFLICKIES]; - for (mapheaderinfo[num-1]->numFlickies = 0; - ((mapheaderinfo[num-1]->numFlickies < MAXFLICKIES) && FLICKYTYPES[mapheaderinfo[num-1]->numFlickies].type); - mapheaderinfo[num-1]->numFlickies++) - tmpflickies[mapheaderinfo[num-1]->numFlickies] = FLICKYTYPES[mapheaderinfo[num-1]->numFlickies].type; + for (header->numFlickies = 0; + ((header->numFlickies < MAXFLICKIES) && FLICKYTYPES[header->numFlickies].type); + header->numFlickies++) + tmpflickies[header->numFlickies] = FLICKYTYPES[header->numFlickies].type; - if (mapheaderinfo[num-1]->numFlickies) // just in case... + if (header->numFlickies) // just in case... { - size_t newsize = sizeof(mobjtype_t) * mapheaderinfo[num-1]->numFlickies; - mapheaderinfo[num-1]->flickies = Z_Realloc(mapheaderinfo[num-1]->flickies, newsize, PU_STATIC, NULL); - M_Memcpy(mapheaderinfo[num-1]->flickies, tmpflickies, newsize); + size_t newsize = sizeof(mobjtype_t) * header->numFlickies; + header->flickies = Z_Realloc(header->flickies, newsize, PU_STATIC, NULL); + M_Memcpy(header->flickies, tmpflickies, newsize); } } else { mobjtype_t tmpflickies[MAXFLICKIES]; - mapheaderinfo[num-1]->numFlickies = 0; + header->numFlickies = 0; tmp = strtok(word2,","); // get up to the first MAXFLICKIES flickies do { - if (mapheaderinfo[num-1]->numFlickies == MAXFLICKIES) // never going to get above that number + if (header->numFlickies == MAXFLICKIES) // never going to get above that number { deh_warning("Level header %d: too many flickies\n", num); break; @@ -1497,7 +1499,7 @@ void readlevelheader(MYFILE *f, INT32 num) //deh_warning("Level header %d: unknown flicky mobj type %s\n", num, tmp); -- no need for this line as get_mobjtype complains too continue; } - tmpflickies[mapheaderinfo[num-1]->numFlickies] = i; + tmpflickies[header->numFlickies] = i; } else // ...or a quick, limited selection of default flickies! { @@ -1510,17 +1512,17 @@ void readlevelheader(MYFILE *f, INT32 num) deh_warning("Level header %d: unknown flicky selection %s\n", num, tmp); continue; } - tmpflickies[mapheaderinfo[num-1]->numFlickies] = FLICKYTYPES[i].type; + tmpflickies[header->numFlickies] = GetMobjTypeByName(FLICKYTYPES[i].type); } - mapheaderinfo[num-1]->numFlickies++; + header->numFlickies++; } while ((tmp = strtok(NULL,",")) != NULL); - if (mapheaderinfo[num-1]->numFlickies) + if (header->numFlickies) { - size_t newsize = sizeof(mobjtype_t) * mapheaderinfo[num-1]->numFlickies; - mapheaderinfo[num-1]->flickies = Z_Realloc(mapheaderinfo[num-1]->flickies, newsize, PU_STATIC, NULL); + size_t newsize = sizeof(mobjtype_t) * header->numFlickies; + header->flickies = Z_Realloc(header->flickies, newsize, PU_STATIC, NULL); // now we add them to the list! - M_Memcpy(mapheaderinfo[num-1]->flickies, tmpflickies, newsize); + M_Memcpy(header->flickies, tmpflickies, newsize); } else deh_warning("Level header %d: no valid flicky types found\n", num); @@ -1550,23 +1552,23 @@ void readlevelheader(MYFILE *f, INT32 num) // Strings that can be truncated else if (fastcmp(word, "SELECTHEADING")) { - deh_strlcpy(mapheaderinfo[num-1]->selectheading, word2, - sizeof(mapheaderinfo[num-1]->selectheading), va("Level header %d: selectheading", num)); + deh_strlcpy(header->selectheading, word2, + sizeof(header->selectheading), va("Level header %d: selectheading", num)); } else if (fastcmp(word, "SCRIPTNAME")) { - deh_strlcpy(mapheaderinfo[num-1]->scriptname, word2, - sizeof(mapheaderinfo[num-1]->scriptname), va("Level header %d: scriptname", num)); + deh_strlcpy(header->scriptname, word2, + sizeof(header->scriptname), va("Level header %d: scriptname", num)); } else if (fastcmp(word, "RUNSOC")) { - deh_strlcpy(mapheaderinfo[num-1]->runsoc, word2, - sizeof(mapheaderinfo[num-1]->runsoc), va("Level header %d: runsoc", num)); + deh_strlcpy(header->runsoc, word2, + sizeof(header->runsoc), va("Level header %d: runsoc", num)); } else if (fastcmp(word, "ACT")) { if (i >= 0 && i <= 99) // 0 for no act number - mapheaderinfo[num-1]->actnum = (UINT8)i; + header->actnum = (UINT8)i; else deh_warning("Level header %d: invalid act number %d", num, i); } @@ -1584,7 +1586,7 @@ void readlevelheader(MYFILE *f, INT32 num) if (word2[0] >= 'A' && word2[0] <= 'Z' && word2[2] == '\0') i = M_MapNumber(word2[0], word2[1]); - mapheaderinfo[num-1]->nextlevel = (INT16)i; + header->nextlevel = (INT16)i; } else if (fastcmp(word, "MARATHONNEXT")) { @@ -1600,12 +1602,12 @@ void readlevelheader(MYFILE *f, INT32 num) if (word2[0] >= 'A' && word2[0] <= 'Z' && word2[2] == '\0') i = M_MapNumber(word2[0], word2[1]); - mapheaderinfo[num-1]->marathonnext = (INT16)i; + header->marathonnext = (INT16)i; } else if (fastcmp(word, "TYPEOFLEVEL")) { if (i) // it's just a number - mapheaderinfo[num-1]->typeoflevel = (UINT32)i; + header->typeoflevel = (UINT32)i; else { UINT32 tol = 0; @@ -1618,45 +1620,45 @@ void readlevelheader(MYFILE *f, INT32 num) deh_warning("Level header %d: unknown typeoflevel flag %s\n", num, tmp); tol |= TYPEOFLEVEL[i].flag; } while((tmp = strtok(NULL,",")) != NULL); - mapheaderinfo[num-1]->typeoflevel = tol; + header->typeoflevel = tol; } } else if (fastcmp(word, "KEYWORDS")) { - deh_strlcpy(mapheaderinfo[num-1]->keywords, word2, - sizeof(mapheaderinfo[num-1]->keywords), va("Level header %d: keywords", num)); + deh_strlcpy(header->keywords, word2, + sizeof(header->keywords), va("Level header %d: keywords", num)); } else if (fastcmp(word, "MUSIC")) { if (fastcmp(word2, "NONE")) - mapheaderinfo[num-1]->musname[0] = 0; // becomes empty string + header->musname[0] = 0; // becomes empty string else { - deh_strlcpy(mapheaderinfo[num-1]->musname, word2, - sizeof(mapheaderinfo[num-1]->musname), va("Level header %d: music", num)); + deh_strlcpy(header->musname, word2, + sizeof(header->musname), va("Level header %d: music", num)); } } // TODO: 2.3: Delete else if (fastcmp(word, "MUSICSLOT")) deh_warning("Level header %d: MusicSlot parameter is deprecated and will be removed.\nUse \"Music\" instead.", num); else if (fastcmp(word, "MUSICTRACK")) - mapheaderinfo[num-1]->mustrack = ((UINT16)i - 1); + header->mustrack = ((UINT16)i - 1); else if (fastcmp(word, "MUSICPOS")) - mapheaderinfo[num-1]->muspos = (UINT32)get_number(word2); + header->muspos = (UINT32)get_number(word2); else if (fastcmp(word, "MUSICINTERFADEOUT")) - mapheaderinfo[num-1]->musinterfadeout = (UINT32)get_number(word2); + header->musinterfadeout = (UINT32)get_number(word2); else if (fastcmp(word, "MUSICINTER")) - deh_strlcpy(mapheaderinfo[num-1]->musintername, word2, - sizeof(mapheaderinfo[num-1]->musintername), va("Level header %d: intermission music", num)); + deh_strlcpy(header->musintername, word2, + sizeof(header->musintername), va("Level header %d: intermission music", num)); else if (fastcmp(word, "MUSICPOSTBOSS")) - deh_strlcpy(mapheaderinfo[num-1]->muspostbossname, word2, - sizeof(mapheaderinfo[num-1]->muspostbossname), va("Level header %d: post-boss music", num)); + deh_strlcpy(header->muspostbossname, word2, + sizeof(header->muspostbossname), va("Level header %d: post-boss music", num)); else if (fastcmp(word, "MUSICPOSTBOSSTRACK")) - mapheaderinfo[num-1]->muspostbosstrack = ((UINT16)i - 1); + header->muspostbosstrack = ((UINT16)i - 1); else if (fastcmp(word, "MUSICPOSTBOSSPOS")) - mapheaderinfo[num-1]->muspostbosspos = (UINT32)get_number(word2); + header->muspostbosspos = (UINT32)get_number(word2); else if (fastcmp(word, "MUSICPOSTBOSSFADEIN")) - mapheaderinfo[num-1]->muspostbossfadein = (UINT32)get_number(word2); + header->muspostbossfadein = (UINT32)get_number(word2); else if (fastcmp(word, "FORCERESETMUSIC")) { // This is a weird one because "FALSE"/"NO" could either apply to "leave to default preference" (cv_resetmusic) @@ -1667,48 +1669,48 @@ void readlevelheader(MYFILE *f, INT32 num) if (i >= -1 && i <= 1) // -1 to force off, 1 to force on, 0 to honor default. // This behavior can be disabled with cv_resetmusicbyheader - mapheaderinfo[num-1]->musforcereset = (SINT8)i; + header->musforcereset = (SINT8)i; else deh_warning("Level header %d: invalid forceresetmusic option %d", num, i); } else if (fastcmp(word, "FORCECHARACTER")) { - strlcpy(mapheaderinfo[num-1]->forcecharacter, word2, SKINNAMESIZE+1); - strlwr(mapheaderinfo[num-1]->forcecharacter); // skin names are lowercase + strlcpy(header->forcecharacter, word2, SKINNAMESIZE+1); + strlwr(header->forcecharacter); // skin names are lowercase } else if (fastcmp(word, "WEATHER")) - mapheaderinfo[num-1]->weather = (UINT8)get_number(word2); + header->weather = (UINT8)get_number(word2); else if (fastcmp(word, "SKYNUM")) - mapheaderinfo[num-1]->skynum = (INT16)i; + header->skynum = (INT16)i; else if (fastcmp(word, "INTERSCREEN")) - strncpy(mapheaderinfo[num-1]->interscreen, word2, sizeof(mapheaderinfo[num-1]->interscreen)-1); + strncpy(header->interscreen, word2, sizeof(header->interscreen)-1); else if (fastcmp(word, "PRECUTSCENENUM")) - mapheaderinfo[num-1]->precutscenenum = (UINT8)i; + header->precutscenenum = (UINT8)i; else if (fastcmp(word, "CUTSCENENUM")) - mapheaderinfo[num-1]->cutscenenum = (UINT8)i; + header->cutscenenum = (UINT8)i; else if (fastcmp(word, "COUNTDOWN")) - mapheaderinfo[num-1]->countdown = (INT16)i; + header->countdown = (INT16)i; else if (fastcmp(word, "PALETTE")) - mapheaderinfo[num-1]->palette = (UINT16)i; + header->palette = (UINT16)i; else if (fastcmp(word, "NUMLAPS")) - mapheaderinfo[num-1]->numlaps = (UINT8)i; + header->numlaps = (UINT8)i; else if (fastcmp(word, "UNLOCKABLE")) { if (i >= 0 && i <= MAXUNLOCKABLES) // 0 for no unlock required, anything else requires something - mapheaderinfo[num-1]->unlockrequired = (SINT8)i - 1; + header->unlockrequired = (SINT8)i - 1; else deh_warning("Level header %d: invalid unlockable number %d", num, i); } else if (fastcmp(word, "LEVELSELECT")) - mapheaderinfo[num-1]->levelselect = (UINT8)i; + header->levelselect = (UINT8)i; else if (fastcmp(word, "SKYBOXSCALE")) - mapheaderinfo[num-1]->skybox_scalex = mapheaderinfo[num-1]->skybox_scaley = mapheaderinfo[num-1]->skybox_scalez = (INT16)i; + header->skybox_scalex = header->skybox_scaley = header->skybox_scalez = (INT16)i; else if (fastcmp(word, "SKYBOXSCALEX")) - mapheaderinfo[num-1]->skybox_scalex = (INT16)i; + header->skybox_scalex = (INT16)i; else if (fastcmp(word, "SKYBOXSCALEY")) - mapheaderinfo[num-1]->skybox_scaley = (INT16)i; + header->skybox_scaley = (INT16)i; else if (fastcmp(word, "SKYBOXSCALEZ")) - mapheaderinfo[num-1]->skybox_scalez = (INT16)i; + header->skybox_scalez = (INT16)i; else if (fastcmp(word, "BONUSTYPE")) { @@ -1720,7 +1722,7 @@ void readlevelheader(MYFILE *f, INT32 num) else if (fastcmp(word2, "NIGHTSLINK")) i = 4; if (i >= -1 && i <= 4) // -1 for no bonus. Max is 4. - mapheaderinfo[num-1]->bonustype = (SINT8)i; + header->bonustype = (SINT8)i; else deh_warning("Level header %d: invalid bonus type number %d", num, i); } @@ -1728,104 +1730,104 @@ void readlevelheader(MYFILE *f, INT32 num) // Title card else if (fastcmp(word, "TITLECARDZIGZAG")) { - deh_strlcpy(mapheaderinfo[num-1]->ltzzpatch, word2, - sizeof(mapheaderinfo[num-1]->ltzzpatch), va("Level header %d: title card zigzag patch name", num)); + deh_strlcpy(header->ltzzpatch, word2, + sizeof(header->ltzzpatch), va("Level header %d: title card zigzag patch name", num)); } else if (fastcmp(word, "TITLECARDZIGZAGTEXT")) { - deh_strlcpy(mapheaderinfo[num-1]->ltzztext, word2, - sizeof(mapheaderinfo[num-1]->ltzztext), va("Level header %d: title card zigzag text patch name", num)); + deh_strlcpy(header->ltzztext, word2, + sizeof(header->ltzztext), va("Level header %d: title card zigzag text patch name", num)); } else if (fastcmp(word, "TITLECARDACTDIAMOND")) { - deh_strlcpy(mapheaderinfo[num-1]->ltactdiamond, word2, - sizeof(mapheaderinfo[num-1]->ltactdiamond), va("Level header %d: title card act diamond patch name", num)); + deh_strlcpy(header->ltactdiamond, word2, + sizeof(header->ltactdiamond), va("Level header %d: title card act diamond patch name", num)); } else if (fastcmp(word, "MAXBONUSLIVES")) - mapheaderinfo[num-1]->maxbonuslives = (SINT8)i; + header->maxbonuslives = (SINT8)i; else if (fastcmp(word, "LEVELFLAGS")) - mapheaderinfo[num-1]->levelflags = (UINT16)i; + header->levelflags = (UINT16)i; else if (fastcmp(word, "MENUFLAGS")) - mapheaderinfo[num-1]->menuflags = (UINT8)i; + header->menuflags = (UINT8)i; // Individual triggers for level flags, for ease of use (and 2.0 compatibility) else if (fastcmp(word, "SCRIPTISFILE")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_SCRIPTISFILE; + header->levelflags |= LF_SCRIPTISFILE; else - mapheaderinfo[num-1]->levelflags &= ~LF_SCRIPTISFILE; + header->levelflags &= ~LF_SCRIPTISFILE; } else if (fastcmp(word, "SPEEDMUSIC")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_SPEEDMUSIC; + header->levelflags |= LF_SPEEDMUSIC; else - mapheaderinfo[num-1]->levelflags &= ~LF_SPEEDMUSIC; + header->levelflags &= ~LF_SPEEDMUSIC; } else if (fastcmp(word, "NOSSMUSIC")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_NOSSMUSIC; + header->levelflags |= LF_NOSSMUSIC; else - mapheaderinfo[num-1]->levelflags &= ~LF_NOSSMUSIC; + header->levelflags &= ~LF_NOSSMUSIC; } else if (fastcmp(word, "NORELOAD")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_NORELOAD; + header->levelflags |= LF_NORELOAD; else - mapheaderinfo[num-1]->levelflags &= ~LF_NORELOAD; + header->levelflags &= ~LF_NORELOAD; } else if (fastcmp(word, "NOZONE")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_NOZONE; + header->levelflags |= LF_NOZONE; else - mapheaderinfo[num-1]->levelflags &= ~LF_NOZONE; + header->levelflags &= ~LF_NOZONE; } else if (fastcmp(word, "SAVEGAME")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_SAVEGAME; + header->levelflags |= LF_SAVEGAME; else - mapheaderinfo[num-1]->levelflags &= ~LF_SAVEGAME; + header->levelflags &= ~LF_SAVEGAME; } else if (fastcmp(word, "MIXNIGHTSCOUNTDOWN")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_MIXNIGHTSCOUNTDOWN; + header->levelflags |= LF_MIXNIGHTSCOUNTDOWN; else - mapheaderinfo[num-1]->levelflags &= ~LF_MIXNIGHTSCOUNTDOWN; + header->levelflags &= ~LF_MIXNIGHTSCOUNTDOWN; } else if (fastcmp(word, "WARNINGTITLE")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_WARNINGTITLE; + header->levelflags |= LF_WARNINGTITLE; else - mapheaderinfo[num-1]->levelflags &= ~LF_WARNINGTITLE; + header->levelflags &= ~LF_WARNINGTITLE; } else if (fastcmp(word, "NOTITLECARD")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->levelflags |= LF_NOTITLECARD; + header->levelflags |= LF_NOTITLECARD; else - mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARD; + header->levelflags &= ~LF_NOTITLECARD; } else if (fastcmp(word, "SHOWTITLECARDFOR")) { - mapheaderinfo[num-1]->levelflags |= LF_NOTITLECARD; + header->levelflags |= LF_NOTITLECARD; tmp = strtok(word2,","); do { if (fastcmp(tmp, "FIRST")) - mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARDFIRST; + header->levelflags &= ~LF_NOTITLECARDFIRST; else if (fastcmp(tmp, "RESPAWN")) - mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARDRESPAWN; + header->levelflags &= ~LF_NOTITLECARDRESPAWN; else if (fastcmp(tmp, "RECORDATTACK")) - mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARDRECORDATTACK; + header->levelflags &= ~LF_NOTITLECARDRECORDATTACK; else if (fastcmp(tmp, "ALL")) - mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARD; + header->levelflags &= ~LF_NOTITLECARD; else if (!fastcmp(tmp, "NONE")) deh_warning("Level header %d: unknown titlecard show option %s\n", num, tmp); @@ -1836,53 +1838,53 @@ void readlevelheader(MYFILE *f, INT32 num) else if (fastcmp(word, "HIDDEN")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_HIDEINMENU; + header->menuflags |= LF2_HIDEINMENU; else - mapheaderinfo[num-1]->menuflags &= ~LF2_HIDEINMENU; + header->menuflags &= ~LF2_HIDEINMENU; } else if (fastcmp(word, "HIDEINSTATS")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_HIDEINSTATS; + header->menuflags |= LF2_HIDEINSTATS; else - mapheaderinfo[num-1]->menuflags &= ~LF2_HIDEINSTATS; + header->menuflags &= ~LF2_HIDEINSTATS; } else if (fastcmp(word, "RECORDATTACK") || fastcmp(word, "TIMEATTACK")) { // TIMEATTACK is an accepted alias if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_RECORDATTACK; + header->menuflags |= LF2_RECORDATTACK; else - mapheaderinfo[num-1]->menuflags &= ~LF2_RECORDATTACK; + header->menuflags &= ~LF2_RECORDATTACK; } else if (fastcmp(word, "NIGHTSATTACK")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_NIGHTSATTACK; + header->menuflags |= LF2_NIGHTSATTACK; else - mapheaderinfo[num-1]->menuflags &= LF2_NIGHTSATTACK; + header->menuflags &= LF2_NIGHTSATTACK; } else if (fastcmp(word, "NOVISITNEEDED")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_NOVISITNEEDED; + header->menuflags |= LF2_NOVISITNEEDED; else - mapheaderinfo[num-1]->menuflags &= ~LF2_NOVISITNEEDED; + header->menuflags &= ~LF2_NOVISITNEEDED; } else if (fastcmp(word, "WIDEICON")) { if (i || word2[0] == 'T' || word2[0] == 'Y') - mapheaderinfo[num-1]->menuflags |= LF2_WIDEICON; + header->menuflags |= LF2_WIDEICON; else - mapheaderinfo[num-1]->menuflags &= ~LF2_WIDEICON; + header->menuflags &= ~LF2_WIDEICON; } else if (fastcmp(word, "STARTRINGS")) - mapheaderinfo[num-1]->startrings = (UINT16)i; + header->startrings = (UINT16)i; else if (fastcmp(word, "SPECIALSTAGETIME")) - mapheaderinfo[num-1]->sstimer = i; + header->sstimer = i; else if (fastcmp(word, "SPECIALSTAGESPHERES")) - mapheaderinfo[num-1]->ssspheres = i; + header->ssspheres = i; else if (fastcmp(word, "GRAVITY")) - mapheaderinfo[num-1]->gravity = FLOAT_TO_FIXED(atof(word2)); + header->gravity = FLOAT_TO_FIXED(atof(word2)); else deh_warning("Level header %d: unknown word '%s'", num, word); } -- GitLab