On this page
tilemap
Functions and messages used to manipulate tile map components.
Functions
tilemap.set_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number, tile: number, transform_bitmask?: number)tilemap.get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): numbertilemap.get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): Record<string | number, unknown>tilemap.get_tiles(url: string | Hash | Url, layer: string | Hash): Record<string | number, unknown>tilemap.get_bounds(url: string | Hash | Url): number, number, number, numbertilemap.set_visible(url: string | Hash | Url, layer: string | Hash, visible: boolean)
tilemap.set_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number, tile: number, transform_bitmask?: number)
Replace a tile in a tile map with a new tile. The coordinates of the tiles are indexed so that the "first" tile just above and to the right of origin has coordinates 1,1. Tiles to the left of and below origin are indexed 0, -1, -2 and so forth.
+-------+-------+------+------+ | 0,3 | 1,3 | 2,3 | 3,3 | +-------+-------+------+------+ | 0,2 | 1,2 | 2,2 | 3,2 | +-------+-------+------+------+ | 0,1 | 1,1 | 2,1 | 3,1 | +-------O-------+------+------+ | 0,0 | 1,0 | 2,0 | 3,0 | +-------+-------+------+------+
The coordinates must be within the bounds of the tile map as it were created.
That is, it is not possible to extend the size of a tile map by setting tiles outside the edges.
To clear a tile, set the tile to number 0. Which tile map and layer to manipulate is identified by the URL and the layer name parameters.
Transform bitmask is arithmetic sum of one or both FLIP constants (tilemap.H_FLIP, tilemap.V_FLIP) and/or one of ROTATION constants
(tilemap.ROTATE_90, tilemap.ROTATE_180, tilemap.ROTATE_270).
Flip always applies before rotation (clockwise).
// Clear the tile under the player.
tilemap.set_tile("/level#tilemap", "foreground", self.player_x, self.player_y, 0);
// Set tile with different combination of flip and rotation
tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.V_FLIP + tilemap.ROTATE_90);
tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.H_FLIP + tilemap.ROTATE_270);
tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.V_FLIP + tilemap.H_FLIP);
tilemap.set_tile("#tilemap", "layer1", x, y, 0, tilemap.ROTATE_180);
Parameters
url:string | Hash | Url— the tile maplayer:string | Hash— name of the layer for the tilex:number— x-coordinate of the tiley:number— y-coordinate of the tiletile:number— index of new tile to set. 0 resets the celltransform_bitmask?:number— optional flip and/or rotation should be applied to the tile
tilemap.get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number
Get the tile set at the specified position in the tilemap. The position is identified by the tile index starting at origin with index 1, 1. (see tilemap.set_tile()) Which tile map and layer to query is identified by the URL and the layer name parameters.
// get the tile under the player.
const tileno = tilemap.get_tile("/level#tilemap", "foreground", self.player_x, self.player_y);
Parameters
url:string | Hash | Url— the tile maplayer:string | Hash— name of the layer for the tilex:number— x-coordinate of the tiley:number— y-coordinate of the tile
Returns
tile:number— index of the tile
tilemap.get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): Record<string | number, unknown>
Get the tile information at the specified position in the tilemap. The position is identified by the tile index starting at origin with index 1, 1. (see tilemap.set_tile()) Which tile map and layer to query is identified by the URL and the layer name parameters.
// get the tile under the player.
const tile_info = tilemap.get_tile_info("/level#tilemap", "foreground", self.player_x, self.player_y);
pprint(tile_info);
// {
// index = 0,
// h_flip = false,
// v_flip = true,
// rotate_90 = false
// }
Parameters
url:string | Hash | Url— the tile maplayer:string | Hash— name of the layer for the tilex:number— x-coordinate of the tiley:number— y-coordinate of the tile
Returns
tile_info:Record<string | number, unknown>— index of the tile
tilemap.get_tiles(url: string | Hash | Url, layer: string | Hash): Record<string | number, unknown>
Retrieves all the tiles for the specified layer in the tilemap.
It returns a table of rows where the keys are the
tile positions (see tilemap.get_bounds()).
You can iterate it using tiles[row_index][column_index].
const [left, bottom, columns_count, rows_count] = tilemap.get_bounds("#tilemap");
const tiles = tilemap.get_tiles("#tilemap", "layer");
let tile = 0;
let count = 0;
for (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {
for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {
tile = tiles[row_index][column_index];
count = count + 1;
}
}
Parameters
url:string | Hash | Url— the tilemaplayer:string | Hash— the name of the layer for the tiles
Returns
tiles:Record<string | number, unknown>— a table of rows representing the layer
tilemap.get_bounds(url: string | Hash | Url): number, number, number, number
Get the bounds for a tile map. This function returns multiple values: The lower left corner index x and y coordinates (1-indexed), the tile map width and the tile map height. The resulting values take all tile map layers into account, meaning that the bounds are calculated as if all layers were collapsed into one.
// get the level bounds.
const [x, y, w, h] = tilemap.get_bounds("/level#tilemap");
Parameters
url:string | Hash | Url— the tile map
Returns
x:number— x coordinate of the bottom left cornery:number— y coordinate of the bottom left cornerw:number— number of columns (width) in the tile maph:number— number of rows (height) in the tile map
tilemap.set_visible(url: string | Hash | Url, layer: string | Hash, visible: boolean)
Sets the visibility of the tilemap layer
// Disable rendering of the layer
tilemap.set_visible("/level#tilemap", "foreground", false);
Parameters
url:string | Hash | Url— the tile maplayer:string | Hash— name of the layer for the tilevisible:boolean— should the layer be visible
Constants
tilemap.H_FLIP
flip tile horizontally
tilemap.V_FLIP
flip tile vertically
tilemap.ROTATE_90
rotate tile 90 degrees clockwise
tilemap.ROTATE_180
rotate tile 180 degrees clockwise
tilemap.ROTATE_270
rotate tile 270 degrees clockwise
Properties
tile_source: Hash
The tile source used when rendering the tile map. The type of the property is hash.
material: Hash
The material used when rendering the tile map. The type of the property is hash.