示例#1
0
        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);
                }
            }
        }
示例#2
0
 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;
 }
示例#3
0
        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);
            }
        }