Prevent chronoshifting into shroud

This commit is contained in:
Paul Chote
2010-01-06 22:59:03 +13:00
parent a6f1c9baf5
commit 33da7f73d7
3 changed files with 12 additions and 1 deletions

View File

@@ -35,6 +35,9 @@ namespace OpenRa.Game.Orders
public Cursor GetCursor(int2 xy, MouseInput mi)
{
if (!Game.LocalPlayer.Shroud.IsExplored(xy))
return Cursor.MoveBlocked;
var movement = self.traits.WithInterface<IMovement>().FirstOrDefault();
return (movement.CanEnterCell(xy)) ? Cursor.Chronoshift : Cursor.MoveBlocked;
}

View File

@@ -14,6 +14,11 @@ namespace OpenRa.Game
Sprite[,] sprites = new Sprite[128, 128];
bool dirty;
public bool IsExplored(int2 xy)
{
return explored[ xy.X, xy.Y ];
}
public void Explore(Actor a)
{
foreach (var t in Game.FindTilesInCircle((1f / Game.CellSize * a.CenterLocation).ToInt2(), a.Info.Sight))

View File

@@ -46,6 +46,9 @@ namespace OpenRa.Game.Traits
var movement = self.traits.WithInterface<IMovement>().FirstOrDefault();
if (order.OrderString == "Chronoshift" && movement.CanEnterCell(order.TargetLocation))
{
// Cannot chronoshift into unexplored location
if (!Game.LocalPlayer.Shroud.IsExplored(order.TargetLocation))
return;
// Set up return-to-sender info
chronoshiftOrigin = self.Location;