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); }
public SeppukuMapTileModel(SeppukuMapModel mapModel, int tileId, int x, int y, Player owner, String name, int gatherers) { this.mapModel = mapModel; this.tileId = tileId; this.x = x; this.y = y; this.owner = owner; this.name = name; this.gatherers = gatherers; }
public void onDataLoad(object sender, GetMapModelCompletedEventArgs e) { MapModel data = (MapModel)e.Result; this.riceNumber = data.rice; foreach (Owner player in data.players) { players.Add(player.playerId, new Player(player.playerName, player.playerColor, player.playerId)); } map = new SeppukuMapModel(this, data.tiles); foreach (OrderInfo order in data.orders) { IOrder tempOrder = null; if (order.orderType == "Buy") { tempOrder = new BuyOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if (order.orderType == "Defend") { tempOrder = new DeffendOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if (order.orderType == "Gather") { tempOrder = new GatherOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if (order.orderType == "Move") { tempOrder = new MoveOrder(map.getTileById(order.sourceTileId), map.getTileById(order.destinationTileId), order.unitCount); } this.Orders.Add(tempOrder); } if (this.Ready != null) { this.Ready(this, null); } }
public void onDataLoad(object sender, GetMapModelCompletedEventArgs e) { MapModel data = (MapModel) e.Result; this.riceNumber = data.rice; foreach(Owner player in data.players) { players.Add(player.playerId, new Player(player.playerName,player.playerColor, player.playerId)); } map = new SeppukuMapModel(this, data.tiles); foreach(OrderInfo order in data.orders) { IOrder tempOrder = null; if(order.orderType == "Buy") { tempOrder = new BuyOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if(order.orderType == "Defend") { tempOrder = new DeffendOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if(order.orderType == "Gather") { tempOrder = new GatherOrder(map.getTileById(order.sourceTileId), order.unitCount); } else if(order.orderType == "Move") { tempOrder = new MoveOrder(map.getTileById(order.sourceTileId), map.getTileById(order.destinationTileId), order.unitCount); } this.Orders.Add(tempOrder); } if(this.Ready != null) this.Ready(this, null); }