23 lines
862 B
GDScript
23 lines
862 B
GDScript
extends TileMapLayer
|
|
|
|
var tiles: Dictionary = {}
|
|
@onready var numTiles: int = get_tile_set().get_source(0).get_tiles_count()
|
|
#@onready var texSize: Vector2 = get_tile_set().get_tile_texture(get_tile_set().get_tile_id(0))
|
|
@onready var texSize: Vector2 = Vector2(32, 32) # TODO: get from tileSet
|
|
@export var randomColors: bool = true
|
|
var stateColMap: Dictionary = {
|
|
}
|
|
var rng: RandomNumberGenerator = RandomNumberGenerator.new()
|
|
|
|
func get_tile_colour(pos: Vector2i) -> int:
|
|
return tiles.get_or_add(pos, 0)
|
|
|
|
# TODO: state should be an enum probably
|
|
func set_tile(pos: Vector2i, state: int) -> void:
|
|
self.set_cell(pos, 0, Vector2i(0, state%numTiles))
|
|
if randomColors:
|
|
var col: Color = stateColMap.get_or_add(state, Color(rng.randf(), rng.randf(), rng.randf(), 1))
|
|
self.get_cell_tile_data(pos).set_modulate(col)
|
|
tiles.erase(pos)
|
|
tiles.get_or_add(pos, state)
|