public void SetTile(Tile newTile, int x, int y, bool groundTile = false) { Tile currTile = GetTileAtPos(new Vector2(x, y)); if (currTile == null || (!currTile.replacable && !groundTile) || !currTile.Built) { return; } //Check if the build requires items and if these items are collected if (newTile.doesRequireItem) { foreach (Requirements items in newTile.itemsRequired) { Inventory inv = worldController.CheckInventories(items.item, items.count); if (inv) { //remove items from inventory Item item = inv.TakeItem(items.item, items.count); Destroy(item.gameObject); } else { //resources aren't available so stop builder Builder.instance.SetBuild(null); return; } } } Tile tile = Instantiate(newTile, new Vector3(x, y, 0), newTile.transform.rotation); tile.name = tile.name + " " + x + ":" + y; tile.transform.SetParent(transform); tile.x = x; tile.y = y; tile.built = groundTile; if (!groundTile) { tile.tileUnderneath = grid[x, y].tileType; } Destroy(grid[x, y].gameObject); grid[x, y] = tile; PathNode node = grid[x, y].GetComponent <PathNode>(); node.x = x; node.y = y; node.walkable = true; }