public void OnGameChanged() { bool isVisible = IsVisible; if (!IsVisible && new Random(Game.TurnIndex * GetHashCode()).NextDouble() < 0.25) { isVisible = Game.Units.Any(u => MapDisplay.PointDifference(u.Position, Position) <= 2 && u.Player.Faction != Faction); } IsVisible = isVisible; }
public bool IsTileVisible(Point position) { if (_VisibleTiles == null) { _VisibleTiles = new List <bool>(); for (int y = 0; y < Game.Terrain.Height; y++) { for (int x = 0; x < Game.Terrain.Width; x++) { bool a = false; for (int i = 0; i < Units.Count; i++) { if (MapDisplay.PointDifference(new Point(x, y), Units[i].Position) <= Units[i].Type.ViewDistance) { a = true; break; } } _VisibleTiles.Add(a); } } } return(_VisibleTiles[position.X + position.Y * Game.Terrain.Width]); }
public OrdersDisplay(MapDisplay mapDisplay) { _MapDisplay = mapDisplay; }