mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'retry-end-demo' into 'master'
Simpler solution to #1225: If a retry flag occurs in a demo, stop playback immediately! See merge request KartKrew/Kart!2230
This commit is contained in:
commit
1ff321d375
1 changed files with 28 additions and 6 deletions
34
src/g_game.c
34
src/g_game.c
|
|
@ -1798,11 +1798,25 @@ void G_Ticker(boolean run)
|
||||||
|
|
||||||
P_MapStart();
|
P_MapStart();
|
||||||
|
|
||||||
if (gamestate == GS_LEVEL)
|
if (gamestate == GS_LEVEL && G_GetRetryFlag())
|
||||||
|
{
|
||||||
|
if (demo.playback == true)
|
||||||
|
{
|
||||||
|
// Stop playback!!
|
||||||
|
G_ClearRetryFlag();
|
||||||
|
// G_CheckDemoStatus() called here fails an I_Assert in g_party.cpp Console()!?
|
||||||
|
// I'm sure there's a completely logical explanation and an elegant solution
|
||||||
|
// where we can defer some sort of state change. However I'm tired, I've been
|
||||||
|
// looking after my niece, my arm hurts a bit when using mouse/keyboard, and
|
||||||
|
// we are ALMOST DONE. So I'm going to bodge this for the sake of release.
|
||||||
|
// The minimal set of calls to dump you back to the menu as soon as possible
|
||||||
|
// will have to do, so that everybody can have fun racing as rings. ~toast 050424
|
||||||
|
G_StopDemo();
|
||||||
|
Command_ExitGame_f();
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Or, alternatively, retry.
|
// Or, alternatively, retry.
|
||||||
if (G_GetRetryFlag())
|
|
||||||
{
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (playeringame[i])
|
if (playeringame[i])
|
||||||
|
|
@ -3125,10 +3139,11 @@ void G_FinishExitLevel(void)
|
||||||
|
|
||||||
if (gamestate == GS_LEVEL)
|
if (gamestate == GS_LEVEL)
|
||||||
{
|
{
|
||||||
|
const boolean worknetgame = (demo.playback ? demo.netgame : netgame);
|
||||||
if (g_exit.retry)
|
if (g_exit.retry)
|
||||||
{
|
{
|
||||||
// Restart cup here whenever we do Online GP
|
// Restart cup here whenever we do Online GP
|
||||||
if (!netgame)
|
if (!worknetgame)
|
||||||
{
|
{
|
||||||
// We have lives, just redo this one course.
|
// We have lives, just redo this one course.
|
||||||
G_SetRetryFlag();
|
G_SetRetryFlag();
|
||||||
|
|
@ -3137,11 +3152,18 @@ void G_FinishExitLevel(void)
|
||||||
}
|
}
|
||||||
else if (g_exit.losing)
|
else if (g_exit.losing)
|
||||||
{
|
{
|
||||||
// We were in a Special Stage.
|
// Were we in a Special Stage?
|
||||||
// We can still progress to the podium when we game over here.
|
// We can still progress to the podium when we game over here.
|
||||||
const boolean special = grandprixinfo.gp == true && grandprixinfo.cup != NULL && grandprixinfo.eventmode == GPEVENT_SPECIAL;
|
const boolean special = grandprixinfo.gp == true && grandprixinfo.cup != NULL && grandprixinfo.eventmode == GPEVENT_SPECIAL;
|
||||||
|
|
||||||
if (!netgame && !special)
|
if (demo.playback && !worknetgame)
|
||||||
|
{
|
||||||
|
// Guarantee conclusion to Sealed Star replay
|
||||||
|
G_SetRetryFlag();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!worknetgame && !special)
|
||||||
{
|
{
|
||||||
// Back to the menu with you.
|
// Back to the menu with you.
|
||||||
G_HandleSaveLevel(true);
|
G_HandleSaveLevel(true);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue