private void ReadTilemapToTileData(Tilemap tilemap, int layer) { foreach (Vector3Int pos in tilemap.cellBounds.allPositionsWithin) { Vector3Int localPlace = new Vector3Int(pos.x, pos.y, pos.z); if (!tilemap.HasTile(localPlace)) { continue; } var worldLocation = tilemap.CellToWorld(localPlace); var layeredWorldPosition = new Vector3(worldLocation.x, worldLocation.y, layer); TileBase tileBase = tilemap.GetTile(localPlace); IGameTile tileFromLibrary = GetTileByAssetName(tileBase.name); IGameTile tile = new GameTile { LocalPlace = localPlace, WorldLocation = layeredWorldPosition, TileBase = tileBase, TilemapMember = tilemap, Description = tileFromLibrary.Description, TileData = tileFromLibrary.TileData, Cost = 1 }; tiles.Add(layeredWorldPosition, tile); } }
public void ProcessCharacterMovement(ICharacter character, IGameTile adjacentGameTile) { if (adjacentGameTile.Passable) { var originalPosition = character.Position; if (adjacentGameTile is WrapAroundGameTile wrapAroundGameTile) { character.Position = wrapAroundGameTile.WrapPosition; var wrapGameObject = GameState.BoardState.GetGameTile( wrapAroundGameTile .WrapPosition); wrapGameObject.CharacterOnGameTile = character; } else { character.Position = adjacentGameTile.Position; adjacentGameTile.CharacterOnGameTile = character; } // Removing the old board character reference GameState.BoardState.GetGameTile(originalPosition).CharacterOnGameTile = null; } }
public void InteractWithGameTile(ref IGameTile gameTile, GameState gameState) { if (gameTile is DotGameTile) { gameTile = new EmptySpaceGameTile((DotGameTile)gameTile); gameState.Score++; } }
public IGameTile GetClonedTile(string id) { IGameTile originalTile = Tiles[id]; IGameTile clonedTile = (IGameTile)originalTile.Clone(); clonedTile.ID = Guid.NewGuid().ToString(); return(clonedTile); }
public void GenerateMap() { var groundTiles = CreatePopulatedTilemap(tilemapLayers.GroundLayer); // Adds ground tiles to the global tiles tiles = DataUtils.MergeDictionaries(tiles, groundTiles); foreach (var tile in groundTiles) { IGameTile tileData = tile.Value; SetGameTile(tilemapLayers.GroundLayer, tileData); } }
public void InitializeDefaultBoard() { Board = new IGameTile[10, 10]; for (var i = 0; i < 10; i++) { Board[i, 0] = new WrapAroundGameTile(new Coordinate(i, 0), new Coordinate(i, 8)); Board[i, 9] = new WrapAroundGameTile(new Coordinate(i, 9), new Coordinate(i, 1)); Board[0, i] = new WrapAroundGameTile(new Coordinate(0, i), new Coordinate(8, i)); Board[9, i] = new WrapAroundGameTile(new Coordinate(9, i), new Coordinate(1, i)); } for (var i = 1; i < 9; i++) { for (var j = 1; j < 9; j++) { Board[i, j] = new DotGameTile(new Coordinate(i, j)); } } for (var i = 1; i < 9; i++) { Board[i, 0] = new WallGameTile(new Coordinate(i, 0)); Board[i, 9] = new WallGameTile(new Coordinate(i, 9)); } for (var i = 2; i < 8; i++) { Board[0, i] = new WallGameTile(new Coordinate(0, i)); Board[9, i] = new WallGameTile(new Coordinate(9, i)); } Board[0, 0] = new WallGameTile(new Coordinate(0, 0)); Board[0, 9] = new WallGameTile(new Coordinate(0, 9)); Board[9, 0] = new WallGameTile(new Coordinate(9, 0)); Board[9, 9] = new WallGameTile(new Coordinate(9, 9)); PlayerSpawnPosition = new Coordinate(5, 5); }
public Dictionary <Vector3, IGameTile> CreatePopulatedTilemap(TilemapLayer tilemapLayer) { int layer = tilemapLayer.layer; Tilemap tilemap = tilemapLayer.tilemap; Dictionary <Vector3, IGameTile> localTilemap = new Dictionary <Vector3, IGameTile>(); foreach (Vector3Int pos in tilemap.cellBounds.allPositionsWithin) { Vector3Int localPlace = new Vector3Int(pos.x, pos.y, layer); bool isTileEmpty = !tilemap.HasTile(localPlace); if (!isTileEmpty) { print("Tile at: " + localPlace + " already exists!"); continue; } var worldLocation = tilemap.CellToWorld(localPlace); var layeredWorldPosition = new Vector3(worldLocation.x, worldLocation.y, layer); IGameTile tileFromLibrary = GetTileByAssetName("grass_001"); IGameTile tile = new GameTile { LocalPlace = localPlace, WorldLocation = layeredWorldPosition, TileBase = tileFromLibrary.TileBase, TilemapMember = tilemap, Description = tileFromLibrary.Description, Cost = 0, TileData = tileFromLibrary.TileData, }; localTilemap.Add(layeredWorldPosition, tile); } return(localTilemap); }
public IGameTile[,] ParseBoardCsvFile(string filepath) { var parsedValues = new List <List <string> >(); using (TextFieldParser parser = new TextFieldParser(filepath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); while (!parser.EndOfData) { var rowList = new List <string>(); var rowValues = parser.ReadFields(); foreach (var value in rowValues) { rowList.Add(value); } parsedValues.Add(rowList); } } var board = new IGameTile[parsedValues.Count, parsedValues[1].Count]; maxI = parsedValues.Count; maxJ = parsedValues[0].Count; for (var i = 0; i < parsedValues.Count; i++) { for (var j = 0; j < parsedValues[0].Count; j++) { board[i, j] = ParseGameTileValue(char.Parse(parsedValues[i][j]), i, j); } } return(board); }
public void PlaceTile(Vector3 pos, string assetName, TilemapLayer tilemapLayer) { Tilemap tilemap = tilemapLayer.tilemap; int layer = tilemapLayer.layer; Vector3Int tilemapPos = tilemap.WorldToCell(pos); Vector3 layeredWorldPosition = new Vector3(tilemapPos.x, tilemapPos.y, layer); Vector3Int localPlace = new Vector3Int(tilemapPos.x, tilemapPos.y, layer); IGameTile newTile = TileLibrary.instance.GetClonedTile(assetName); newTile.LocalPlace = localPlace; newTile.WorldLocation = layeredWorldPosition; newTile.TilemapMember = tilemap; // if a tile already exists there, just replace it. bool tileExistsInPos = tiles.ContainsKey(layeredWorldPosition); if (tileExistsInPos) { tiles[layeredWorldPosition] = newTile; } else { tiles.Add(layeredWorldPosition, newTile); } bool isACrop = newTile.GetType() == typeof(CropTile); if (isACrop) { (newTile as CropTile).StartGrowing(); } SetGameTile(tilemapLayer, newTile); }
private void UpdatedSelectedTileHUD(IGameTile tile) { selectedTileText.text = tile.Description; selectedTileImage.sprite = tile.TileData.sprite; }
public void SelectTileFromHUD(string tileID) { IGameTile tile = TileController.GetTileByAssetName(tileID); SetPreviewTile(tile.TileData); }
private void SetSelectedTile(IGameTile tile) { selectedTile = tile; }
private void SetGameTile(TilemapLayer tilemapLayer, IGameTile gameTile) { tilemapLayer.tilemap.SetTile(gameTile.LocalPlace, gameTile.TileBase); }
public void InteractWithGameTile(ref IGameTile gameTile, GameState gameState) { // Do nothing since the ghost does not currently interact with any tile }