コード例 #1
0
    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;
    }