summaryrefslogtreecommitdiff
path: root/src/koopatlas
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/koopatlas/pathmanager.cpp17
1 files changed, 13 insertions, 4 deletions
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();