mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 17:22:12 +00:00
More customisable title card
Add TitleCardZigZag, TitleCardZigZagText and TitleCardActDiamond fields to SOC. Add the same fields to Lua under their internal names. Turn map header level flags into an UINT16, so that NoTitleCard works. (NOBODY caught this, I'm actually disappointed.)
This commit is contained in:
parent
53c7df4818
commit
254d812901
5 changed files with 57 additions and 14 deletions
|
@ -1520,10 +1520,27 @@ static void readlevelheader(MYFILE *f, INT32 num)
|
||||||
deh_warning("Level header %d: invalid bonus type number %d", num, i);
|
deh_warning("Level header %d: invalid bonus type number %d", num, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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));
|
||||||
|
}
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
else if (fastcmp(word, "MAXBONUSLIVES"))
|
else if (fastcmp(word, "MAXBONUSLIVES"))
|
||||||
mapheaderinfo[num-1]->maxbonuslives = (SINT8)i;
|
mapheaderinfo[num-1]->maxbonuslives = (SINT8)i;
|
||||||
else if (fastcmp(word, "LEVELFLAGS"))
|
else if (fastcmp(word, "LEVELFLAGS"))
|
||||||
mapheaderinfo[num-1]->levelflags = (UINT8)i;
|
mapheaderinfo[num-1]->levelflags = (UINT16)i;
|
||||||
else if (fastcmp(word, "MENUFLAGS"))
|
else if (fastcmp(word, "MENUFLAGS"))
|
||||||
mapheaderinfo[num-1]->menuflags = (UINT8)i;
|
mapheaderinfo[num-1]->menuflags = (UINT8)i;
|
||||||
|
|
||||||
|
|
|
@ -310,12 +310,17 @@ typedef struct
|
||||||
SINT8 bonustype; ///< What type of bonus does this level have? (-1 for null.)
|
SINT8 bonustype; ///< What type of bonus does this level have? (-1 for null.)
|
||||||
SINT8 maxbonuslives; ///< How many bonus lives to award at Intermission? (-1 for unlimited.)
|
SINT8 maxbonuslives; ///< How many bonus lives to award at Intermission? (-1 for unlimited.)
|
||||||
|
|
||||||
UINT8 levelflags; ///< LF_flags: merged booleans into one UINT8 for space, see below
|
UINT16 levelflags; ///< LF_flags: merged booleans into one UINT16 for space, see below
|
||||||
UINT8 menuflags; ///< LF2_flags: options that affect record attack / nights mode menus
|
UINT8 menuflags; ///< LF2_flags: options that affect record attack / nights mode menus
|
||||||
|
|
||||||
char selectheading[22]; ///< Level select heading. Allows for controllable grouping.
|
char selectheading[22]; ///< Level select heading. Allows for controllable grouping.
|
||||||
UINT16 startrings; ///< Number of rings players start with.
|
UINT16 startrings; ///< Number of rings players start with.
|
||||||
|
|
||||||
|
// Title card.
|
||||||
|
char ltzzpatch[8]; ///< Zig zag patch.
|
||||||
|
char ltzztext[8]; ///< Zig zag text.
|
||||||
|
char ltactdiamond[8]; ///< Act diamond.
|
||||||
|
|
||||||
// Freed animals stuff.
|
// Freed animals stuff.
|
||||||
UINT8 numFlickies; ///< Internal. For freed flicky support.
|
UINT8 numFlickies; ///< Internal. For freed flicky support.
|
||||||
mobjtype_t *flickies; ///< List of freeable flickies in this level. Allocated dynamically for space reasons. Be careful.
|
mobjtype_t *flickies; ///< List of freeable flickies in this level. Allocated dynamically for space reasons. Be careful.
|
||||||
|
|
|
@ -2071,6 +2071,12 @@ static int mapheaderinfo_get(lua_State *L)
|
||||||
lua_pushinteger(L, header->levelselect);
|
lua_pushinteger(L, header->levelselect);
|
||||||
else if (fastcmp(field,"bonustype"))
|
else if (fastcmp(field,"bonustype"))
|
||||||
lua_pushinteger(L, header->bonustype);
|
lua_pushinteger(L, header->bonustype);
|
||||||
|
else if (fastcmp(field,"ltzzpatch"))
|
||||||
|
lua_pushstring(L, header->ltzzpatch);
|
||||||
|
else if (fastcmp(field,"ltzztext"))
|
||||||
|
lua_pushstring(L, header->ltzztext);
|
||||||
|
else if (fastcmp(field,"ltactdiamond"))
|
||||||
|
lua_pushstring(L, header->ltactdiamond);
|
||||||
else if (fastcmp(field,"maxbonuslives"))
|
else if (fastcmp(field,"maxbonuslives"))
|
||||||
lua_pushinteger(L, header->maxbonuslives);
|
lua_pushinteger(L, header->maxbonuslives);
|
||||||
else if (fastcmp(field,"levelflags"))
|
else if (fastcmp(field,"levelflags"))
|
||||||
|
|
|
@ -210,6 +210,9 @@ static void P_ClearSingleMapHeaderInfo(INT16 i)
|
||||||
mapheaderinfo[num]->lvlttl[0] = '\0';
|
mapheaderinfo[num]->lvlttl[0] = '\0';
|
||||||
mapheaderinfo[num]->selectheading[0] = '\0';
|
mapheaderinfo[num]->selectheading[0] = '\0';
|
||||||
mapheaderinfo[num]->subttl[0] = '\0';
|
mapheaderinfo[num]->subttl[0] = '\0';
|
||||||
|
mapheaderinfo[num]->ltzzpatch[0] = '\0';
|
||||||
|
mapheaderinfo[num]->ltzztext[0] = '\0';
|
||||||
|
mapheaderinfo[num]->ltactdiamond[0] = '\0';
|
||||||
mapheaderinfo[num]->actnum = 0;
|
mapheaderinfo[num]->actnum = 0;
|
||||||
mapheaderinfo[num]->typeoflevel = 0;
|
mapheaderinfo[num]->typeoflevel = 0;
|
||||||
mapheaderinfo[num]->nextlevel = (INT16)(i + 1);
|
mapheaderinfo[num]->nextlevel = (INT16)(i + 1);
|
||||||
|
|
|
@ -1177,21 +1177,33 @@ tic_t lt_exitticker = 0, lt_endtime = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Load the graphics for the title card.
|
// Load the graphics for the title card.
|
||||||
|
// Don't let LJ see this
|
||||||
//
|
//
|
||||||
static void ST_cacheLevelTitle(void)
|
static void ST_cacheLevelTitle(void)
|
||||||
{
|
{
|
||||||
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_WARNINGTITLE))
|
#define SETPATCH(default, warning, custom, idx) \
|
||||||
{
|
{ \
|
||||||
lt_patches[0] = (patch_t *)W_CachePatchName("LTACTBLU", PU_HUDGFX);
|
lumpnum_t patlumpnum = LUMPERROR; \
|
||||||
lt_patches[1] = (patch_t *)W_CachePatchName("LTZIGZAG", PU_HUDGFX);
|
if (mapheaderinfo[gamemap-1]->custom[0] != '\0') \
|
||||||
lt_patches[2] = (patch_t *)W_CachePatchName("LTZZTEXT", PU_HUDGFX);
|
{ \
|
||||||
}
|
patlumpnum = W_CheckNumForName(mapheaderinfo[gamemap-1]->custom); \
|
||||||
else // boss map
|
if (patlumpnum != LUMPERROR) \
|
||||||
{
|
lt_patches[idx] = (patch_t *)W_CachePatchNum(patlumpnum, PU_HUDGFX); \
|
||||||
lt_patches[0] = (patch_t *)W_CachePatchName("LTACTRED", PU_HUDGFX);
|
} \
|
||||||
lt_patches[1] = (patch_t *)W_CachePatchName("LTZIGRED", PU_HUDGFX);
|
if (patlumpnum == LUMPERROR) \
|
||||||
lt_patches[2] = (patch_t *)W_CachePatchName("LTZZWARN", PU_HUDGFX);
|
{ \
|
||||||
}
|
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_WARNINGTITLE)) \
|
||||||
|
lt_patches[idx] = (patch_t *)W_CachePatchName(default, PU_HUDGFX); \
|
||||||
|
else \
|
||||||
|
lt_patches[idx] = (patch_t *)W_CachePatchName(warning, PU_HUDGFX); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
SETPATCH("LTACTBLU", "LTACTRED", ltactdiamond, 0)
|
||||||
|
SETPATCH("LTZIGZAG", "LTZIGRED", ltzzpatch, 1)
|
||||||
|
SETPATCH("LTZZTEXT", "LTZZWARN", ltzztext, 2)
|
||||||
|
|
||||||
|
#undef SETPATCH
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue