GAE_CA1/Assets/NPC/npc_controller.gd

60 lines
1.4 KiB
GDScript

class_name NPC extends CharacterBody2D
@export var visuals: Node2D
var target_pos
signal npc_left
signal ready_to_order
var seleced_visual:AnimatedSprite2D
var active_order:Array[String]
# Audio
@export var angry_noise: AudioStreamPlayer
@export var happy_noise: AudioStreamPlayer
@export var shop_entert_sound: AudioStreamPlayer
func _ready() -> void:
selced_a_customer()
var theke = get_tree().get_first_node_in_group("theke")
if theke is Theke:
theke.register_customer(self)
func selced_a_customer()->void:
seleced_visual = visuals.get_children().pick_random()
seleced_visual.visible = true
seleced_visual.play("run")
func set_target_pos(target:Vector2)->void:
target_pos = target
func walk()->void:
var tween = create_tween()
tween.tween_property(self, "position", target_pos, 1.5)
await tween.finished
## hier wäre der Spiler an der Theke
var theke:Theke = get_tree().get_first_node_in_group("theke")
theke.register_customer(self)
print(" NPC ready to tke order")
seleced_visual.play("idle")
## icon für oder aktiviren
# löschen des npc über die theke
func walk_back() ->void:
seleced_visual.play("walk_back")
var tween = create_tween()
tween.tween_property(self, "position", Vector2.ZERO, 1.5)
await tween.finished
npc_left.emit()
self.queue_free()
# kann hier NPC ICON für bestllung anzeigen -
func generet_potion_order(size:int)->void:
active_order = OrderGenerator.generete_uniqe_order(size)