nsomva/systems/grid_highlighter.gd
2026-02-27 23:55:18 +05:00

29 lines
859 B
GDScript

extends Node2D
@onready var grid: Grid = get_parent()
const UNIT_COLOR = Color.CHOCOLATE
const EMPTY_COLOR = Color(Color.CORNFLOWER_BLUE,1.0)
var units: Array[Vector2]
var empty: Array[Vector2]
func _ready() -> void:
GameplaySignalBus.highlight_empty.connect(on_highlight_empty)
GameplaySignalBus.highlight_units.connect(on_highlight_units)
func _draw() -> void:
for unit in units:
draw_rect(Rect2(unit,grid.cell_size),UNIT_COLOR)
for empty_cell in empty:
draw_rect(Rect2(empty_cell,grid.cell_size),EMPTY_COLOR)
func on_highlight_units(new_units: Array[Unit]):
units.clear()
units.assign(new_units.map(func(unit : Unit): return grid.snap_position(unit.global_position)))
queue_redraw()
func on_highlight_empty(new_empty: Array[int]):
empty.clear()
empty.assign(new_empty.map(func(cell: int): return grid.from_index(cell)))
queue_redraw()