mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	"Clear GP and Record Data" has handed off some of its respnsibilities
- Map visitation flags (used for level select access) are now cleared by using "Clear Challenges Data" instead
    - Custom courses will still have their data completely wiped here because it's the case most likely to mean "I want to remove everything", and because I don't want to pick through all the possible places to nuke 'em
- Skin stats (and Eidolon's map stats) are now cleared by using "Clear Statistics Data" instead
			
			
This commit is contained in:
		
							parent
							
								
									e46f246c95
								
							
						
					
					
						commit
						a1ed3f8b23
					
				
					 2 changed files with 59 additions and 15 deletions
				
			
		
							
								
								
									
										21
									
								
								src/g_game.c
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/g_game.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -344,14 +344,10 @@ void G_ClearRecords(void)
 | 
			
		|||
{
 | 
			
		||||
	UINT16 i;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < numskins; i++)
 | 
			
		||||
	{
 | 
			
		||||
		memset(&skins[i].records, 0, sizeof(skins[i].records));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < nummapheaders; i++)
 | 
			
		||||
	{
 | 
			
		||||
		memset(&mapheaderinfo[i]->records, 0, sizeof(recorddata_t));
 | 
			
		||||
		memset(&mapheaderinfo[i]->records.timeattack, 0, sizeof(recordtimes_t));
 | 
			
		||||
		memset(&mapheaderinfo[i]->records.spbattack, 0, sizeof(recordtimes_t));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cupheader_t *cup;
 | 
			
		||||
| 
						 | 
				
			
			@ -360,14 +356,11 @@ void G_ClearRecords(void)
 | 
			
		|||
		memset(&cup->windata, 0, sizeof(cup->windata));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	unloaded_skin_t *unloadedskin, *nextunloadedskin = NULL;
 | 
			
		||||
	for (unloadedskin = unloadedskins; unloadedskin; unloadedskin = nextunloadedskin)
 | 
			
		||||
	{
 | 
			
		||||
		nextunloadedskin = unloadedskin->next;
 | 
			
		||||
		Z_Free(unloadedskin);
 | 
			
		||||
	}
 | 
			
		||||
	unloadedskins = NULL;
 | 
			
		||||
 | 
			
		||||
	// TODO: Technically, these should only remove time attack records here.
 | 
			
		||||
	// But I'm out of juice for dev (+ literally, just finished some OJ).
 | 
			
		||||
	// The stats need to be cleared in M_ClearStats, and I guess there's 
 | 
			
		||||
	// no perfect place to wipe mapvisited because it's not actually part of
 | 
			
		||||
	// basegame progression... so here's fine for launch.  ~toast 100424
 | 
			
		||||
	unloaded_mapheader_t *unloadedmap, *nextunloadedmap = NULL;
 | 
			
		||||
	for (unloadedmap = unloadedmapheaders; unloadedmap; unloadedmap = nextunloadedmap)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										53
									
								
								src/m_cond.c
									
										
									
									
									
								
							
							
						
						
									
										53
									
								
								src/m_cond.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -650,7 +650,8 @@ void M_ClearConditionSet(UINT16 set)
 | 
			
		|||
// Clear ALL secrets.
 | 
			
		||||
void M_ClearStats(void)
 | 
			
		||||
{
 | 
			
		||||
	UINT8 i;
 | 
			
		||||
	UINT16 i;
 | 
			
		||||
 | 
			
		||||
	gamedata->totalplaytime = 0;
 | 
			
		||||
	gamedata->totalnetgametime = 0;
 | 
			
		||||
	gamedata->timeattackingtotaltime = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -678,6 +679,54 @@ void M_ClearStats(void)
 | 
			
		|||
	gamedata->musicstate = GDMUSIC_NONE;
 | 
			
		||||
 | 
			
		||||
	gamedata->importprofilewins = false;
 | 
			
		||||
 | 
			
		||||
	// Skins only store stats, not progression metrics. Good to clear entirely here.
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < numskins; i++)
 | 
			
		||||
	{
 | 
			
		||||
		memset(&skins[i].records, 0, sizeof(skins[i].records));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	unloaded_skin_t *unloadedskin, *nextunloadedskin = NULL;
 | 
			
		||||
	for (unloadedskin = unloadedskins; unloadedskin; unloadedskin = nextunloadedskin)
 | 
			
		||||
	{
 | 
			
		||||
		nextunloadedskin = unloadedskin->next;
 | 
			
		||||
		Z_Free(unloadedskin);
 | 
			
		||||
	}
 | 
			
		||||
	unloadedskins = NULL;
 | 
			
		||||
 | 
			
		||||
	// We retain exclusively the most important stuff from maps.
 | 
			
		||||
 | 
			
		||||
	UINT8 restoremapvisited;
 | 
			
		||||
	recordtimes_t restoretimeattack;
 | 
			
		||||
	recordtimes_t restorespbattack;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < nummapheaders; i++)
 | 
			
		||||
	{
 | 
			
		||||
		restoremapvisited = mapheaderinfo[i]->records.mapvisited;
 | 
			
		||||
		restoretimeattack = mapheaderinfo[i]->records.timeattack;
 | 
			
		||||
		restorespbattack = mapheaderinfo[i]->records.spbattack;
 | 
			
		||||
 | 
			
		||||
		memset(&mapheaderinfo[i]->records, 0, sizeof(recorddata_t));
 | 
			
		||||
 | 
			
		||||
		mapheaderinfo[i]->records.mapvisited = restoremapvisited;
 | 
			
		||||
		mapheaderinfo[i]->records.timeattack = restoretimeattack;
 | 
			
		||||
		mapheaderinfo[i]->records.spbattack = restorespbattack;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	unloaded_mapheader_t *unloadedmap;
 | 
			
		||||
	for (unloadedmap = unloadedmapheaders; unloadedmap; unloadedmap = unloadedmap->next)
 | 
			
		||||
	{
 | 
			
		||||
		restoremapvisited = unloadedmap->records.mapvisited;
 | 
			
		||||
		restoretimeattack = unloadedmap->records.timeattack;
 | 
			
		||||
		restorespbattack = unloadedmap->records.spbattack;
 | 
			
		||||
 | 
			
		||||
		memset(&unloadedmap->records, 0, sizeof(recorddata_t));
 | 
			
		||||
 | 
			
		||||
		unloadedmap->records.mapvisited = restoremapvisited;
 | 
			
		||||
		unloadedmap->records.timeattack = restoretimeattack;
 | 
			
		||||
		unloadedmap->records.spbattack = restorespbattack;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void M_ClearSecrets(void)
 | 
			
		||||
| 
						 | 
				
			
			@ -707,6 +756,8 @@ void M_ClearSecrets(void)
 | 
			
		|||
		if (!mapheaderinfo[i])
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		mapheaderinfo[i]->records.mapvisited = 0;
 | 
			
		||||
 | 
			
		||||
		mapheaderinfo[i]->cache_spraycan = UINT16_MAX;
 | 
			
		||||
 | 
			
		||||
		mapheaderinfo[i]->cache_maplock = MAXUNLOCKABLES;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue