extends Node class_name IntroScript signal end_step export (NodePath) var dialogue_box_path onready var dialogue_box = get_node(dialogue_box_path) export (NodePath) var herbert_sprite_path onready var herbert_sprite = get_node(herbert_sprite_path) export (String, FILE, '*.json') var intro_dialogue_1 : String export (String, FILE, '*.json') var intro_dialogue_2 : String func _ready(): assert(dialogue_box != null) assert(herbert_sprite != null) dialogue_box.connect('update', self, 'update_camera') yield(get_tree().create_timer(2.0), 'timeout') yield(start_dialogue(intro_dialogue_1), 'end') yield(get_tree().create_timer(2.0), 'timeout') do_crab_step() yield(self, 'end_step') yield(start_dialogue(intro_dialogue_2), 'end') func update_camera(): var line = dialogue_box._dialogue[dialogue_box._index] if line.name == 'Crab' || line.name == 'Herbert': herbert_sprite.show() else: herbert_sprite.hide() func start_dialogue(dialog_path : String) -> DialogueAction: var dialogue = DialogueAction.new() dialogue.dialogue_file_path = dialog_path dialogue.dialogue_box = dialogue_box dialogue.start() return dialogue var crab_finished = false var crab_step = 0 func do_crab_step(): crab_finished = false herbert_sprite.frame = 0 if crab_step == 0: herbert_sprite.connect('animation_finished', self, 'crab_animation_finished') herbert_sprite.play('eyes') herbert_sprite.show() elif crab_step == 1: herbert_sprite.play('first_step') elif crab_step == 2: herbert_sprite.play('second_step') elif crab_step == 3: herbert_sprite.disconnect('animation_finished', self, 'crab_animation_finished') herbert_sprite.play('third_step') yield(herbert_sprite, 'animation_finished') herbert_sprite.play('idle') emit_signal("end_step") crab_step += 1 func crab_animation_finished(): crab_finished = true func _input(event): if crab_finished && event.is_action_pressed('ui_accept'): do_crab_step()