示例#1
0
文件: TileFactory.cs 项目: fuchs-/MBA
	public TileFactory()
	{
		tileData = new List<TileCreationData> ();
	
		TileCreationData tcd;
		int moveCost;
		GameObject prefab;

		foreach (TileTypes type in Enum.GetValues(typeof(TileTypes)))
		{
			switch (type) {
			case TileTypes.Empty:
				moveCost = 5;
				break;
			case TileTypes.Floor:
				moveCost = 1;
				break;
			case TileTypes.Wall:
				moveCost = 5;
				break;
			case TileTypes.Water:
				moveCost = 4;
				break;
			default:
				moveCost = 5;
				Debug.LogError ("Tile type: '" + type + "' not implemented on TileFactory.Initiate()");
				break;
			}

			prefab = (GameObject) Resources.Load("Tiles/Tile" + type);

			tcd = new TileCreationData (type, moveCost, prefab);
			tileData.Add (tcd);
		}
	}
示例#2
0
        protected override void Execute(List <ActionEntity> entities)
        {
            foreach (var entity in entities)
            {
                var creationData = entity.actionCreateMap;
                var x            = creationData.size.x;
                var y            = creationData.size.y;

                var backgroundTileData = new TileCreationData()
                {
                    Type = creationData.BackgroundTile
                };


                //TODO : Convert 0,1 to LayerEnum?
                //TODO : Add tile config files for default data setting (SellValue, DefaultHealth, SpawnChance)
                //TODO : Add another layer for ores to replace already created tiles (Generate int array (eg: 8x8) and
                //randomly tick 1, 0, 1 = ore, 0 = no ore for grouping ore

                //TODO : Background is only created for certain rooms/areas, the rest will be a looping texture
//                var backgroundTiles = GenerateTiles(x, y, backgroundTileData, 0);
                var foregroundTiles = GenerateTiles(x, y, backgroundTileData, 1);

                var tiles = new Dictionary <int, int[, ]> {
                    { 1, foregroundTiles }
                };

                var map = CreateMap();
                map.ReplaceMapTiles(tiles);

                entity.isConsumed = true;
            }
        }
示例#3
0
        private int[,] GenerateTiles(int columns, int rows, TileCreationData creationData, int layer)
        {
            int[,] tiles = new int[columns, rows];
            for (int xIndex = 0; xIndex < columns; xIndex++)
            {
                for (int yIndex = 0; yIndex < rows; yIndex++)
                {
                    var tile = _contexts.factory.tileFactory.factory.CreateTile(creationData);
                    tile.ReplaceTileLayer(layer);
                    //TODO : Create snap to grid system
                    tile.AddSnapToGrid(xIndex, yIndex);
                    tile.AddPosition(xIndex * 1, yIndex * 1);
                    tiles[xIndex, yIndex] = tile.id.value;
                }
            }

            return(tiles);
        }
示例#4
0
        public GameEntity CreateTile(TileCreationData data)
        {
            var e = _contexts.game.CreateEntity();

            _contexts.meta.viewService.instance.LoadAsset(_contexts, e,
                                                          GlobalVariables.ResourcesAssetsPath + "prefabs/tile");
            e.isTile = true;
            if (data.Type == TileType.Dirt)
            {
                e.AddSprite("assets/sprites/tiles/dirt/tile-dirt-01");
            }
            if (data.Type == TileType.Stone)
            {
                e.AddSprite("assets/sprites/tiles/dirt/tile-stone-01");
            }
            e.AddTileLayer(0);
            return(e);
        }