class_name CombatMap extends Node2D signal tile_hovered(coords: Vector2i) @export var tile_set: DLTileset @onready var tile_map: TileMapLayer = %TerrainLayer @onready var highlight_map: GridOverlay = %OverlayLayer const TILE_SIZE := 48.0 const SOURCE_ID: int = 0 func snap_to_grid(pos: Vector2) -> Vector2: return Vector2(floorf(pos.x / TILE_SIZE), floorf(pos.y / TILE_SIZE)) * TILE_SIZE func world_to_coords(pos: Vector2) -> Vector2i: return Vector2i(snap_to_grid(pos) / TILE_SIZE) func coords_to_world(coords: Vector2i) -> Vector2: return Vector2(coords) * TILE_SIZE func draw_wall(coords: Vector2i) -> void: draw_custom(coords, tile_set.wall_tile_coords) func draw_floor(coords: Vector2i) -> void: draw_custom(coords, tile_set.floor_tile_coords) func draw_custom(coords: Vector2i, tile_coords: Vector2i) -> void: tile_map.set_cell(coords, SOURCE_ID, tile_coords) func is_wall(coords: Vector2i) -> bool: return tile_map.get_cell_atlas_coords(coords) == tile_set.wall_tile_coords func target_tile(coords: Vector2i) -> void: highlight_map.target_tile(coords) tile_hovered.emit(coords)