necra-prototypes/operation/grab_step.gd
Antonio Dell'Annunziata cd35a9b1ac
All checks were successful
/ test (push) Successful in 2s
Fix operation bugs
2025-03-07 06:31:12 +01:00

47 lines
1.3 KiB
GDScript

class_name GrabStep
extends Node2D
signal step_succeeded
signal step_failed
@export var is_skipped = false
@export_node_path("BatExtractionBat") var grabbing_target_path: NodePath
var feedback_canvas_modulate: FeedbackCanvasModulate
var bat_dropoff: BatDropoff
var patience_bar: ProgressBar
var grabbing_target: BatExtractionBat
var pliers: Pliers
func _ready():
grabbing_target = get_node(grabbing_target_path) as BatExtractionBat
pliers = get_tree().get_first_node_in_group("grabber") as Pliers
bat_dropoff = get_tree().get_first_node_in_group("bat_dropoff") as BatDropoff
feedback_canvas_modulate = get_tree().get_first_node_in_group("effects") as FeedbackCanvasModulate
patience_bar = get_tree().get_first_node_in_group("patience_bar") as ProgressBar
pliers.pliers_used.connect(_on_pliers_used)
func _on_pliers_used(top_area: Area2D):
if not grabbing_target.is_grabbed and top_area == grabbing_target.grab_area:
_target_grabbed()
elif grabbing_target.is_grabbed and top_area == bat_dropoff.dropoff_area:
_target_dropped()
else:
_hurt()
func _target_grabbed():
grabbing_target.grab_bat()
func _target_dropped():
print("Test")
grabbing_target.drop_bat()
step_succeeded.emit()
func _hurt():
feedback_canvas_modulate.show_hurt_feedback()
patience_bar.value = clampi(patience_bar.value - 10, 0, 100)