Merge branch 'goner-final' into 'master'

Goner Final

Closes #1182

See merge request KartKrew/Kart!2144
This commit is contained in:
Gunla 2024-03-22 01:35:35 +00:00
commit 55d71d7674
8 changed files with 128 additions and 23 deletions

View file

@ -1422,6 +1422,8 @@ static void F_CacheTitleScreen(void)
{
UINT16 i;
kts_copyright = W_CachePatchName("KTSCR", PU_PATCH_LOWPRIORITY);
switch (curttmode)
{
case TTMODE_NONE:
@ -1439,7 +1441,6 @@ static void F_CacheTitleScreen(void)
{
kts_electricity[i] = W_CachePatchName(va("KTSELCT%.1d", i+1), PU_PATCH_LOWPRIORITY);
}
kts_copyright = W_CachePatchName("KTSCR", PU_PATCH_LOWPRIORITY);
break;
}
@ -1547,10 +1548,23 @@ void F_StartTitleScreen(void)
void F_VersionDrawer(void)
{
// An adapted thing from old menus - most games have version info on the title screen now...
INT32 texty = vid.height - 10*vid.dupy;
INT32 trans = 5;
if (gamestate == GS_TITLESCREEN)
{
trans = 10 - (finalecount - (3*TICRATE)/2)/3;
if (trans >= 10)
return;
if (trans < 5)
trans = 5;
}
trans = (trans<<V_ALPHASHIFT)|V_NOSCALESTART;
#define addtext(f, str) {\
V_DrawThinString(vid.dupx, texty, V_NOSCALESTART|f, str);\
V_DrawThinString(vid.dupx, texty, trans|f, str);\
texty -= 10*vid.dupy;\
}
if (customversionstring[0] != '\0')
@ -1563,22 +1577,24 @@ void F_VersionDrawer(void)
// Development -- show revision / branch info
#if defined(TESTERS)
addtext(V_SKYMAP, "Tester client");
addtext(V_TRANSLUCENT, va("%s", compdate));
addtext(0, va("%s", compdate));
#elif defined(DEVELOP)
addtext(V_TRANSLUCENT, va("%s %s", comprevision, compnote));
addtext(V_TRANSLUCENT, D_GetFancyBranchName());
#else // Regular build
addtext(V_TRANSLUCENT, va("%s", VERSIONSTRING));
#endif
addtext(0, va("%s %s", comprevision, compnote));
addtext(0, D_GetFancyBranchName());
if (compoptimized)
{
addtext(V_TRANSLUCENT, va("%s build", comptype));
addtext(0, va("%s build", comptype));
}
else
{
addtext(V_ORANGEMAP, va("%s build (no optimizations)", comptype));
}
#else // Regular build
addtext(trans, va("%s", VERSIONSTRING));
#endif
if (compuncommitted)
{
addtext(V_REDMAP|V_STRINGDANCE, "! UNCOMMITTED CHANGES !");
@ -1587,6 +1603,9 @@ void F_VersionDrawer(void)
#undef addtext
}
#define GONERTYPEWRITERDURATION (5)
#define GONERTYPEWRITERWAIT (TICRATE/2)
// (no longer) De-Demo'd Title Screen
void F_TitleScreenDrawer(void)
{
@ -1617,7 +1636,41 @@ void F_TitleScreenDrawer(void)
goto luahook;
}
switch (curttmode)
if (cache_gametrulystarted == false)
{
INT32 trans;
if (finalecount >= GONERTYPEWRITERWAIT)
{
INT32 checkcount = finalecount - GONERTYPEWRITERWAIT;
const char *typetext = "RING RACERS";
INT32 bx = V_TitleCardStringWidth(typetext, false);
V_DrawTitleCardString((BASEVIDWIDTH - bx)/2, 80, typetext, V_TRANSLUCENT, true, (checkcount/GONERTYPEWRITERDURATION), 0, false);
if (checkcount > 2*TICRATE)
{
trans = 10 - (checkcount - 2*TICRATE)/4;
if (trans < 10)
{
if (trans < 0)
trans = 0;
trans <<= V_ALPHASHIFT;
V_DrawCenteredThinString(BASEVIDWIDTH/2, 80 + 32, V_AQUAMAP|trans, "Press any input to proceed.");
}
}
}
trans = 10 - finalecount/5;
if (trans < 10)
{
if (trans < 0)
trans = 0;
trans <<= V_ALPHASHIFT;
V_DrawCenteredMenuString(BASEVIDWIDTH/2, (BASEVIDHEIGHT/2) - 7, trans, "Dr. Robotnik's");
}
}
else switch (curttmode)
{
case TTMODE_NONE:
{
@ -1626,7 +1679,7 @@ void F_TitleScreenDrawer(void)
case TTMODE_RINGRACERS:
{
if (cache_gametrulystarted == true)
//if (cache_gametrulystarted == true)
{
const char *eggName = "eggman";
INT32 eggSkin = R_SkinAvailableEx(eggName, false);
@ -1658,12 +1711,7 @@ void F_TitleScreenDrawer(void)
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_bumper, NULL);
}
else
{
V_DrawCenteredString(BASEVIDWIDTH/2, (BASEVIDHEIGHT/2) - 4, 0, "Press any button/key to continue");
}
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_copyright, NULL);
break;
}
@ -1689,6 +1737,8 @@ void F_TitleScreenDrawer(void)
}
}
V_DrawFixedPatch(0, 0, FRACUNIT, 0, kts_copyright, NULL);
luahook:
// The title drawer is sometimes called without first being started
// In order to avoid use-before-initialization crashes, let's check and
@ -1721,7 +1771,11 @@ void F_TitleScreenTicker(boolean run)
{
if (finalecount == 0)
{
if (cache_gametrulystarted && !Music_Playing("title"))
if (!cache_gametrulystarted)
{
S_StartSound(NULL, sfx_s3k93);
}
else if (!Music_Playing("title"))
{
// Now start the music
Music_Loop("title", looptitle);
@ -1734,6 +1788,22 @@ void F_TitleScreenTicker(boolean run)
}
finalecount++;
if (!cache_gametrulystarted && finalecount > GONERTYPEWRITERWAIT)
{
if (finalecount == GONERTYPEWRITERWAIT + 2*TICRATE + TICRATE/3)
{
S_StartSound(NULL, sfx_s3k61);
}
if (((finalecount - GONERTYPEWRITERWAIT) % GONERTYPEWRITERDURATION) == 0)
{
// hardcoded for RING RACERS string
INT32 lettercount = (finalecount - GONERTYPEWRITERWAIT)/GONERTYPEWRITERDURATION;
if (lettercount != 5 && lettercount <= 11)
S_StartSound(NULL, sfx_typri1);
}
}
}
// don't trigger if doing anything besides idling on title
@ -1906,6 +1976,8 @@ loadreplay:
}
}
#undef GONERTYPEWRITERDURATION
void F_AttractDemoTicker(void)
{
keypressed = false;

View file

@ -197,22 +197,24 @@ void K_TimerInit(void)
return;
}
const boolean bossintro = K_CheckBossIntro();
// Rooooooolllling staaaaaaart
if ((gametyperules & (GTR_ROLLINGSTART|GTR_CIRCUIT)) == (GTR_ROLLINGSTART|GTR_CIRCUIT))
{
S_StartSound(NULL, sfx_s25f);
// The actual push occours in P_InitPlayers
}
else if (skipstats != 0)
else if (skipstats != 0 && bossintro == false)
{
S_StartSound(NULL, sfx_endwrp);
S_StartSound(NULL, sfx_s26c); //sfx_endwrp
}
if ((gametyperules & (GTR_CATCHER|GTR_CIRCUIT)) == (GTR_CATCHER|GTR_CIRCUIT))
{
K_InitSpecialStage();
}
else if (K_CheckBossIntro() == true)
else if (bossintro == true)
;
else
{

View file

@ -2547,7 +2547,7 @@ void M_DrawCharacterSelect(void)
}
// Explosions when you've made your final selection
M_DrawCharSelectExplosions(true, 82, 22);
M_DrawCharSelectExplosions(true, basex + 82, 22);
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
{

View file

@ -697,8 +697,15 @@ void M_StartControlPanel(void)
{
// No instantly skipping the titlescreen.
// (We can change this timer later when extra animation is added.)
if (finalecount < 1)
if (finalecount < (
M_GameTrulyStarted()
? 1
: 3*TICRATE
)
)
{
return;
}
if (menumessage.active)
{

View file

@ -4,6 +4,7 @@
#include "../i_time.h"
#include "../k_menu.h"
#include "../s_sound.h"
#include "../m_cond.h"
// profile select
menuitem_t OPTIONS_Profiles[] = {
@ -118,6 +119,13 @@ void M_StartEditProfile(INT32 c)
OPTIONS_EditProfile[popt_char].status |= IT_TRANSTEXT;
}
// Setup variable tooltips.
OPTIONS_EditProfile[popt_char].tooltip = (
(gamedata && gamedata->numspraycans != 0 && gamedata->gotspraycans != 0)
? "Default character and color."
: "Default character."
);
OPTIONS_EditProfileDef.prevMenu = currentMenu;
M_SetupNextMenu(&OPTIONS_EditProfileDef, false);
return;

View file

@ -18,7 +18,7 @@ menuitem_t OPTIONS_EditProfile[] = {
{IT_STRING | IT_SUBMENU, "Accessibility", "Acccessibility and quality of life options.",
NULL, {.submenu = &OPTIONS_ProfileAccessibilityDef}, 0, 91},
{IT_STRING | IT_CALL, "Character", "Default character and color.",
{IT_STRING | IT_CALL, "Character", NULL, // tooltip set in M_StartEditProfile
NULL, {.routine = M_CharacterSelect}, 0, 111},
{IT_STRING | IT_CVAR | IT_CV_STRING, "Player Tag", "Name displayed online and in replays.",

View file

@ -34,6 +34,7 @@
#include "k_battle.h"
#include "k_specialstage.h"
#include "k_pwrlv.h"
#include "k_profiles.h"
#include "k_grandprix.h"
#include "k_respawn.h"
#include "p_spec.h"
@ -784,6 +785,19 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
gamedata->spraycans[can_id].map = gamemap-1;
mapheaderinfo[gamemap-1]->cache_spraycan = can_id;
if (gamedata->gotspraycans == 0
&& gametype == GT_TUTORIAL
&& cv_ttlprofilen.value > 0
&& cv_ttlprofilen.value < PR_GetNumProfiles())
{
profile_t *p = PR_GetProfile(cv_ttlprofilen.value);
if (p->color == SKINCOLOR_NONE)
{
// Apply your favourite colour to the profile!
p->color = gamedata->spraycans[can_id].col;
}
}
gamedata->gotspraycans++;
if (!M_UpdateUnlockablesAndExtraEmblems(true, true))

View file

@ -719,6 +719,8 @@ void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset)
);
}
}
else if (gamestate == GS_LEVEL)
;
else if (standings->rankingsmode != 0)
{
char *increasenum = NULL;