If you're talking about the red button at the end it's supposed to close the game if you play the Windows version, nothing happens in the browser
mintymunchies
Creator of
Recent community posts
Hey! It's my first time making a game and I made a simple dialogue manager in godot. Thought it might be useful to put it out here
Here's the script (sorry about the formatting):
class_name Dialogue
extends Node2D
@onready var dialogue_animation_player: AnimationPlayer = $AnimationPlayer
@onready var arrow_animation_player: AnimationPlayer = $TextureRect/AnimationPlayer
@onready var dialogue_node_2d: Dialogue = $"."
@onready var text_label: Label = $TextureRect/Label
@onready var timer: Timer = $TextureRect/Timer
signal dialogue_started()
signal dialogue_ended()
signal text_ended(idx: int)
var texts = [
{ "text": "", "auto": false },
]
var curr_text = 0
var curr_letter = 0
var dialogue_on = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
arrow_animation_player.play("wiggle_arrow")
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func start_dialogue():
dialogue_on = true
dialogue_started.emit()
dialogue_animation_player.play("show")
dialogue_node_2d.show()
set_text(texts[0].text)
func next():
if curr_text == texts.size() - 1:
dialogue_on = false
dialogue_ended.emit()
dialogue_animation_player.play("hide")
text_label.text = ""
curr_text = 0
else:
curr_text += 1
set_text(texts[curr_text].text)
func set_text(text: String):
text_label.text = ""
curr_letter = 0
timer.start(0.025)
timer.timeout.connect(add_letter)
func add_letter():
if curr_letter == texts[curr_text].text.length():
text_ended.emit(curr_text)
timer.stop()
if texts[curr_text].auto:
next()
else:
text_label.text += texts[curr_text].text[curr_letter]
curr_letter += 1
func _input(event: InputEvent) -> void:
if dialogue_on && event.is_action_pressed("lmb"):
next()