Fix generated mountain resource conflicts

This commit is contained in:
daixiawu 2026-06-29 00:05:29 +08:00
parent 58e9d4530d
commit 40bd942db1

View File

@ -132,6 +132,7 @@ namespace Logic
//修复摇篮城市附近的地形保底和资源保底
CivTerrainFeatureCountControl(mapData);
NormalizeGeneratedGridLayerConflicts(mapData);
//生成地脉(所有资源确定后执行)
GenerateLeyLines(mapData); //TODO 暂时屏蔽地脉生成
@ -730,7 +731,9 @@ namespace Logic
}
break;
case ResourceType.Animal:
if (tgrid.Vegetation == Vegetation.Trees && tgrid.Resource != ResourceType.Animal)
if (tgrid.Terrain == TerrainType.Land && tgrid.Feature != TerrainFeature.Mountain
&& tgrid.Vegetation == Vegetation.Trees
&& tgrid.Resource != ResourceType.Animal)
{
tgrid.Resource = ResourceType.Animal;
count++;
@ -889,10 +892,33 @@ namespace Logic
if (grid == null) return;
grid.Feature = TerrainFeature.Mountain;
grid.Vegetation = Vegetation.None;
if (grid.Resource == ResourceType.Farm)
if (grid.Resource is not (ResourceType.None or ResourceType.Metal))
grid.Resource = ResourceType.None;
}
private void NormalizeGeneratedGridLayerConflicts(MapData mapData)
{
if (mapData?.GridMap?.GridList == null) return;
foreach (var grid in mapData.GridMap.GridList)
{
if (grid == null) continue;
if (grid.Feature == TerrainFeature.Mountain)
{
grid.Vegetation = Vegetation.None;
if (grid.Resource is not (ResourceType.None or ResourceType.Metal or ResourceType.CityCenter
or ResourceType.Tower))
grid.Resource = ResourceType.None;
}
if (grid.Resource == ResourceType.Animal
&& (grid.Terrain != TerrainType.Land || grid.Feature == TerrainFeature.Mountain
|| grid.Vegetation != Vegetation.Trees))
grid.Resource = ResourceType.None;
}
}
private bool IsStartingGuaranteeProtectedGrid(GridData grid)
{
if (grid == null) return true;