func _unhandled_input(event: InputEvent) -> void:
if in_range:
if event.is_action_pressed("show_dialogue"):
interactable_label_component.hide()
animated_sprite_2d.play("chest_open")
is_chest_open = true
# create some dialogue
var balloon: BaseGameDialogueBalloon = balloon_scene.instantiate()
get_tree().root.add_child(balloon)
balloon.start(load("res://dialogue/conversations/chest.dialogue"), dialogue_start_command)
func on_feed_the_animals() -> void:
if in_range:
trigger_feed_harvest("corn", corn_harvest_scene)
trigger_feed_harvest("tomato", tomato_harvest_scene)
func trigger_feed_harvest(inventory_item: String, scene: Resource) -> void:
var inventory: Dictionary = InventoryManager.inventory
if !inventory.has(inventory_item):
return
var inventory_item_count = inventory[inventory_item]
for index in inventory_item_count:
var harvest_instance = scene.instantiate() as Node2D
harvest_instance.global_position = Vector2(global_position.x, global_position.y - food_drop_height)
get_tree().root.add_child(harvest_instance)
var target_position = global_position
var time_delay = randf_range(0.5, 2.0)
await get_tree().create_timer(time_delay).timeout
var tween = get_tree().create_tween()
tween.tween_property(harvest_instance, "position", target_position, 1.0)
tween.tween_property(harvest_instance, "scale", Vector2(0.5, 0.5), 1.0)
tween.tween_callback(harvest_instance.queue_free)
InventoryManager.remove_collectable(inventory_item)
func on_food_received(area: Area2D) -> void:
call_deferred("add_reward_scene")