mirror of
https://github.com/Steffo99/hella-farm.git
synced 2024-11-25 09:34:24 +00:00
Create HuntTarget
behaviour
This commit is contained in:
parent
05a0f84b70
commit
b1ab4cc5c7
2 changed files with 67 additions and 0 deletions
50
behaviours/hunt_target.gd
Normal file
50
behaviours/hunt_target.gd
Normal file
|
@ -0,0 +1,50 @@
|
|||
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
|
||||
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():
|
||||
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
|
||||
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)
|
17
behaviours/hunt_target.tscn
Normal file
17
behaviours/hunt_target.tscn
Normal file
|
@ -0,0 +1,17 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://dxmodn8mbvw0i"]
|
||||
|
||||
[ext_resource type="Script" path="res://behaviours/hunt_target.gd" id="1_1ex7u"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctpn4hvkhxoi3" path="res://behaviours/hunter.tscn" id="2_vjdtc"]
|
||||
|
||||
[node name="HuntTarget" type="Node2D"]
|
||||
script = ExtResource("1_1ex7u")
|
||||
|
||||
[node name="Hunter" parent="." instance=ExtResource("2_vjdtc")]
|
||||
|
||||
[node name="GiveUpTimer" type="Timer" parent="."]
|
||||
|
||||
[connection signal="target_abandoned" from="." to="." method="_on_target_abandoned"]
|
||||
[connection signal="target_selected" from="." to="." method="_on_target_selected"]
|
||||
[connection signal="tracked" from="Hunter" to="." method="_on_hunter_tracked"]
|
||||
[connection signal="untracked" from="Hunter" to="." method="_on_hunter_untracked"]
|
||||
[connection signal="timeout" from="GiveUpTimer" to="." method="_on_give_up_timer_timeout"]
|
Loading…
Reference in a new issue