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())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// Or, alternatively, retry.
 | 
							if (demo.playback == true)
 | 
				
			||||||
		if (G_GetRetryFlag())
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								// 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.
 | 
				
			||||||
			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