WIP title screen

This commit is contained in:
Sally Coolatta 2022-05-19 03:19:33 -04:00
parent ee21b2493a
commit a83504c1a4
4 changed files with 88 additions and 25 deletions

View file

@ -1923,7 +1923,6 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
{ {
if (cl_mode != CL_DOWNLOADFILES && cl_mode != CL_DOWNLOADSAVEGAME) if (cl_mode != CL_DOWNLOADFILES && cl_mode != CL_DOWNLOADSAVEGAME)
{ {
F_MenuPresTicker(true); // title sky
F_TitleScreenTicker(true); F_TitleScreenTicker(true);
F_TitleScreenDrawer(); F_TitleScreenDrawer();
} }

View file

@ -2292,7 +2292,9 @@ void readmenu(MYFILE *f, INT32 num)
menupres[num].ttname[0] = 0; menupres[num].ttname[0] = 0;
menupres[num].hidetitlepics = true; menupres[num].hidetitlepics = true;
} }
else // if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS")) else if (fastcmp(word2, "RINGRACERS"))
menupres[num].ttmode = TTMODE_RINGRACERS;
else if (fastcmp(word2, "OLD"))
menupres[num].ttmode = TTMODE_OLD; menupres[num].ttmode = TTMODE_OLD;
titlechanged = true; titlechanged = true;
} }
@ -3385,7 +3387,9 @@ void readmaincfg(MYFILE *f)
ttname[0] = 0; ttname[0] = 0;
hidetitlepics = true; hidetitlepics = true;
} }
else // if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS")) else if (fastcmp(word2, "RINGRACERS"))
ttmode = TTMODE_RINGRACERS;
else if (fastcmp(word2, "OLD") || fastcmp(word2, "SSNTAILS"))
ttmode = TTMODE_OLD; ttmode = TTMODE_OLD;
titlechanged = true; titlechanged = true;
} }

View file

@ -44,7 +44,7 @@
// Stage of animation: // Stage of animation:
// 0 = text, 1 = art screen // 0 = text, 1 = art screen
INT32 finalecount; INT32 finalecount;
INT32 titlescrollxspeed = 5; INT32 titlescrollxspeed = 16;
INT32 titlescrollyspeed = 0; INT32 titlescrollyspeed = 0;
UINT8 titlemapinaction = TITLEMAP_OFF; UINT8 titlemapinaction = TITLEMAP_OFF;
@ -58,8 +58,6 @@ static tic_t stoptimer;
static boolean keypressed = false; static boolean keypressed = false;
static tic_t xscrolltimer;
static tic_t yscrolltimer;
static INT32 menuanimtimer; // Title screen: background animation timing static INT32 menuanimtimer; // Title screen: background animation timing
mobj_t *titlemapcameraref = NULL; mobj_t *titlemapcameraref = NULL;
@ -81,7 +79,7 @@ static UINT32 demoIdleLeft;
// customizable title screen graphics // customizable title screen graphics
ttmode_enum ttmode = TTMODE_OLD; ttmode_enum ttmode = TTMODE_RINGRACERS;
UINT8 ttscale = 1; // FRACUNIT / ttscale UINT8 ttscale = 1; // FRACUNIT / ttscale
// ttmode user vars // ttmode user vars
char ttname[9]; char ttname[9];
@ -108,6 +106,13 @@ static patch_t *ttcheckers; // *vroom* KART
static patch_t *ttkflash; // flash screen static patch_t *ttkflash; // flash screen
*/ */
static patch_t *kts_bumper; // DR ROBOTNIKS RING RACERS
static patch_t *kts_eggman; // dr. robotnik himself
static patch_t *kts_tails; // tails himself
static patch_t *kts_tails_tails; // tails' tails
static patch_t *kts_electricity[6]; // ring o' electricity
static patch_t *kts_copyright; // (C) SEGA
#define NOWAY #define NOWAY
#ifdef NOWAY #ifdef NOWAY
@ -1688,10 +1693,10 @@ void F_InitMenuPresValues(void)
// Set defaults for presentation values // Set defaults for presentation values
strncpy(curbgname, "TITLESKY", 9); strncpy(curbgname, "TITLESKY", 9);
curfadevalue = 16; curfadevalue = 16;
curbgcolor = 31; curbgcolor = -1;
curbgxspeed = (gamestate == GS_TIMEATTACK) ? 0 : titlescrollxspeed; curbgxspeed = titlescrollxspeed;
curbgyspeed = (gamestate == GS_TIMEATTACK) ? 22 : titlescrollyspeed; curbgyspeed = titlescrollyspeed;
curbghide = (gamestate == GS_TIMEATTACK) ? false : true; curbghide = false;
curhidepics = hidetitlepics; curhidepics = hidetitlepics;
curttmode = ttmode; curttmode = ttmode;
@ -1721,24 +1726,26 @@ void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname)
INT32 pw, ph; // scaled by dupz INT32 pw, ph; // scaled by dupz
patch_t *pat; patch_t *pat;
INT32 i, j; INT32 i, j;
INT32 xscrolltimer, yscrolltimer;
if (rendermode == render_none) if (rendermode == render_none)
return; return;
V_DrawFill(0, 0, vid.width, vid.height, 31);
if (!patchname || !patchname[0]) if (!patchname || !patchname[0])
{ {
V_DrawFill(0, 0, vid.width, vid.height, 31);
return;
}
if (!scrollxspeed && !scrollyspeed)
{
V_DrawPatchFill(W_CachePatchName(patchname, PU_PATCH_LOWPRIORITY));
return; return;
} }
pat = W_CachePatchName(patchname, PU_PATCH_LOWPRIORITY); pat = W_CachePatchName(patchname, PU_PATCH_LOWPRIORITY);
if (scrollxspeed == 0 && scrollyspeed == 0)
{
V_DrawPatchFill(pat);
return;
}
patwidth = pat->width; patwidth = pat->width;
patheight = pat->height; patheight = pat->height;
pw = patwidth * dupz; pw = patwidth * dupz;
@ -1768,8 +1775,6 @@ void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname)
V_NOSCALESTART, pat); V_NOSCALESTART, pat);
} }
} }
W_UnlockCachedPatch(pat);
} }
#define LOADTTGFX(arr, name, maxf) \ #define LOADTTGFX(arr, name, maxf) \
@ -1800,15 +1805,30 @@ else \
static void F_CacheTitleScreen(void) static void F_CacheTitleScreen(void)
{ {
UINT16 i;
switch(curttmode) switch(curttmode)
{ {
case TTMODE_OLD:
case TTMODE_NONE: case TTMODE_NONE:
break; break;
case TTMODE_OLD:
break; // idk do we still want this?
case TTMODE_RINGRACERS:
kts_bumper = W_CachePatchName("KTSBUMPR1", PU_PATCH_LOWPRIORITY);
kts_eggman = W_CachePatchName("KTSEGG01", PU_PATCH_LOWPRIORITY);
kts_tails = W_CachePatchName("KTSTAL01", PU_PATCH_LOWPRIORITY);
kts_tails_tails = W_CachePatchName("KTSTAL02", PU_PATCH_LOWPRIORITY);
for (i = 0; i < 6; i++)
{
kts_electricity[i] = W_CachePatchName(va("KTSELCT%.1d", i+1), PU_PATCH_LOWPRIORITY);
}
kts_copyright = W_CachePatchName("KTSCR", PU_PATCH_LOWPRIORITY);
break;
case TTMODE_USER: case TTMODE_USER:
{ {
UINT16 i;
lumpnum_t lumpnum; lumpnum_t lumpnum;
char lumpname[9]; char lumpname[9];
@ -1932,8 +1952,46 @@ void F_TitleScreenDrawer(void)
switch(curttmode) switch(curttmode)
{ {
case TTMODE_OLD:
case TTMODE_NONE: case TTMODE_NONE:
break;
case TTMODE_RINGRACERS:
{
const char *eggName = "eggman";
INT32 eggSkin = R_SkinAvailable(eggName);
skincolornum_t eggColor = SKINCOLOR_RED;
UINT8 *eggColormap = NULL;
const char *tailsName = "tails";
INT32 tailsSkin = R_SkinAvailable(tailsName);
skincolornum_t tailsColor = SKINCOLOR_ORANGE;
UINT8 *tailsColormap = NULL;
if (eggSkin != -1)
{
eggColor = skins[eggSkin].prefcolor;
}
eggColormap = R_GetTranslationColormap(TC_DEFAULT, eggColor, GTC_MENUCACHE);
if (tailsSkin != -1)
{
tailsColor = skins[tailsSkin].prefcolor;
}
tailsColormap = R_GetTranslationColormap(TC_DEFAULT, tailsColor, GTC_MENUCACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_tails_tails, tailsColormap);
V_DrawFixedPatch(0, 0, FRACUNIT, V_ADD, kts_electricity[finalecount % 6], NULL);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_eggman, eggColormap);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_tails, tailsColormap);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_bumper, NULL);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_copyright, NULL);
break;
}
case TTMODE_OLD:
/* /*
if (finalecount < 50) if (finalecount < 50)
{ {
@ -2020,6 +2078,8 @@ void F_MenuPresTicker(boolean run)
// (no longer) De-Demo'd Title Screen // (no longer) De-Demo'd Title Screen
void F_TitleScreenTicker(boolean run) void F_TitleScreenTicker(boolean run)
{ {
F_MenuPresTicker(true); // title sky
if (run) if (run)
{ {
finalecount++; finalecount++;

View file

@ -80,9 +80,9 @@ extern INT32 titlescrollyspeed;
typedef enum typedef enum
{ {
TTMODE_NONE = 0, TTMODE_NONE = 0,
TTMODE_RINGRACERS,
TTMODE_OLD, TTMODE_OLD,
TTMODE_USER, TTMODE_USER
//TTMODE_RINGRACERS
} ttmode_enum; } ttmode_enum;
#define TTMAX_ALACROIX 30 // max frames for SONIC typeface, plus one for NULL terminating entry #define TTMAX_ALACROIX 30 // max frames for SONIC typeface, plus one for NULL terminating entry