diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index e10c64f540..5a96292f88 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -165,7 +165,7 @@ namespace OpenRa.Game if (--oreTicks == 0) { var oresw = new Stopwatch(); - map.GrowOre(p => IsCellBuildable(p, UnitMovementType.Wheel), SharedRandom); + map.GrowOre(SharedRandom); OreTime = oresw.ElapsedTime(); oreTicks = oreFrequency; } diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index b9d36453f8..c018f79f98 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -99,7 +99,7 @@ namespace OpenRa.Game.Graphics lineRenderer.Flush(); - renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms) Tick {1} ({3:F1} ms) Ore ({4:F1} ms)", + renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\nOre ({4:F1} ms)", Game.RenderFrame, Game.orderManager.FrameNumber, Game.RenderTime * 1000, Game.TickTime * 1000, diff --git a/OpenRa.Game/Ore.cs b/OpenRa.Game/Ore.cs index 1bcc61df07..90005f01e9 100644 --- a/OpenRa.Game/Ore.cs +++ b/OpenRa.Game/Ore.cs @@ -10,8 +10,17 @@ namespace OpenRa.Game { /* todo: deal with ore pits */ - public static void GrowOre(this Map map, - Func canSpreadIntoCell, Random r) + static bool CanSpreadInto(int i, int j) + { + if (Game.BuildingInfluence.GetBuildingAt(new int2(i, j)) != null) + return false; + + return TerrainCosts.Cost(UnitMovementType.Wheel, + Game.worldRenderer.terrainRenderer.tileSet.GetWalkability(Game.map.MapTiles[i, j])) + < double.PositiveInfinity; + } + + public static void GrowOre(this Map map, Random r) { var mini = map.XOffset; var maxi = map.XOffset + map.Width; var minj = map.YOffset; var maxj = map.YOffset + map.Height; @@ -28,7 +37,7 @@ namespace OpenRa.Game if (!map.HasOverlay(i, j) && r.NextDouble() < chance && map.GetOreDensity(i, j) > 0 - && canSpreadIntoCell(new int2(i, j))) + && CanSpreadInto(i,j)) newOverlay[i, j] = ChooseOre(); }