From 9fe787ed8a6d23cf9ab1767392951e6af39ea8ae Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 6 Oct 2024 12:31:04 +0200 Subject: next commit --- UI/hud.gd | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'UI/hud.gd') diff --git a/UI/hud.gd b/UI/hud.gd index 21bd2bc..d886a73 100644 --- a/UI/hud.gd +++ b/UI/hud.gd @@ -8,6 +8,7 @@ var selected_button: TextureRect : selected_button = value (selected_button.material as ShaderMaterial).set_shader_parameter("adjust", -1.0) + %CurrentButton.text = selected_button.tooltip_text func _ready() -> void: @@ -18,6 +19,54 @@ func _ready() -> void: Game.speed_changed.connect(func(): %Speed.text = str(Game.speed).pad_decimals(1) + "x" ) + + create_minimap() + + +func create_minimap(): + var maps := get_tree().get_nodes_in_group("map") + var image := Image.create_empty(%Minimap.size.x, $"%Minimap".size.y, false, Image.FORMAT_RGB8) + var minimap_scale = Vector2(image.get_size()) / get_viewport().get_visible_rect().size + + for map: TileMapLayer in maps: + for cell_coords in map.get_used_cells(): + var tile = map.get_cell_tile_data(cell_coords) + var tile_scale = minimap_scale * Vector2(map.tile_set.tile_size) + image.fill_rect( + Rect2(Vector2(cell_coords) * tile_scale, (tile_scale + Vector2(1,1)).max(Vector2(1, 1))), + tile.get_custom_data("color") + ) + + %Minimap.texture = ImageTexture.create_from_image(image) + + var markers := {} + var timer = Timer.new() + timer.wait_time = 0.5 + timer.one_shot = false + timer.autostart = true + timer.timeout.connect(func(): + for node in markers.keys(): + if is_instance_valid(node): + markers[node].position = ( + node.global_position * minimap_scale + ) + ) + %Minimap.add_child(timer) + get_tree().current_scene.child_entered_tree.connect(func(node: Node): + if node is Unit: + var texture = Image.create_empty(1, 1, false, Image.FORMAT_RGB8) + texture.set_pixel(0, 0, Color("#fff")) + var sprite = Sprite2D.new() + sprite.texture = ImageTexture.create_from_image(texture) + sprite.position = Vector2.ZERO + %Minimap.add_child(sprite) + markers[node] = sprite + + node.tree_exiting.connect(func(): + markers.erase(node) + sprite.queue_free() + ) + ) func _on_button_blocker_gui_input(event: InputEvent) -> void: -- cgit v1.2.3