summaryrefslogtreecommitdiff
path: root/src/koopatlas
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas')
-rw-r--r--src/koopatlas/pathmanager.cpp43
-rw-r--r--src/koopatlas/pathmanager.h2
2 files changed, 28 insertions, 17 deletions
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp
index dd291cb..7f7239b 100644
--- a/src/koopatlas/pathmanager.cpp
+++ b/src/koopatlas/pathmanager.cpp
@@ -154,6 +154,9 @@ void dWMPathManager_c::setup() {
MaybeFinishingLevel[0] = 0xFF;
}
+
+ if (wm->isAfterKamekCutscene)
+ copyWorldDefToSave(wm->mapData.findWorldDef(1));
}
static u8 *PathAvailabilityData = 0;
@@ -808,23 +811,7 @@ void dWMPathManager_c::moveThroughPath(int pressedDir) {
}
OSReport("Found!\n");
- strncpy(save->newerWorldName, world->name, 32);
- save->newerWorldName[31] = 0;
- save->newerWorldID = world->worldID;
- save->currentMapMusic = world->trackID;
-
- for (int i = 0; i < 2; i++) {
- save->fsTextColours[i] = world->fsTextColours[i];
- save->fsHintColours[i] = world->fsHintColours[i];
- save->hudTextColours[i] = world->hudTextColours[i];
- }
-
- save->hudHintH = world->hudHintH;
- save->hudHintS = world->hudHintS;
- save->hudHintL = world->hudHintL;
-
- save->titleScreenWorld = world->titleScreenWorld;
- save->titleScreenLevel = world->titleScreenLevel;
+ copyWorldDefToSave(world);
bool wzHack = false;
if (dScKoopatlas_c::instance->warpZoneHacks) {
@@ -909,6 +896,28 @@ void dWMPathManager_c::moveThroughPath(int pressedDir) {
}
}
+void dWMPathManager_c::copyWorldDefToSave(const dKPWorldDef_s *world) {
+ SaveBlock *save = GetSaveFile()->GetBlock(-1);
+
+ strncpy(save->newerWorldName, world->name, 32);
+ save->newerWorldName[31] = 0;
+ save->newerWorldID = world->worldID;
+ save->currentMapMusic = world->trackID;
+
+ for (int i = 0; i < 2; i++) {
+ save->fsTextColours[i] = world->fsTextColours[i];
+ save->fsHintColours[i] = world->fsHintColours[i];
+ save->hudTextColours[i] = world->hudTextColours[i];
+ }
+
+ save->hudHintH = world->hudHintH;
+ save->hudHintS = world->hudHintS;
+ save->hudHintL = world->hudHintL;
+
+ save->titleScreenWorld = world->titleScreenWorld;
+ save->titleScreenLevel = world->titleScreenLevel;
+}
+
void dWMPathManager_c::activatePoint() {
if (levelStartWait >= 0)
return;
diff --git a/src/koopatlas/pathmanager.h b/src/koopatlas/pathmanager.h
index 18a08c9..8f04e34 100644
--- a/src/koopatlas/pathmanager.h
+++ b/src/koopatlas/pathmanager.h
@@ -32,6 +32,8 @@ class dWMPathManager_c {
void activatePoint();
void unlockAllPaths(char type);
+ void copyWorldDefToSave(const dKPWorldDef_s *world);
+
dKPLayer_s *pathLayer;
bool isMoving;