Files
storyteller-godot/scripts/Minimap.gd
Aodhan Collins c0e4aaeac5 Basic UI
2026-01-26 03:31:45 +00:00

50 lines
1.3 KiB
GDScript

extends Control
var explored_rooms: Array = []
var current_room_id: String = ""
var cell_size: Vector2 = Vector2(20, 20)
var padding: float = 5.0
func _ready():
# Remove any children if they exist (cleanup from previous implementation)
for child in get_children():
child.queue_free()
func update_map(new_room_id: String, explored: Array):
current_room_id = new_room_id
explored_rooms = explored
queue_redraw()
func _draw():
if current_room_id == "":
return
var center = size / 2
# Parse current room coordinates to center the map
var current_coords = _parse_coords(current_room_id)
for room_id in explored_rooms:
var coords = _parse_coords(room_id)
var rel_x = coords.x - current_coords.x
var rel_y = coords.y - current_coords.y
# Calculate position relative to center
# (rel_x, rel_y) * (cell_size + padding) gives the offset
var offset = Vector2(rel_x, rel_y) * (cell_size + Vector2(padding, padding))
var rect_pos = center + offset - cell_size / 2
var rect = Rect2(rect_pos, cell_size)
var color = Color.LIGHT_GRAY
if room_id == current_room_id:
color = Color.GREEN
draw_rect(rect, color, true)
draw_rect(rect, Color.BLACK, false, 1.0) # Border
func _parse_coords(id: String) -> Vector2:
var parts = id.split("_")
if parts.size() >= 3:
return Vector2(int(parts[1]), int(parts[2]))
return Vector2.ZERO