diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fileselect.S | 5 | ||||
| -rw-r--r-- | src/koopatlas/pathmanager.cpp | 17 | 
2 files changed, 18 insertions, 4 deletions
| 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(); | 
