Table of Contents
src / dialogue / chapters / 1 / young_guy / young_guy.gd
Attached Scenes
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()