mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-05 00:12:16 +00:00
Merge branch 'gp_buttone' into 'master'
Intermission Button Slide-in See merge request KartKrew/Kart!1450
This commit is contained in:
commit
1c0a6c719c
8 changed files with 198 additions and 267 deletions
46
src/d_main.c
46
src/d_main.c
|
|
@ -440,38 +440,18 @@ static void D_Display(void)
|
||||||
switch (gamestate)
|
switch (gamestate)
|
||||||
{
|
{
|
||||||
case GS_TITLESCREEN:
|
case GS_TITLESCREEN:
|
||||||
if (!titlemapinaction || !curbghide) {
|
if (!titlemapinaction || !curbghide)
|
||||||
|
{
|
||||||
F_TitleScreenDrawer();
|
F_TitleScreenDrawer();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
/* FALLTHRU */
|
|
||||||
case GS_LEVEL:
|
|
||||||
if (!gametic)
|
|
||||||
break;
|
|
||||||
HU_Erase();
|
|
||||||
AM_Drawer();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_INTERMISSION:
|
case GS_INTERMISSION:
|
||||||
Y_IntermissionDrawer();
|
Y_IntermissionDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_VOTING:
|
case GS_VOTING:
|
||||||
Y_VoteDrawer();
|
Y_VoteDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_CEREMONY:
|
|
||||||
if (!gametic)
|
|
||||||
break;
|
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_MENU:
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_INTRO:
|
case GS_INTRO:
|
||||||
|
|
@ -485,24 +465,14 @@ static void D_Display(void)
|
||||||
|
|
||||||
case GS_CUTSCENE:
|
case GS_CUTSCENE:
|
||||||
F_CutsceneDrawer();
|
F_CutsceneDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_EVALUATION:
|
case GS_EVALUATION:
|
||||||
F_GameEvaluationDrawer();
|
F_GameEvaluationDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_CONTINUING:
|
|
||||||
//F_ContinueDrawer();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_CREDITS:
|
case GS_CREDITS:
|
||||||
F_CreditDrawer();
|
F_CreditDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_WAITINGPLAYERS:
|
case GS_WAITINGPLAYERS:
|
||||||
|
|
@ -511,14 +481,15 @@ static void D_Display(void)
|
||||||
{
|
{
|
||||||
// I don't think HOM from nothing drawing is independent...
|
// I don't think HOM from nothing drawing is independent...
|
||||||
F_WaitingPlayersDrawer();
|
F_WaitingPlayersDrawer();
|
||||||
HU_Erase();
|
|
||||||
HU_Drawer();
|
|
||||||
}
|
}
|
||||||
case GS_DEDICATEDSERVER:
|
case GS_DEDICATEDSERVER:
|
||||||
case GS_NULL:
|
case GS_NULL:
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HU_Erase();
|
||||||
|
|
||||||
// STUPID race condition...
|
// STUPID race condition...
|
||||||
{
|
{
|
||||||
wipegamestate = gamestate;
|
wipegamestate = gamestate;
|
||||||
|
|
@ -628,9 +599,9 @@ static void D_Display(void)
|
||||||
{
|
{
|
||||||
case GS_LEVEL:
|
case GS_LEVEL:
|
||||||
{
|
{
|
||||||
|
AM_Drawer();
|
||||||
ST_Drawer();
|
ST_Drawer();
|
||||||
F_TextPromptDrawer();
|
F_TextPromptDrawer();
|
||||||
HU_Drawer();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GS_TITLESCREEN:
|
case GS_TITLESCREEN:
|
||||||
|
|
@ -655,6 +626,11 @@ static void D_Display(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Playing())
|
||||||
|
{
|
||||||
|
HU_Drawer();
|
||||||
|
}
|
||||||
|
|
||||||
// change gamma if needed
|
// change gamma if needed
|
||||||
// (GS_LEVEL handles this already due to level-specific palettes)
|
// (GS_LEVEL handles this already due to level-specific palettes)
|
||||||
if (forcerefresh && G_GamestateUsesLevel() == false)
|
if (forcerefresh && G_GamestateUsesLevel() == false)
|
||||||
|
|
|
||||||
147
src/f_finale.c
147
src/f_finale.c
|
|
@ -712,6 +712,7 @@ void F_StartCredits(void)
|
||||||
finalecount = 0;
|
finalecount = 0;
|
||||||
animtimer = 0;
|
animtimer = 0;
|
||||||
timetonext = 2*TICRATE;
|
timetonext = 2*TICRATE;
|
||||||
|
keypressed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void F_CreditDrawer(void)
|
void F_CreditDrawer(void)
|
||||||
|
|
@ -769,6 +770,15 @@ void F_CreditDrawer(void)
|
||||||
if (((y>>FRACBITS) * vid.dupy) > vid.height)
|
if (((y>>FRACBITS) * vid.dupy) > vid.height)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (finalecount)
|
||||||
|
{
|
||||||
|
Y_DrawIntermissionButton(-1, (timetonext ? 5*TICRATE : TICRATE) - finalecount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Y_DrawIntermissionButton(timetonext, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void F_CreditTicker(void)
|
void F_CreditTicker(void)
|
||||||
|
|
@ -805,18 +815,6 @@ void F_CreditTicker(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do this here rather than in the drawer you doofus! (this is why dedicated mode broke at credits)
|
|
||||||
if (!credits[i] && y <= 120<<FRACBITS && !finalecount)
|
|
||||||
{
|
|
||||||
timetonext = 5*TICRATE+1;
|
|
||||||
finalecount = 5*TICRATE;
|
|
||||||
|
|
||||||
// You watched all the credits? What a trooper!
|
|
||||||
gamedata->everfinishedcredits = true;
|
|
||||||
if (M_UpdateUnlockablesAndExtraEmblems(true, true))
|
|
||||||
G_SaveGameData();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timetonext)
|
if (timetonext)
|
||||||
timetonext--;
|
timetonext--;
|
||||||
else
|
else
|
||||||
|
|
@ -824,68 +822,49 @@ void F_CreditTicker(void)
|
||||||
|
|
||||||
credbgtimer++;
|
credbgtimer++;
|
||||||
|
|
||||||
if (finalecount && --finalecount == 0)
|
// Do this here rather than in the drawer you doofus! (this is why dedicated mode broke at credits)
|
||||||
F_StartGameEvaluation();
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean F_CreditResponder(event_t *event)
|
const boolean reachedbottom = (!credits[i] && y <= 120<<FRACBITS);
|
||||||
{
|
|
||||||
INT32 key = event->data1;
|
|
||||||
|
|
||||||
// remap virtual keys (mouse & joystick buttons)
|
if (reachedbottom && !timetonext)
|
||||||
switch (key)
|
|
||||||
{
|
{
|
||||||
case KEY_MOUSE1:
|
timetonext = 5*TICRATE;
|
||||||
key = KEY_ENTER;
|
|
||||||
break;
|
|
||||||
case KEY_MOUSE1 + 1:
|
|
||||||
key = KEY_BACKSPACE;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1:
|
|
||||||
case KEY_JOY1 + 2:
|
|
||||||
key = KEY_ENTER;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 3:
|
|
||||||
key = 'n';
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 1:
|
|
||||||
key = KEY_BACKSPACE;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1:
|
|
||||||
key = KEY_UPARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 1:
|
|
||||||
key = KEY_DOWNARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 2:
|
|
||||||
key = KEY_LEFTARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 3:
|
|
||||||
key = KEY_RIGHTARROW;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->type != ev_keydown)
|
if (finalecount)
|
||||||
return false;
|
|
||||||
|
|
||||||
if (key == KEY_DOWNARROW || key == KEY_SPACE)
|
|
||||||
{
|
{
|
||||||
if (!timetonext && !finalecount)
|
if (--finalecount == 0)
|
||||||
animtimer += 7;
|
{
|
||||||
return false;
|
F_StartGameEvaluation();
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if (!(gamedata->timesBeaten) && !(netgame || multiplayer) && !cht_debug)
|
if (reachedbottom)
|
||||||
return false;*/
|
{
|
||||||
|
finalecount = 5*TICRATE;
|
||||||
|
|
||||||
if (key != KEY_ESCAPE && key != KEY_ENTER && key != KEY_BACKSPACE)
|
// You watched all the credits? What a trooper!
|
||||||
return false;
|
gamedata->everfinishedcredits = true;
|
||||||
|
if (M_UpdateUnlockablesAndExtraEmblems(true, true))
|
||||||
|
G_SaveGameData();
|
||||||
|
}
|
||||||
|
else if (timetonext)
|
||||||
|
;
|
||||||
|
/*else if (!(gamedata->timesBeaten) && !(netgame || multiplayer) && !cht_debug)
|
||||||
|
;*/
|
||||||
|
else if (!menuactive && M_MenuConfirmPressed(0))
|
||||||
|
{
|
||||||
|
finalecount = TICRATE;
|
||||||
|
|
||||||
if (keypressed)
|
if (netgame
|
||||||
return true;
|
&& (server || IsPlayerAdmin(consoleplayer))
|
||||||
|
)
|
||||||
keypressed = true;
|
{
|
||||||
return true;
|
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============
|
// ============
|
||||||
|
|
@ -901,8 +880,13 @@ typedef enum
|
||||||
EVAL_MAX
|
EVAL_MAX
|
||||||
} evaluationtype_t;
|
} evaluationtype_t;
|
||||||
|
|
||||||
#define EVALLEN_PERFECT (18*TICRATE)
|
|
||||||
#define EVALLEN_NORMAL (14*TICRATE)
|
#define EVALLEN_NORMAL (14*TICRATE)
|
||||||
|
#define EVALLEN_HALFWAY (EVALLEN_NORMAL/2)
|
||||||
|
|
||||||
|
// tyron made something perfect and i would sooner
|
||||||
|
// smite everyone in this room starting with myself
|
||||||
|
// over the idea of cutting it ~toast 250623
|
||||||
|
#define EVALLEN_PERFECT (18*TICRATE)
|
||||||
|
|
||||||
static evaluationtype_t evaluationtype;
|
static evaluationtype_t evaluationtype;
|
||||||
UINT16 finaleemeralds = 0;
|
UINT16 finaleemeralds = 0;
|
||||||
|
|
@ -956,10 +940,13 @@ void F_StartGameEvaluation(void)
|
||||||
else
|
else
|
||||||
evaluationtype = EVAL_PERFECT;
|
evaluationtype = EVAL_PERFECT;
|
||||||
|
|
||||||
|
timetonext = (evaluationtype == EVAL_PERFECT) ? EVALLEN_PERFECT : EVALLEN_NORMAL;
|
||||||
|
|
||||||
gameaction = ga_nothing;
|
gameaction = ga_nothing;
|
||||||
paused = false;
|
paused = false;
|
||||||
CON_ToggleOff();
|
CON_ToggleOff();
|
||||||
|
|
||||||
|
keypressed = false;
|
||||||
finalecount = -1;
|
finalecount = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1241,19 +1228,14 @@ void F_GameEvaluationDrawer(void)
|
||||||
endingtext = va("%s, %s%s", skins[players[consoleplayer].skin].realname, rtatext, cuttext);
|
endingtext = va("%s, %s%s", skins[players[consoleplayer].skin].realname, rtatext, cuttext);
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, 182, V_SNAPTOBOTTOM|(ultimatemode ? V_REDMAP : V_YELLOWMAP), endingtext);
|
V_DrawCenteredString(BASEVIDWIDTH/2, 182, V_SNAPTOBOTTOM|(ultimatemode ? V_REDMAP : V_YELLOWMAP), endingtext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Y_DrawIntermissionButton(EVALLEN_HALFWAY + TICRATE - finalecount, (finalecount + TICRATE) - timetonext);
|
||||||
}
|
}
|
||||||
|
|
||||||
void F_GameEvaluationTicker(void)
|
void F_GameEvaluationTicker(void)
|
||||||
{
|
{
|
||||||
INT32 evallen = EVALLEN_NORMAL;
|
|
||||||
|
|
||||||
if (evaluationtype == EVAL_PERFECT)
|
if (evaluationtype == EVAL_PERFECT)
|
||||||
{
|
{
|
||||||
// tyron made something perfect and i would sooner
|
|
||||||
// smite everyone in this room starting with myself
|
|
||||||
// over the idea of cutting it ~toast 250623
|
|
||||||
evallen = EVALLEN_PERFECT;
|
|
||||||
|
|
||||||
if (finalecount == 1)
|
if (finalecount == 1)
|
||||||
{
|
{
|
||||||
// sitting on that distant _shore
|
// sitting on that distant _shore
|
||||||
|
|
@ -1263,7 +1245,7 @@ void F_GameEvaluationTicker(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (finalecount == 1)
|
if (finalecount == TICRATE/2)
|
||||||
{
|
{
|
||||||
// _drift across open waters
|
// _drift across open waters
|
||||||
Music_Remap("shore", "_DRIFT");
|
Music_Remap("shore", "_DRIFT");
|
||||||
|
|
@ -1271,13 +1253,25 @@ void F_GameEvaluationTicker(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (++finalecount > evallen)
|
if (++finalecount == timetonext)
|
||||||
{
|
{
|
||||||
F_StartGameEnd();
|
F_StartGameEnd();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (finalecount == evallen/2)
|
if (keypressed)
|
||||||
|
;
|
||||||
|
else if (finalecount <= EVALLEN_HALFWAY + TICRATE)
|
||||||
|
;
|
||||||
|
else if (finalecount >= (timetonext - TICRATE))
|
||||||
|
;
|
||||||
|
else if (!menuactive && M_MenuConfirmPressed(0))
|
||||||
|
{
|
||||||
|
keypressed = true;
|
||||||
|
timetonext = finalecount + TICRATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (finalecount == EVALLEN_HALFWAY)
|
||||||
{
|
{
|
||||||
if (!usedCheats)
|
if (!usedCheats)
|
||||||
{
|
{
|
||||||
|
|
@ -1289,8 +1283,9 @@ void F_GameEvaluationTicker(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef EVALLEN_PERFECT
|
|
||||||
#undef EVALLEN_NORMAL
|
#undef EVALLEN_NORMAL
|
||||||
|
#undef EVALLEN_HALFWAY
|
||||||
|
#undef EVALLEN_PERFECT
|
||||||
|
|
||||||
// ==========
|
// ==========
|
||||||
// GAME END
|
// GAME END
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ extern "C" {
|
||||||
// Called by main loop.
|
// Called by main loop.
|
||||||
boolean F_IntroResponder(event_t *ev);
|
boolean F_IntroResponder(event_t *ev);
|
||||||
boolean F_CutsceneResponder(event_t *ev);
|
boolean F_CutsceneResponder(event_t *ev);
|
||||||
boolean F_CreditResponder(event_t *ev);
|
|
||||||
|
|
||||||
// Called by main loop.
|
// Called by main loop.
|
||||||
void F_IntroTicker(void);
|
void F_IntroTicker(void);
|
||||||
|
|
|
||||||
70
src/g_game.c
70
src/g_game.c
|
|
@ -1329,13 +1329,20 @@ boolean G_Responder(event_t *ev)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gamestate == GS_LEVEL)
|
if (Playing())
|
||||||
{
|
{
|
||||||
|
// If you're playing, chat is real.
|
||||||
|
// Neatly sidesteps a class of bugs where whenever we add a
|
||||||
|
// new gamestate accessible in netplay, chat was console-only.
|
||||||
if (HU_Responder(ev))
|
if (HU_Responder(ev))
|
||||||
{
|
{
|
||||||
hu_keystrokes = true;
|
hu_keystrokes = true;
|
||||||
return true; // chat ate the event
|
return true; // chat ate the event
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gamestate == GS_LEVEL)
|
||||||
|
{
|
||||||
if (AM_Responder(ev))
|
if (AM_Responder(ev))
|
||||||
return true; // automap ate it
|
return true; // automap ate it
|
||||||
// map the event (key/mouse/joy) to a gamecontrol
|
// map the event (key/mouse/joy) to a gamecontrol
|
||||||
|
|
@ -1351,73 +1358,12 @@ boolean G_Responder(event_t *ev)
|
||||||
}
|
}
|
||||||
else if (gamestate == GS_CUTSCENE)
|
else if (gamestate == GS_CUTSCENE)
|
||||||
{
|
{
|
||||||
if (HU_Responder(ev))
|
|
||||||
{
|
|
||||||
hu_keystrokes = true;
|
|
||||||
return true; // chat ate the event
|
|
||||||
}
|
|
||||||
|
|
||||||
if (F_CutsceneResponder(ev))
|
if (F_CutsceneResponder(ev))
|
||||||
{
|
{
|
||||||
D_StartTitle();
|
D_StartTitle();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gamestate == GS_CREDITS)
|
|
||||||
{
|
|
||||||
if (HU_Responder(ev))
|
|
||||||
{
|
|
||||||
hu_keystrokes = true;
|
|
||||||
return true; // chat ate the event
|
|
||||||
}
|
|
||||||
|
|
||||||
if (F_CreditResponder(ev))
|
|
||||||
{
|
|
||||||
// Skip credits for everyone
|
|
||||||
if (! netgame)
|
|
||||||
F_StartGameEvaluation();
|
|
||||||
else if (server || IsPlayerAdmin(consoleplayer))
|
|
||||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (gamestate == GS_CEREMONY)
|
|
||||||
{
|
|
||||||
if (HU_Responder(ev))
|
|
||||||
{
|
|
||||||
hu_keystrokes = true;
|
|
||||||
return true; // chat ate the event
|
|
||||||
}
|
|
||||||
|
|
||||||
if (K_CeremonyResponder(ev))
|
|
||||||
{
|
|
||||||
if (grandprixinfo.gp == true
|
|
||||||
&& grandprixinfo.cup != NULL
|
|
||||||
&& grandprixinfo.cup->playcredits == true)
|
|
||||||
{
|
|
||||||
nextmap = NEXTMAP_CREDITS;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nextmap = NEXTMAP_TITLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
G_EndGame();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (gamestate == GS_CONTINUING)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (gamestate == GS_INTERMISSION || gamestate == GS_VOTING || gamestate == GS_EVALUATION)
|
|
||||||
{
|
|
||||||
if (HU_Responder(ev))
|
|
||||||
{
|
|
||||||
hu_keystrokes = true;
|
|
||||||
return true; // chat ate the event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gamestate == GS_LEVEL && ev->type == ev_keydown && multiplayer && demo.playback && !demo.freecam)
|
if (gamestate == GS_LEVEL && ev->type == ev_keydown && multiplayer && demo.playback && !demo.freecam)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -461,70 +461,36 @@ void K_CeremonyTicker(boolean run)
|
||||||
podiumData.delay = 0;
|
podiumData.delay = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (podiumData.delay == TICRATE)
|
||||||
|
{
|
||||||
|
if (!menuactive && M_MenuConfirmPressed(0))
|
||||||
|
{
|
||||||
|
podiumData.delay++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (++podiumData.delay == 2*TICRATE)
|
||||||
|
{
|
||||||
|
if (grandprixinfo.gp == true
|
||||||
|
&& grandprixinfo.cup != NULL
|
||||||
|
&& grandprixinfo.cup->playcredits == true)
|
||||||
|
{
|
||||||
|
nextmap = NEXTMAP_CREDITS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nextmap = NEXTMAP_TITLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_EndGame();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------
|
|
||||||
boolean K_CeremonyResponder(event_t *event)
|
|
||||||
|
|
||||||
See header file for description.
|
|
||||||
--------------------------------------------------*/
|
|
||||||
boolean K_CeremonyResponder(event_t *event)
|
|
||||||
{
|
|
||||||
INT32 key = event->data1;
|
|
||||||
|
|
||||||
if (podiumData.ranking == false || podiumData.state < PODIUM_STATES)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// remap virtual keys (mouse & joystick buttons)
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case KEY_MOUSE1:
|
|
||||||
key = KEY_ENTER;
|
|
||||||
break;
|
|
||||||
case KEY_MOUSE1 + 1:
|
|
||||||
key = KEY_BACKSPACE;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1:
|
|
||||||
case KEY_JOY1 + 2:
|
|
||||||
key = KEY_ENTER;
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 3:
|
|
||||||
key = 'n';
|
|
||||||
break;
|
|
||||||
case KEY_JOY1 + 1:
|
|
||||||
key = KEY_BACKSPACE;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1:
|
|
||||||
key = KEY_UPARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 1:
|
|
||||||
key = KEY_DOWNARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 2:
|
|
||||||
key = KEY_LEFTARROW;
|
|
||||||
break;
|
|
||||||
case KEY_HAT1 + 3:
|
|
||||||
key = KEY_RIGHTARROW;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event->type != ev_keydown)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key != KEY_ESCAPE && key != KEY_ENTER && key != KEY_BACKSPACE)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
void K_CeremonyDrawer(void)
|
void K_CeremonyDrawer(void)
|
||||||
|
|
||||||
|
|
@ -625,11 +591,8 @@ void K_CeremonyDrawer(void)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 9:
|
default:
|
||||||
{
|
{
|
||||||
V_DrawThinString(2, BASEVIDHEIGHT - 10, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_6WIDTHSPACE,
|
|
||||||
"Press some button type deal to continue"
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,4 +606,9 @@ void K_CeremonyDrawer(void)
|
||||||
// Level fade-in
|
// Level fade-in
|
||||||
V_DrawCustomFadeScreen(((levelfadecol == 0) ? "FADEMAP1" : "FADEMAP0"), 31-(timeinmap*2));
|
V_DrawCustomFadeScreen(((levelfadecol == 0) ? "FADEMAP1" : "FADEMAP0"), 31-(timeinmap*2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (podiumData.state == PODIUM_STATES)
|
||||||
|
{
|
||||||
|
Y_DrawIntermissionButton(TICRATE - podiumData.delay, podiumData.delay - TICRATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -189,24 +189,6 @@ void K_ResetCeremony(void);
|
||||||
void K_CeremonyTicker(boolean run);
|
void K_CeremonyTicker(boolean run);
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------------------------
|
|
||||||
void K_CeremonyResponder(event_t *ev);
|
|
||||||
|
|
||||||
Responder function to be ran during the podium
|
|
||||||
cutscene mode gamestate. Handles key presses
|
|
||||||
ending the podium scene.
|
|
||||||
|
|
||||||
Input Arguments:-
|
|
||||||
ev - The player input event.
|
|
||||||
|
|
||||||
Return:-
|
|
||||||
true to end the podium cutscene and return
|
|
||||||
to the title screen, otherwise false.
|
|
||||||
--------------------------------------------------*/
|
|
||||||
|
|
||||||
boolean K_CeremonyResponder(event_t *ev);
|
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
void K_CeremonyDrawer(void);
|
void K_CeremonyDrawer(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1349,6 +1349,67 @@ void Y_RoundQueueDrawer(y_data_t *standings, INT32 offset, boolean doanimations,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define INTERBUTTONSLIDEIN (TICRATE/2)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Y_DrawIntermissionButton
|
||||||
|
//
|
||||||
|
// It's a button that slides at the given time
|
||||||
|
//
|
||||||
|
void Y_DrawIntermissionButton(INT32 startslide, INT32 through)
|
||||||
|
{
|
||||||
|
INT32 percentslide = 0;
|
||||||
|
const INT32 slidetime = (TICRATE/4);
|
||||||
|
boolean pressed = false;
|
||||||
|
|
||||||
|
if (startslide >= 0)
|
||||||
|
{
|
||||||
|
through = startslide;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
through -= ((TICRATE/2) + 1);
|
||||||
|
pressed = (!menuactive && M_MenuConfirmHeld(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (through >= 0)
|
||||||
|
{
|
||||||
|
if (through >= slidetime)
|
||||||
|
{
|
||||||
|
percentslide = FRACUNIT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
percentslide = R_InterpolateFixed(
|
||||||
|
(through - 1) * FRACUNIT,
|
||||||
|
(through * FRACUNIT)
|
||||||
|
) / slidetime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (percentslide < FRACUNIT)
|
||||||
|
{
|
||||||
|
INT32 offset = 0;
|
||||||
|
|
||||||
|
if (percentslide)
|
||||||
|
{
|
||||||
|
offset = Easing_InCubic(
|
||||||
|
percentslide,
|
||||||
|
0,
|
||||||
|
16 * FRACUNIT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
K_drawButton(
|
||||||
|
2*FRACUNIT - offset,
|
||||||
|
(BASEVIDHEIGHT - 16)*FRACUNIT,
|
||||||
|
0,
|
||||||
|
kp_button_a[1],
|
||||||
|
pressed
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Y_IntermissionDrawer
|
// Y_IntermissionDrawer
|
||||||
//
|
//
|
||||||
|
|
@ -1541,13 +1602,7 @@ finalcounter:
|
||||||
|
|
||||||
if (Y_CanSkipIntermission())
|
if (Y_CanSkipIntermission())
|
||||||
{
|
{
|
||||||
K_drawButton(
|
Y_DrawIntermissionButton(INTERBUTTONSLIDEIN - intertic, 3*TICRATE - timer);
|
||||||
2*FRACUNIT,
|
|
||||||
(BASEVIDHEIGHT - 16)*FRACUNIT,
|
|
||||||
0,
|
|
||||||
kp_button_a[1],
|
|
||||||
M_MenuConfirmHeld(0)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1597,14 +1652,22 @@ void Y_Ticker(void)
|
||||||
|
|
||||||
if (Y_CanSkipIntermission())
|
if (Y_CanSkipIntermission())
|
||||||
{
|
{
|
||||||
if (M_MenuConfirmPressed(0))
|
if (intertic < INTERBUTTONSLIDEIN)
|
||||||
|
{
|
||||||
|
intertic++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean preventintertic = (intertic == INTERBUTTONSLIDEIN);
|
||||||
|
|
||||||
|
if (!menuactive && M_MenuConfirmPressed(0))
|
||||||
{
|
{
|
||||||
// If there is a roundqueue, make time for it.
|
// If there is a roundqueue, make time for it.
|
||||||
// Else, end instantly on button press.
|
// Else, end instantly on button press.
|
||||||
// Actually, give it a slight delay, so the "kaching" sound isn't cut off.
|
// Actually, give it a slight delay, so the "kaching" sound isn't cut off.
|
||||||
const tic_t end = roundqueue.size != 0 ? 3*TICRATE : TICRATE;
|
const tic_t end = roundqueue.size != 0 ? 3*TICRATE : TICRATE;
|
||||||
|
|
||||||
if (intertic == -1) // card flip hasn't started
|
if (intertic == INTERBUTTONSLIDEIN) // card flip hasn't started
|
||||||
{
|
{
|
||||||
if (sorttic != -1)
|
if (sorttic != -1)
|
||||||
{
|
{
|
||||||
|
|
@ -1612,9 +1675,10 @@ void Y_Ticker(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
intertic = 0;
|
|
||||||
timer = end;
|
timer = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
preventintertic = false;
|
||||||
}
|
}
|
||||||
else if (timer >= INFINITE_TIMER && intertic >= sorttic + 16) // card done flipping
|
else if (timer >= INFINITE_TIMER && intertic >= sorttic + 16) // card done flipping
|
||||||
{
|
{
|
||||||
|
|
@ -1629,7 +1693,7 @@ void Y_Ticker(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intertic == -1)
|
if (preventintertic)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ void Y_Ticker(void);
|
||||||
// Specific sub-drawers
|
// Specific sub-drawers
|
||||||
void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset);
|
void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset);
|
||||||
void Y_RoundQueueDrawer(y_data_t *standings, INT32 offset, boolean doanimations, boolean widescreen);
|
void Y_RoundQueueDrawer(y_data_t *standings, INT32 offset, boolean doanimations, boolean widescreen);
|
||||||
|
void Y_DrawIntermissionButton(INT32 startslide, INT32 through);
|
||||||
|
|
||||||
void Y_StartIntermission(void);
|
void Y_StartIntermission(void);
|
||||||
void Y_EndIntermission(void);
|
void Y_EndIntermission(void);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue