소스 검색

Show root mods for maps

nordsoft 2 년 전
부모
커밋
60eef59bc9
1개의 변경된 파일13개의 추가작업 그리고 5개의 파일을 삭제
  1. 13 5
      lib/mapping/CMapService.cpp

+ 13 - 5
lib/mapping/CMapService.cpp

@@ -94,7 +94,7 @@ ModCompatibilityInfo CMapService::verifyMapHeaderMods(const CMapHeader & map)
 {
 	const auto & activeMods = VLC->modh->getActiveMods();
 	
-	ModCompatibilityInfo modCompatibilityInfo;
+	ModCompatibilityInfo missingMods, missingModsFiltered;
 	for(const auto & mapMod : map.mods)
 	{
 		if(vstd::contains(activeMods, mapMod.first))
@@ -103,10 +103,18 @@ ModCompatibilityInfo CMapService::verifyMapHeaderMods(const CMapHeader & map)
 			if(modInfo.getVerificationInfo().version.compatible(mapMod.second.version))
 				continue;
 		}
-		
-		modCompatibilityInfo[mapMod.first] = mapMod.second;
-	}	
-	return modCompatibilityInfo;
+		missingMods[mapMod.first] = mapMod.second;
+	}
+	
+	//filter child mods
+	for(const auto & mapMod : missingMods)
+	{
+		if(!mapMod.second.parent.empty() && missingMods.count(mapMod.second.parent))
+			continue;
+		missingModsFiltered.insert(mapMod);
+	}
+	
+	return missingModsFiltered;
 }
 
 std::unique_ptr<CInputStream> CMapService::getStreamFromFS(const ResourcePath & name)