/// <summary>Clears and the reloads all the Tiles contained in the control.</summary> private void RegenerateTiles() { this.Children.Clear(); for (int x = -1; x < _columns; ++x) { for (int y = -1; y < _rows; ++y) { Tile tile = _mapControlFactory.GetTile(this.Zoom, this.LeftTile + x, this.TopTile + y); tile.Column = x; tile.Row = y; Canvas.SetLeft(tile, _mapControlFactory.TileGenerator.TileSize * x); Canvas.SetTop(tile, _mapControlFactory.TileGenerator.TileSize * y); this.Children.Add(tile); } } _baseTile = (Tile)this.Children[0]; }
/// <summary>Repositions the Tiles after any changes.</summary> /// <param name="changeTile">Called on every Tile to allow changes to be made to its position.</param> private void ChangeTiles(Action<Tile> changeTile) { _baseTile = (Tile)this.Children[0]; // We need something to compare to so set it to the first. for (int i = 0; i < this.Children.Count; ++i) { Tile tile = (Tile)this.Children[i]; changeTile(tile); Canvas.SetLeft(tile, _mapControlFactory.TileGenerator.TileSize * tile.Column); Canvas.SetTop(tile, _mapControlFactory.TileGenerator.TileSize * tile.Row); if (tile.TileX <= _baseTile.TileX && tile.TileY <= _baseTile.TileY) // Find the upper left tile { _baseTile = tile; } } }