src / dialogue / chapters / 1 / young_guy / young_guy.gd

Code

extends Area2D

signal event

enum State { IDLE, ENTERED, PROGRESS, FINISHED }
var state : State
var entered : bool = false


func _ready() -> void:
	if not owner: start()


func start() -> void:
	state = State.PROGRESS
	%Dialogue.start()


func stop() -> void:
	state = State.ENTERED


func finish() -> void:
	state = State.FINISHED
	%AnimationPlayer.play(&'finish')
	%Speech.visible = false


func _input(event_: InputEvent) -> void:
	if not state == State.ENTERED: return
	if event_.is_action_pressed(&'dialogue_start'):
		start()


func enter(val: bool = true) -> void:
	if val: state = State.ENTERED
	else:   state = State.IDLE
	%ButtonB.visible = val
	%Silence.visible = !val


func exit() -> void:
	enter(false)


func _on_area_entered(_area: Area2D) -> void:
	if not state == State.FINISHED: enter()


func _on_area_exited(_area: Area2D) -> void:
	if not state == State.FINISHED: exit()


func _on_dialogue_paused() -> void:
	stop()


func _on_dialogue_event(event_name: String) -> void:
	if %AnimationPlayer.has_animation(event_name):
		%AnimationPlayer.play(event_name)
	event.emit(event_name)


func _on_dialogue_finished() -> void:
	finish()