1
Fork 0
mirror of https://github.com/Steffo99/hella-farm.git synced 2024-11-23 00:24:21 +00:00
hella-farm/behaviours/hunt_target.gd
2024-04-15 02:45:18 +02:00

55 lines
1.1 KiB
GDScript

extends Node2D
class_name HuntTarget
signal target_selected(target: Node2D)
signal target_abandoned(target: Node2D)
@export var tag: StringName:
get:
return tag
set(value):
tag = value
if hunter != null:
hunter.tag = value
@export var give_up_secs: float = 5.0
@onready var give_up_timer: Timer = $"GiveUpTimer"
@onready var hunter: Hunter = $"Hunter"
var target: Node2D = null
func pick_new_target():
if hunter.possible_targets.is_empty():
return
var idx = Random.rng.randi_range(0, len(hunter.possible_targets) - 1)
target = hunter.possible_targets[idx]
target_selected.emit(target)
give_up_timer.start(give_up_secs)
func _ready():
hunter.tag = tag
func _on_hunter_tracked(_body: Node2D):
if target == null:
pick_new_target()
func _on_hunter_untracked(body: Node2D):
if body == target:
target = null
target_abandoned.emit(body)
pick_new_target()
func _on_give_up_timer_timeout() -> void:
target = null
pick_new_target()
func _on_target_selected(body: Node2D) -> void:
Log.p(self, "Target selected: %s" % body)
func _on_target_abandoned(body: Node2D) -> void:
Log.p(self, "Target abandoned: %s" % body)