diff options
| author | Treeki <treeki@gmail.com> | 2013-04-08 22:39:52 +0200 | 
|---|---|---|
| committer | Treeki <treeki@gmail.com> | 2013-04-08 22:39:52 +0200 | 
| commit | 3fdfdf680f89a7c9df888f24e14ea21c740b00fa (patch) | |
| tree | 2cf4e30385d71223304484d6ede182596e90bda7 /src/koopatlas | |
| parent | 14477e22b48ff6deaa06e6596eb21acdd59a4e90 (diff) | |
| download | kamek-3fdfdf680f89a7c9df888f24e14ea21c740b00fa.tar.gz kamek-3fdfdf680f89a7c9df888f24e14ea21c740b00fa.zip | |
fix possible bug with fading in paths after a map switch
Diffstat (limited to '')
| -rw-r--r-- | src/koopatlas/pathmanager.cpp | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp index 579934a..b555b41 100644 --- a/src/koopatlas/pathmanager.cpp +++ b/src/koopatlas/pathmanager.cpp @@ -504,9 +504,15 @@ void dWMPathManager_c::unlockPaths() {  	newlyAvailablePaths = 0;  	newlyAvailableNodes = 0; -	if (oldPathAvData) { +	dScKoopatlas_c *wm = dScKoopatlas_c::instance; +	bool forceFlag = (wm->isAfter8Castle || wm->isAfterKamekCutscene); + +	if (oldPathAvData || forceFlag) {  		for (int i = 0; i < pathLayer->pathCount; i++) { -			if ((PathAvailabilityData[i] > 0) && (oldPathAvData[i] == 0)) { +			if ((PathAvailabilityData[i] > 0) && (forceFlag || oldPathAvData[i] == 0)) { +				if (forceFlag && PathAvailabilityData[i] == dKPPath_s::ALWAYS_AVAILABLE) +					continue; +	  				dKPPath_s *path = pathLayer->paths[i];  				path->isAvailable = dKPPath_s::NEWLY_AVAILABLE;  				newlyAvailablePaths++; @@ -515,17 +521,20 @@ void dWMPathManager_c::unlockPaths() {  				path->setLayerAlpha(0);  			}  		} -		delete[] oldPathAvData;  		// check nodes too  		for (int i = 0; i < pathLayer->nodeCount; i++) { -			if ((NodeAvailabilityData[i] > 0) && (oldNodeAvData[i] == 0)) { +			if ((NodeAvailabilityData[i] > 0) && (forceFlag || oldNodeAvData[i] == 0)) {  				dKPNode_s *node = pathLayer->nodes[i];  				node->isNew = true;  				newlyAvailableNodes++;  			}  		} -		delete[] oldNodeAvData; + +		if (oldPathAvData) { +			delete[] oldPathAvData; +			delete[] oldNodeAvData; +		}  	}  	// now set all node alphas | 
