From 6560c012fc5f98fef5fe4ce6168edac487c919ec Mon Sep 17 00:00:00 2001 From: Kiloku Date: Fri, 3 Jan 2025 19:19:10 -0300 Subject: per-level checkpoints --- src/engine/fox_play.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/engine') diff --git a/src/engine/fox_play.c b/src/engine/fox_play.c index 74ffdb13..9f72f4e8 100644 --- a/src/engine/fox_play.c +++ b/src/engine/fox_play.c @@ -4678,10 +4678,15 @@ void Player_Setup(Player* playerx) { gDisplayedHitCount = gHitCount; D_hud_80161730 = 0; - if (CVarGetInteger("gCheckpoint.Set", 0) && CVarGetInteger("gCheckpoint.gSavedLevel", -1) == gCurrentLevel) { - gSavedGroundSurface = CVarGetInteger("gCheckpoint.gSavedGroundSurface", gSavedGroundSurface); - gSavedPathProgress = CVarGetFloat("gCheckpoint.gSavedPathProgress", gSavedPathProgress); - gSavedObjectLoadIndex = CVarGetInteger("gCheckpoint.gSavedObjectLoadIndex", gSavedObjectLoadIndex); + char buffer [48] = {"\0"}; + sprintf(buffer, "gCheckpoint.%d.Set", gCurrentLevel); + if (CVarGetInteger(buffer, 0)) { + sprintf(buffer, "gCheckpoint.%d.gSavedGroundSurface", gCurrentLevel); + gSavedGroundSurface = CVarGetInteger(buffer, gSavedGroundSurface); + sprintf(buffer, "gCheckpoint.%d.gSavedPathProgress", gCurrentLevel); + gSavedPathProgress = CVarGetFloat(buffer, gSavedPathProgress); + sprintf(buffer, "gCheckpoint.%d.gSavedObjectLoadIndex", gCurrentLevel); + gSavedObjectLoadIndex = CVarGetInteger(buffer, gSavedObjectLoadIndex); } gMissedZoSearchlight = gSavedZoSearchlightStatus; -- cgit v1.2.3