public static void CarveAllTiles <T> (ITilezoneTileDataStream tiles, int index, TileFunctionBoolDelegate <T> CarveFunc, T arg) { for (int x = 0; x < tiles.width; x++) { for (int y = 0; y < tiles.height; y++) { if (CarveFunc(x, y, arg)) { tiles[x, y, index] = Tile.empty; } } } }
public static void CarveTiles <T1, T2, T3> (int x, int y, int width, int height, ITilezoneTileDataStream tiles, int index, TileFunctionBoolDelegate <T1, T2, T3> CarveFunc, T1 arg1, T2 arg2, T3 arg3, bool useLocalCoordinates) { for (int xx = 0; xx < width; xx++) { for (int yy = 0; yy < height; yy++) { bool func = useLocalCoordinates ? CarveFunc(xx, yy, arg1, arg2, arg3) : CarveFunc(x + xx, y + yy, arg1, arg2, arg3); if (func) { tiles[x + xx, y + yy, index] = Tile.empty; } } } }
public static void FillTiles <T1, T2, T3> (int x, int y, int width, int height, ITilezoneTileDataStream tiles, int index, Tile tile, TileFunctionBoolDelegate <T1, T2, T3> TileFunc, T1 arg1, T2 arg2, T3 arg3, bool useLocalCoordinates, bool writeEmptyTiles = false) { for (int xx = 0; xx < width; xx++) { for (int yy = 0; yy < height; yy++) { bool func = useLocalCoordinates ? TileFunc(xx, yy, arg1, arg2, arg3) : TileFunc(x + xx, y + yy, arg1, arg2, arg3); if (func) { tiles[x + xx, y + yy, index] = tile; } else if (writeEmptyTiles) { tiles[x + xx, y + yy, index] = Tile.empty; } } } }
public static void FillAllTiles <T1, T2, T3> (ITilezoneTileDataStream tiles, int index, Tile tile, TileFunctionBoolDelegate <T1, T2, T3> TileFunc, T1 arg1, T2 arg2, T3 arg3, bool writeEmptyTiles = false) { for (int x = 0; x < tiles.width; x++) { for (int y = 0; y < tiles.height; y++) { Tile newTile = TileFunc(x, y, arg1, arg2, arg3) ? tile : Tile.empty; if (writeEmptyTiles || newTile != Tile.empty) { tiles[x, y, index] = newTile; } } } }