@@ -473,31 +473,39 @@ public bool AreProvinceGroupsAdjacentByLand(FrozenSet<ulong> group1, FrozenSet<u
473473
474474 // Function for checking if two land provinces are connected to the same water body.
475475 public bool AreProvinceGroupsConnectedByWaterBody ( FrozenSet < ulong > group1 , FrozenSet < ulong > group2 ) {
476- var group1WaterNeighbors = new HashSet < ulong > ( ) ;
476+ var group1WaterBodies = new HashSet < ulong > ( ) ;
477477 foreach ( var provId in group1 ) {
478478 if ( ! NeighborsDict . TryGetValue ( provId , out var neighbors ) ) {
479479 continue ;
480480 }
481- foreach ( ulong neighbor in neighbors . Where ( IsStaticWater ) ) {
482- group1WaterNeighbors . Add ( neighbor ) ;
481+ foreach ( var neighbor in neighbors ) {
482+ if ( ! IsStaticWater ( neighbor ) ) {
483+ continue ;
484+ }
485+ if ( waterBodiesDict . TryGetValue ( neighbor , out var waterBodyId ) ) {
486+ group1WaterBodies . Add ( waterBodyId ) ;
487+ }
483488 }
484489 }
485- if ( group1WaterNeighbors . Count == 0 ) {
490+ if ( group1WaterBodies . Count == 0 ) {
486491 return false ;
487492 }
488493
489- var group2WaterNeighbors = group2
490- . SelectMany ( provId => NeighborsDict . TryGetValue ( provId , out var neighbors ) ? neighbors : [ ] )
491- . Where ( IsStaticWater )
492- . ToFrozenSet ( ) ;
493- if ( group2WaterNeighbors . Count == 0 ) {
494- return false ;
494+ foreach ( var provId in group2 ) {
495+ if ( ! NeighborsDict . TryGetValue ( provId , out var neighbors ) ) {
496+ continue ;
497+ }
498+ foreach ( var neighbor in neighbors ) {
499+ if ( ! IsStaticWater ( neighbor ) ) {
500+ continue ;
501+ }
502+ if ( waterBodiesDict . TryGetValue ( neighbor , out var waterBodyId ) && group1WaterBodies . Contains ( waterBodyId ) ) {
503+ return true ;
504+ }
505+ }
495506 }
496507
497- var group1WaterBodies = group1WaterNeighbors . Select ( id => waterBodiesDict [ id ] ) . ToFrozenSet ( ) ;
498-
499- return group2WaterNeighbors
500- . Any ( group2ProvId => group1WaterBodies . Contains ( waterBodiesDict [ group2ProvId ] ) ) ;
508+ return false ;
501509 }
502510
503511 private void LoadAdjacencies ( string adjacenciesFilename , ModFilesystem modFS ) {
0 commit comments