fixed ore spreading; units no longer block
This commit is contained in:
@@ -165,7 +165,7 @@ namespace OpenRa.Game
|
|||||||
if (--oreTicks == 0)
|
if (--oreTicks == 0)
|
||||||
{
|
{
|
||||||
var oresw = new Stopwatch();
|
var oresw = new Stopwatch();
|
||||||
map.GrowOre(p => IsCellBuildable(p, UnitMovementType.Wheel), SharedRandom);
|
map.GrowOre(SharedRandom);
|
||||||
OreTime = oresw.ElapsedTime();
|
OreTime = oresw.ElapsedTime();
|
||||||
oreTicks = oreFrequency;
|
oreTicks = oreFrequency;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace OpenRa.Game.Graphics
|
|||||||
|
|
||||||
lineRenderer.Flush();
|
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.RenderFrame, Game.orderManager.FrameNumber,
|
||||||
Game.RenderTime * 1000,
|
Game.RenderTime * 1000,
|
||||||
Game.TickTime * 1000,
|
Game.TickTime * 1000,
|
||||||
|
|||||||
@@ -10,8 +10,17 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
/* todo: deal with ore pits */
|
/* todo: deal with ore pits */
|
||||||
|
|
||||||
public static void GrowOre(this Map map,
|
static bool CanSpreadInto(int i, int j)
|
||||||
Func<int2, bool> canSpreadIntoCell, Random r)
|
{
|
||||||
|
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 mini = map.XOffset; var maxi = map.XOffset + map.Width;
|
||||||
var minj = map.YOffset; var maxj = map.YOffset + map.Height;
|
var minj = map.YOffset; var maxj = map.YOffset + map.Height;
|
||||||
@@ -28,7 +37,7 @@ namespace OpenRa.Game
|
|||||||
if (!map.HasOverlay(i, j)
|
if (!map.HasOverlay(i, j)
|
||||||
&& r.NextDouble() < chance
|
&& r.NextDouble() < chance
|
||||||
&& map.GetOreDensity(i, j) > 0
|
&& map.GetOreDensity(i, j) > 0
|
||||||
&& canSpreadIntoCell(new int2(i, j)))
|
&& CanSpreadInto(i,j))
|
||||||
newOverlay[i, j] = ChooseOre();
|
newOverlay[i, j] = ChooseOre();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user