diff --git a/OpenRa.Game/PlaceBuilding.cs b/OpenRa.Game/PlaceBuilding.cs index 2f93642c06..8ddbe02eb6 100644 --- a/OpenRa.Game/PlaceBuilding.cs +++ b/OpenRa.Game/PlaceBuilding.cs @@ -20,7 +20,10 @@ namespace OpenRa.Game public IEnumerable Order(int2 xy) { // todo: check that space is free - if (Footprint.Tiles(Rules.UnitInfo[Name], xy).Any(t => !Game.IsCellBuildable(t, UnitMovementType.Wheel))) + var bi = (UnitInfo.BuildingInfo)Rules.UnitInfo[Name]; + if (Footprint.Tiles(bi, xy).Any( + t => !Game.IsCellBuildable(t, + bi.WaterBound ? UnitMovementType.Float : UnitMovementType.Wheel))) yield break; yield return new PlaceBuildingOrder(this, xy); diff --git a/OpenRa.Game/UiOverlay.cs b/OpenRa.Game/UiOverlay.cs index f66150ca67..39c4f739fd 100644 --- a/OpenRa.Game/UiOverlay.cs +++ b/OpenRa.Game/UiOverlay.cs @@ -35,8 +35,10 @@ namespace OpenRa.Game if (!hasOverlay) return; - foreach( var t in Footprint.Tiles( Rules.UnitInfo[ name ], position ) ) - spriteRenderer.DrawSprite( Game.IsCellBuildable( t, UnitMovementType.Wheel ) + var bi = (UnitInfo.BuildingInfo)Rules.UnitInfo[name]; + foreach( var t in Footprint.Tiles( bi, position ) ) + spriteRenderer.DrawSprite( Game.IsCellBuildable( t, bi.WaterBound + ? UnitMovementType.Float : UnitMovementType.Wheel ) ? buildOk : buildBlocked, Game.CellSize * t, 0 ); spriteRenderer.Flush();