generated from krampus/template-godot4
50 lines
820 B
GDScript3
50 lines
820 B
GDScript3
|
class_name HoldHUD extends Control
|
||
|
|
||
|
enum State {
|
||
|
NONE,
|
||
|
SELECTED,
|
||
|
HELD,
|
||
|
}
|
||
|
|
||
|
var state := State.NONE
|
||
|
var _selected_this_frame := false
|
||
|
|
||
|
@onready var open_hand: Label = %OpenHand
|
||
|
@onready var closed_hand: Label = %ClosedHand
|
||
|
|
||
|
|
||
|
func prop_selected() -> void:
|
||
|
state = State.SELECTED
|
||
|
open_hand.visible = true
|
||
|
closed_hand.visible = false
|
||
|
|
||
|
|
||
|
func prop_held() -> void:
|
||
|
state = State.HELD
|
||
|
open_hand.visible = false
|
||
|
closed_hand.visible = true
|
||
|
|
||
|
|
||
|
func reset() -> void:
|
||
|
state = State.NONE
|
||
|
open_hand.visible = false
|
||
|
closed_hand.visible = false
|
||
|
|
||
|
|
||
|
func select_prop() -> void:
|
||
|
_selected_this_frame = true
|
||
|
if state == State.NONE:
|
||
|
prop_selected()
|
||
|
|
||
|
|
||
|
func deselect() -> void:
|
||
|
if state == State.SELECTED:
|
||
|
reset()
|
||
|
|
||
|
|
||
|
func _process(_delta: float) -> void:
|
||
|
if not _selected_this_frame:
|
||
|
deselect()
|
||
|
|
||
|
_selected_this_frame = false
|