From ad4ca391a7fe8397a4322b44d6c35bc667e9e0ed Mon Sep 17 00:00:00 2001 From: Treeki Date: Thu, 18 Apr 2013 00:41:28 +0200 Subject: reset static variables used by the world map in File Select --- src/fileselect.S | 5 +++++ src/koopatlas/pathmanager.cpp | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fileselect.S b/src/fileselect.S index 5847201..25b1805 100644 --- a/src/fileselect.S +++ b/src/fileselect.S @@ -160,6 +160,11 @@ chosenWName: li r5, 0 bl InsertIntIntoTextBox1 +.extern ResetAllCompletionCandidates__Fv +.extern ClearOldPathAvailabilityData__Fv + bl ResetAllCompletionCandidates__Fv + bl ClearOldPathAvailabilityData__Fv + lwz r22, 0x24(r1) lwz r21, 0x28(r1) lwz r20, 0x2C(r1) diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp index ad39c69..697b9fb 100644 --- a/src/koopatlas/pathmanager.cpp +++ b/src/koopatlas/pathmanager.cpp @@ -18,6 +18,7 @@ bool CanFinishAllCoins = false; bool CanFinishAllExits = false; bool CanFinishEverything = false; void ResetAllCompletionCandidates() { + // This is called by File Select, btw MaybeFinishingLevel[0] = 0xFF; LastLevelPlayed[0] = 0xFF; CanFinishCoins = false; @@ -273,15 +274,23 @@ void dWMPathManager_c::setup() { static u8 *PathAvailabilityData = 0; static u8 *NodeAvailabilityData = 0; -dWMPathManager_c::~dWMPathManager_c() { - bool entering8_25 = (MaybeFinishingLevel[0] == 7) && (MaybeFinishingLevel[1] == 24); - if (PathAvailabilityData && !isEnteringLevel && !entering8_25) { +void ClearOldPathAvailabilityData() { + // This is called by File Select + if (PathAvailabilityData) { delete[] PathAvailabilityData; PathAvailabilityData = 0; - + } + if (NodeAvailabilityData) { delete[] NodeAvailabilityData; NodeAvailabilityData = 0; } +} + +dWMPathManager_c::~dWMPathManager_c() { + bool entering8_25 = (MaybeFinishingLevel[0] == 7) && (MaybeFinishingLevel[1] == 24); + if (!isEnteringLevel && !entering8_25) { + ClearOldPathAvailabilityData(); + } if (isEnteringLevel) { ResetAllCompletionCandidates(); -- cgit v1.2.3