60 lines
1.4 KiB
GDScript
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)
|