summaryrefslogtreecommitdiff
path: root/src/port/ui/ImguiUI.cpp
diff options
context:
space:
mode:
authorKiloku <mateus.sateles@protonmail.com>2025-01-03 16:47:07 -0300
committerLywx <kiritodev01@gmail.com>2025-01-03 16:59:24 -0600
commiteb44ba0f044586e010daeaa573c65dadd0784e0a (patch)
tree526c589e94b7909c3d31dd0b900fe8bd201eef1d /src/port/ui/ImguiUI.cpp
parent9506a4297bc159fe3c3ef5f2c0cd04b500e5477e (diff)
Prevent loading checkpoints in the wrong level
Diffstat (limited to 'src/port/ui/ImguiUI.cpp')
-rw-r--r--src/port/ui/ImguiUI.cpp13
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);