예제 #1
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);
		}
예제 #2
0
		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;
		}
예제 #3
0
 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;
 }
예제 #4
0
        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);
            }
        }
예제 #5
0
		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);
		}