Don't add locations to the pool when calculating accessible checks.

This commit is contained in:
Anthony Stewart 2025-02-26 18:54:57 -06:00
commit 2697c61b92

View file

@ -399,14 +399,14 @@ bool AddCheckToLogic(LocationAccess& locPair, GetAccessibleLocationsStruct& gals
RandomizerGet locItem = location->GetPlacedRandomizerGet(); RandomizerGet locItem = location->GetPlacedRandomizerGet();
if (!location->IsAddedToPool() && locPair.ConditionsMet(parentRegion, gals.calculatingAccessibleChecks)) { if (!location->IsAddedToPool() && locPair.ConditionsMet(parentRegion, gals.calculatingAccessibleChecks)) {
location->AddToPool();
if (gals.calculatingAccessibleChecks) { if (gals.calculatingAccessibleChecks) {
gals.accessibleLocations.push_back(loc); gals.accessibleLocations.push_back(loc);
StopPerformanceTimer(PT_LOCATION_LOGIC); StopPerformanceTimer(PT_LOCATION_LOGIC);
return false; return false;
} }
location->AddToPool();
if (locItem == RG_NONE) { if (locItem == RG_NONE) {
gals.accessibleLocations.push_back(loc); //Empty location, consider for placement gals.accessibleLocations.push_back(loc); //Empty location, consider for placement
} else { } else {
@ -504,7 +504,7 @@ std::vector<RandomizerCheck> ReachabilitySearch(const std::vector<RandomizerChec
auto ctx = Rando::Context::GetInstance(); auto ctx = Rando::Context::GetInstance();
GetAccessibleLocationsStruct gals(0); GetAccessibleLocationsStruct gals(0);
gals.calculatingAccessibleChecks = calculatingAccessibleChecks; gals.calculatingAccessibleChecks = calculatingAccessibleChecks;
ResetLogic(ctx, gals, true); ResetLogic(ctx, gals, !calculatingAccessibleChecks);
do { do {
gals.InitLoop(); gals.InitLoop();
for (size_t i = 0; i < gals.regionPool.size(); i++) { for (size_t i = 0; i < gals.regionPool.size(); i++) {