diff options
| author | Kiloku <mateus.sateles@protonmail.com> | 2025-01-03 16:47:07 -0300 |
|---|---|---|
| committer | Lywx <kiritodev01@gmail.com> | 2025-01-03 16:59:24 -0600 |
| commit | eb44ba0f044586e010daeaa573c65dadd0784e0a (patch) | |
| tree | 526c589e94b7909c3d31dd0b900fe8bd201eef1d /src/port/ui/ImguiUI.cpp | |
| parent | 9506a4297bc159fe3c3ef5f2c0cd04b500e5477e (diff) | |
Prevent loading checkpoints in the wrong level
Diffstat (limited to 'src/port/ui/ImguiUI.cpp')
| -rw-r--r-- | src/port/ui/ImguiUI.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp index 69c1a43c..0e5024f8 100644 --- a/src/port/ui/ImguiUI.cpp +++ b/src/port/ui/ImguiUI.cpp @@ -599,7 +599,17 @@ void DrawDebugMenu() { .tooltip = "Jump to credits at the main menu" }); - if (CVarGetInteger("gCheckpoint.Set", 0)) { + if (CVarGetInteger("gCheckpoint.Set", 0)) { + LevelId savedLevel = CVarGetInteger("gCheckpoint.gSavedLevel", -1); + std::string CheckpointLabel = "Checkpoint is at "; + if (savedLevel == 77){ + CheckpointLabel += "Warp Zone"; + } else if (savedLevel < 0 || savedLevel >= sizeof(GameUI::LevelNameLookup)/sizeof(GameUI::LevelNameLookup[0])) { + CheckpointLabel += "Unknown (out of bounds)"; + } else { + CheckpointLabel += GameUI::LevelNameLookup[CVarGetInteger("gCheckpoint.gSavedLevel", -1)]; + } + ImGui::Text(CheckpointLabel.c_str()); if (UIWidgets::Button("Clear Checkpoint")) { CVarClear("gCheckpoint.Set"); Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); @@ -607,6 +617,7 @@ void DrawDebugMenu() { } else if (gPlayer != NULL) { if (UIWidgets::Button("Set Checkpoint")) { CVarSetInteger("gCheckpoint.Set", 1); + CVarSetInteger("gCheckpoint.gSavedLevel", gCurrentLevel); CVarSetInteger("gCheckpoint.gSavedPathProgress", gGroundSurface); CVarSetFloat("gCheckpoint.gSavedPathProgress", (-gPlayer->pos.z) - 250.0f); CVarSetInteger("gCheckpoint.gSavedObjectLoadIndex", gObjectLoadIndex); |
