47 lines
1.3 KiB
GDScript
47 lines
1.3 KiB
GDScript
@tool
|
|
class_name ProtoHUD
|
|
extends CanvasLayer
|
|
|
|
@export_tool_button("Generate Nodes") var initialize_nodes := func() -> void:
|
|
for c in get_children(): c.free()
|
|
|
|
if crosshair:
|
|
var crosshair_node := ProtoCrosshair.new()
|
|
Proto.add_node(self, crosshair_node, "ProtoCrosshair")
|
|
|
|
if use_interact_label:
|
|
interact_label = Label.new()
|
|
interact_label.text = "[E] Interact"
|
|
interact_label.position = get_viewport().get_visible_rect().size / 2.0
|
|
interact_label.add_theme_color_override(&"font_outline_color", Color.BLACK)
|
|
interact_label.add_theme_constant_override(&"outline_size", 4)
|
|
Proto.add_node(self, interact_label)
|
|
|
|
layer = 10
|
|
|
|
@export var load_on_ready := true
|
|
@export var crosshair := true
|
|
@export var use_interact_label := true
|
|
@export var interact_label: Label
|
|
|
|
var proto_game: Node
|
|
|
|
func _ready() -> void:
|
|
if Engine.is_editor_hint():
|
|
if load_on_ready:
|
|
if get_child_count() == 0: initialize_nodes.call()
|
|
return
|
|
|
|
proto_game = Proto.get_autoload(self, "ProtoGame")
|
|
|
|
if interact_label: interact_label.hide()
|
|
if proto_game:
|
|
proto_game.signal_hub.interact_hover_on.connect(on_interact_hover_on)
|
|
proto_game.signal_hub.interact_hover_off.connect(on_interact_hover_off)
|
|
|
|
func on_interact_hover_on(_node: Node) -> void:
|
|
if interact_label: interact_label.show()
|
|
|
|
func on_interact_hover_off() -> void:
|
|
if interact_label: interact_label.hide()
|