From e3377102211d5ecc1a7c1c7082f8979946d666ce Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 26 Jul 2015 19:30:57 +0100 Subject: [PATCH] Implement height-aware map.ChooseRandomCell(). --- OpenRA.Game/Map/Map.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Map/Map.cs b/OpenRA.Game/Map/Map.cs index a49189f146..1b1d942baf 100644 --- a/OpenRA.Game/Map/Map.cs +++ b/OpenRA.Game/Map/Map.cs @@ -999,11 +999,16 @@ namespace OpenRA public CPos ChooseRandomCell(MersenneTwister rand) { - // TODO: Account for terrain height - var x = rand.Next(Bounds.Left, Bounds.Right); - var y = rand.Next(Bounds.Top, Bounds.Bottom); + MPos[] cells; + do + { + var u = rand.Next(Bounds.Left, Bounds.Right); + var v = rand.Next(Bounds.Top, Bounds.Bottom); - return new MPos(x, y).ToCPos(this); + cells = Unproject(new PPos(u, v)); + } while (!cells.Any()); + + return cells.Random(rand).ToCPos(TileShape); } public CPos ChooseClosestEdgeCell(CPos pos)