public PlayableTile(SeppukuMapTiles map, SeppukuMapTileModel model) : this() { this.map = map; this.model = model; this.model.select += this.onSelect; this.model.deselct += this.onDeselect; this.model.orderAdded += this.onOrderAdded; this.model.orderRemoved += this.onOrderRemoved; this.model.orderSelected += this.onOrderSelected; this.model.orderDeselected += this.onOrderDeselected; if (this.model.owner != null) { this.Flag.Fill = new SolidColorBrush(this.model.owner.color); this.WavingFlag.Begin(); this.WavingFlag.RepeatBehavior = RepeatBehavior.Forever; } else { this.FlagContainer.Visibility = Visibility.Collapsed; } foreach (IOrder order in this.model.mapModel.model.Orders) { if (order.Source == this.model) { this.displayAddedOrder(order); } } }
public void displayTile(SeppukuMapTileModel tile) { TileName.Text = tile.name; TileNameContainer.Visibility = Visibility.Visible; if (tile.owner != null) { PlayerName.Text = tile.owner.name; PlayerNameContainer.Visibility = Visibility.Visible; } Workers.Text = tile.Gatherers.ToString(); WorkersContainer.Visibility = Visibility.Visible; }
public void initWithModel(SeppukuMapModel model) { this.model = model; this.model.destinationTileFieldModeSet += this.onSelectDestinationStateSet; int tileWidth = 101; int tileHeight = 82; int tileBaseHeight = 45; int minX = model.tiles.Min(tileInfo => tileInfo.x); int maxX = model.tiles.Max(tileInfo => tileInfo.x); int minY = model.tiles.Min(tileInfo => tileInfo.y); int maxY = model.tiles.Max(tileInfo => tileInfo.y); loadedTilesX = maxX - minX + 1 + 2; loadedTilesY = maxY - minY + 1 + 2; for (int i = 0; i <= maxY - minY + 2; i++) { for (int j = 0; j <= maxX - minX + 2; j++) { UserControl tile; if (model.tiles.Any(tileInfo => (tileInfo.x == j + minX - 1 && tileInfo.y == i + minY - 1))) { SeppukuMapTileModel tileModel = model.tiles.First(tileInfo => (tileInfo.x == j + minX - 1 && tileInfo.y == i + minY - 1)); PlayableTile tempTile = new PlayableTile(this, tileModel); tempTile.TileName = tileModel.name; tile = tempTile; tile.MouseEnter += this.onTileOver; tile.MouseLeave += this.onTileOut; tile.MouseLeftButtonUp += this.onTileClicked; this.TileElements.Children.Add(tempTile.orderDecals); Canvas.SetLeft(tempTile.orderDecals, j * tileWidth); Canvas.SetTop(tempTile.orderDecals, i * tileHeight); } else { tile = new Tile(); } Canvas.SetLeft(tile, j * tileWidth); Canvas.SetTop(tile, i * tileHeight); if ((j + 1) * tileWidth > this.dynamicWidth) { this.dynamicWidth = (j + 1) * tileWidth; } if ((i + 1) * tileHeight + tileBaseHeight > this.dynamicHeight) { this.dynamicHeight = (i + 1) * tileHeight + tileBaseHeight; } this.Tiles.Children.Add(tile); } } this.UpdateLayout(); if (this.loadingFinished != null) { this.loadingFinished(this, null); } }