summaryrefslogtreecommitdiff
path: root/UI/hud.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-10-06 12:31:04 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-10-06 12:31:04 +0200
commit9fe787ed8a6d23cf9ab1767392951e6af39ea8ae (patch)
tree5bd7ff20eda0033241748e21b91033f3176bfad7 /UI/hud.gd
parentb069ea91b095d80667475c06e62712c1bd7b537f (diff)
next commitHEADmain
Diffstat (limited to 'UI/hud.gd')
-rw-r--r--UI/hud.gd49
1 files changed, 49 insertions, 0 deletions
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: