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); } }
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; } }
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); }
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); }