From ac80973ee96dc7d65a8c8b4861a69e8e189c7434 Mon Sep 17 00:00:00 2001 From: Treeki Date: Thu, 14 Feb 2013 01:59:52 +0100 Subject: fix a bug with the w7 to w8 transition. untested though --- src/koopatlas/pathmanager.cpp | 43 ++++++++++++++++++++++++++----------------- src/koopatlas/pathmanager.h | 2 ++ 2 files changed, 28 insertions(+), 17 deletions(-) (limited to 'src') 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; -- cgit v1.2.3