mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Add skipping to Evaluation
- Includes the sliding intermission button
- Can only skip after the savedata has been updated
- Always update the savedata at the same duration into the Evaluation
This commit is contained in:
parent
75900e4891
commit
94db9ac3a6
3 changed files with 86 additions and 11 deletions
|
|
@ -933,8 +933,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;
|
||||||
|
|
@ -988,10 +993,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1273,19 +1281,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
|
||||||
|
|
@ -1303,13 +1306,13 @@ void F_GameEvaluationTicker(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (++finalecount > evallen)
|
if (++finalecount == timetonext)
|
||||||
{
|
{
|
||||||
F_StartGameEnd();
|
F_StartGameEnd();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (finalecount == evallen/2)
|
if (finalecount == EVALLEN_HALFWAY)
|
||||||
{
|
{
|
||||||
if (!usedCheats)
|
if (!usedCheats)
|
||||||
{
|
{
|
||||||
|
|
@ -1321,8 +1324,66 @@ void F_GameEvaluationTicker(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef EVALLEN_PERFECT
|
boolean F_EvaluationResponder(event_t *event)
|
||||||
|
{
|
||||||
|
INT32 key = event->data1;
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
if (finalecount <= EVALLEN_HALFWAY + TICRATE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (finalecount > (timetonext - TICRATE))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (keypressed)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
keypressed = true;
|
||||||
|
timetonext = finalecount + TICRATE;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#undef EVALLEN_NORMAL
|
#undef EVALLEN_NORMAL
|
||||||
|
#undef EVALLEN_HALFWAY
|
||||||
|
#undef EVALLEN_PERFECT
|
||||||
|
|
||||||
// ==========
|
// ==========
|
||||||
// GAME END
|
// GAME END
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ extern "C" {
|
||||||
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);
|
boolean F_CreditResponder(event_t *ev);
|
||||||
|
boolean F_EvaluationResponder(event_t *ev);
|
||||||
|
|
||||||
// Called by main loop.
|
// Called by main loop.
|
||||||
void F_IntroTicker(void);
|
void F_IntroTicker(void);
|
||||||
|
|
|
||||||
13
src/g_game.c
13
src/g_game.c
|
|
@ -1373,6 +1373,19 @@ boolean G_Responder(event_t *ev)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (gamestate == GS_EVALUATION)
|
||||||
|
{
|
||||||
|
if (HU_Responder(ev))
|
||||||
|
{
|
||||||
|
hu_keystrokes = true;
|
||||||
|
return true; // chat ate the event
|
||||||
|
}
|
||||||
|
|
||||||
|
if (F_EvaluationResponder(ev))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (gamestate == GS_CEREMONY)
|
else if (gamestate == GS_CEREMONY)
|
||||||
{
|
{
|
||||||
if (HU_Responder(ev))
|
if (HU_Responder(ev))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue