first version of EU AI Act game

This commit is contained in:
Anna Hiemenz
2026-05-26 21:46:46 +02:00
commit d370249649
1735 changed files with 79828 additions and 0 deletions
@@ -0,0 +1,210 @@
[gd_scene load_steps=14 format=3 uid="uid://pf8dknkr7qhu"]
[ext_resource type="Script" uid="uid://dw0hgklv36ei0" path="res://addons/dialogue_manager/game_balloons/game_balloon_v_2.gd" id="1_lq630"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_eej3y"]
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_ni41x"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(0.329412, 0.329412, 0.329412, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"]
bg_color = Color(0.121569, 0.121569, 0.121569, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 3
border_width_top = 3
border_width_right = 3
border_width_bottom = 3
border_color = Color(0.6, 0.6, 0.6, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qkmqt"]
[sub_resource type="Theme" id="Theme_qq3yp"]
default_font_size = 20
Button/styles/disabled = SubResource("StyleBoxFlat_spyqn")
Button/styles/focus = SubResource("StyleBoxFlat_ri4m3")
Button/styles/hover = SubResource("StyleBoxFlat_e0njw")
Button/styles/normal = SubResource("StyleBoxFlat_e0njw")
MarginContainer/constants/margin_bottom = 15
MarginContainer/constants/margin_left = 30
MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15
PanelContainer/styles/panel = SubResource("StyleBoxFlat_qkmqt")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8awow"]
bg_color = Color(0.14128241, 0.3091807, 0.48683643, 1)
corner_radius_top_left = 12
corner_radius_top_right = 12
corner_radius_bottom_right = 12
corner_radius_bottom_left = 12
[sub_resource type="Animation" id="Animation_nlsx6"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Progress:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_qkmqt"]
resource_name = "progress"
loop_mode = 1
step = 0.1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Progress:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.2, -0.0157438, -4, -0.2, 0.0112069, 0.25, 0, -4, -0.25, 0, 0.25, 0, 0, -0.2, 0.00299701, 0.25, 0),
"times": PackedFloat32Array(0, 0.1, 0.5, 0.6, 1)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1337t"]
_data = {
&"RESET": SubResource("Animation_nlsx6"),
&"progress": SubResource("Animation_qkmqt")
}
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_del0c"]
bg_color = Color(0.552682, 0.46808052, 0.3405151, 1)
[node name="GameBalloon_v1" type="CanvasLayer"]
layer = 100
script = ExtResource("1_lq630")
[node name="Balloon" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_qq3yp")
[node name="MarginContainer" type="MarginContainer" parent="Balloon"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -219.0
grow_horizontal = 2
grow_vertical = 0
[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer"]
clip_children = 2
layout_mode = 2
mouse_filter = 1
theme_override_styles/panel = SubResource("StyleBoxFlat_8awow")
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/PanelContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0.501961)
layout_mode = 2
mouse_filter = 1
bbcode_enabled = true
text = "Character"
fit_content = true
scroll_active = false
[node name="DialogueLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("2_eej3y")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_colors/default_color = Color(1, 1, 1, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
text = "Dialogue..."
[node name="Control" type="Control" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(20, 10)
layout_mode = 2
size_flags_vertical = 8
[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control"]
unique_name_in_owner = true
polygon = PackedVector2Array(0, 0, 10, 10, 20, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control"]
libraries = {
&"": SubResource("AnimationLibrary_1337t")
}
autoplay = "progress"
[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon" node_paths=PackedStringArray("response_template")]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -506.0
offset_top = 138.0
offset_right = 514.0
offset_bottom = 258.0
grow_horizontal = 2
grow_vertical = 2
size_flags_vertical = 8
theme_override_constants/separation = 2
alignment = 1
script = ExtResource("3_ni41x")
response_template = NodePath("ResponseExample")
[node name="ResponseExample" type="Button" parent="Balloon/ResponsesMenu"]
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 36
theme_override_styles/normal = SubResource("StyleBoxFlat_del0c")
text = "Response example"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="meta_hover_ended" from="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer/DialogueLabel" to="." method="_on_dialogue_label_meta_hover_ended"]
[connection signal="response_selected" from="Balloon/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]
@@ -0,0 +1,213 @@
extends CanvasLayer
## A basic dialogue balloon for use with Dialogue Manager.
## The dialogue resource
@export var dialogue_resource: DialogueResource
## Start from a given title when using balloon as a [Node] in a scene.
@export var start_from_title: String = ""
## If running as a [Node] in a scene then auto start the dialogue.
@export var auto_start: bool = false
## The action to use for advancing the dialogue
@export var next_action: StringName = &"advance_dialogue" #&"ui_accept"
## The action to use to skip typing the dialogue
@export var skip_action: StringName = &"ui_cancel"
## A sound player for voice lines (if they exist).
@onready var audio_stream_player: AudioStreamPlayer = %AudioStreamPlayer
## Temporary game states
var temporary_game_states: Array = []
## See if we are waiting for the player
var is_waiting_for_input: bool = false
## See if we are running a long mutation and should hide the balloon
var will_hide_balloon: bool = false
## A dictionary to store any ephemeral variables
var locals: Dictionary = {}
var _locale: String = TranslationServer.get_locale()
## The current line
var dialogue_line: DialogueLine:
set(value):
if value:
dialogue_line = value
apply_dialogue_line()
else:
# The dialogue has finished so close the balloon
if owner == null:
queue_free()
else:
hide()
get:
return dialogue_line
## A cooldown timer for delaying the balloon hide when encountering a mutation.
var mutation_cooldown: Timer = Timer.new()
## The base balloon anchor
@onready var balloon: Control = %Balloon
## The label showing the name of the currently speaking character
@onready var character_label: RichTextLabel = %CharacterLabel
## The label showing the currently spoken dialogue
@onready var dialogue_label: DialogueLabel = %DialogueLabel
## The menu of responses
@onready var responses_menu: DialogueResponsesMenu = %ResponsesMenu
## Indicator to show that player can progress dialogue.
@onready var progress: Polygon2D = %Progress
func _ready() -> void:
balloon.hide()
Engine.get_singleton("DialogueManager").mutated.connect(_on_mutated)
# If the responses menu doesn't have a next action set, use this one
if responses_menu.next_action.is_empty():
responses_menu.next_action = next_action
mutation_cooldown.timeout.connect(_on_mutation_cooldown_timeout)
add_child(mutation_cooldown)
if auto_start:
if not is_instance_valid(dialogue_resource):
assert(false, DMConstants.get_error_message(DMConstants.ERR_MISSING_RESOURCE_FOR_AUTOSTART))
start()
func _process(delta: float) -> void:
if is_instance_valid(dialogue_line):
progress.visible = not dialogue_label.is_typing and dialogue_line.responses.size() == 0 and not dialogue_line.has_tag("voice")
func _unhandled_input(_event: InputEvent) -> void:
# Only the balloon is allowed to handle input while it's showing
get_viewport().set_input_as_handled()
func _notification(what: int) -> void:
## Detect a change of locale and update the current dialogue line to show the new language
if what == NOTIFICATION_TRANSLATION_CHANGED and _locale != TranslationServer.get_locale() and is_instance_valid(dialogue_label):
_locale = TranslationServer.get_locale()
var visible_ratio = dialogue_label.visible_ratio
dialogue_line = await dialogue_resource.get_next_dialogue_line(dialogue_line.id)
if visible_ratio < 1:
dialogue_label.skip_typing()
## Start some dialogue
func start(with_dialogue_resource: DialogueResource = null, title: String = "", extra_game_states: Array = []) -> void:
temporary_game_states = [self] + extra_game_states
is_waiting_for_input = false
if is_instance_valid(with_dialogue_resource):
dialogue_resource = with_dialogue_resource
if not title.is_empty():
start_from_title = title
dialogue_line = await dialogue_resource.get_next_dialogue_line(start_from_title, temporary_game_states)
show()
## Apply any changes to the balloon given a new [DialogueLine].
func apply_dialogue_line() -> void:
mutation_cooldown.stop()
progress.hide()
is_waiting_for_input = false
balloon.focus_mode = Control.FOCUS_ALL
balloon.grab_focus()
character_label.visible = not dialogue_line.character.is_empty()
character_label.text = tr(dialogue_line.character, "dialogue")
dialogue_label.hide()
dialogue_label.dialogue_line = dialogue_line
responses_menu.hide()
responses_menu.responses = dialogue_line.responses
# Show our balloon
balloon.show()
will_hide_balloon = false
dialogue_label.show()
if not dialogue_line.text.is_empty():
dialogue_label.type_out()
await dialogue_label.finished_typing
# Wait for next line
if dialogue_line.has_tag("voice"):
audio_stream_player.stream = load(dialogue_line.get_tag_value("voice"))
audio_stream_player.play()
await audio_stream_player.finished
next(dialogue_line.next_id)
elif dialogue_line.responses.size() > 0:
balloon.focus_mode = Control.FOCUS_NONE
responses_menu.show()
elif dialogue_line.time != "":
var time = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float()
await get_tree().create_timer(time).timeout
next(dialogue_line.next_id)
else:
is_waiting_for_input = true
balloon.focus_mode = Control.FOCUS_ALL
balloon.grab_focus()
## Go to the next line
func next(next_id: String) -> void:
dialogue_line = await dialogue_resource.get_next_dialogue_line(next_id, temporary_game_states)
#region Signals
func _on_mutation_cooldown_timeout() -> void:
if will_hide_balloon:
will_hide_balloon = false
balloon.hide()
func _on_mutated(_mutation: Dictionary) -> void:
if not _mutation.is_inline:
is_waiting_for_input = false
will_hide_balloon = true
mutation_cooldown.start(0.1)
func _on_balloon_gui_input(event: InputEvent) -> void:
# See if we need to skip typing of the dialogue
if dialogue_label.is_typing:
var mouse_was_clicked: bool = event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed()
var skip_button_was_pressed: bool = event.is_action_pressed(skip_action)
if mouse_was_clicked or skip_button_was_pressed:
get_viewport().set_input_as_handled()
dialogue_label.skip_typing()
return
if not is_waiting_for_input: return
if dialogue_line.responses.size() > 0: return
# When there are no response options the balloon itself is the clickable thing
get_viewport().set_input_as_handled()
if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT:
next(dialogue_line.next_id)
elif event.is_action_pressed(next_action) and get_viewport().gui_get_focus_owner() == balloon:
next(dialogue_line.next_id)
func _on_responses_menu_response_selected(response: DialogueResponse) -> void:
next(response.next_id)
#endregion
@@ -0,0 +1 @@
uid://dw0hgklv36ei0
@@ -0,0 +1,180 @@
[gd_scene load_steps=12 format=3 uid="uid://dtk1rnx61snst"]
[ext_resource type="Script" uid="uid://dw0hgklv36ei0" path="res://addons/dialogue_manager/game_balloons/game_balloon_v_2.gd" id="1_srvxo"]
[ext_resource type="FontFile" uid="uid://xyyowbn8d8hq" path="res://assets/Fonts/LessPerfectDOSVGA.ttf" id="2_jedgu"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_y76or"]
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_hol6y"]
[ext_resource type="Script" uid="uid://tsgi2x8suqcv" path="res://addons/dialogue_manager/game_balloons/head_text.gd" id="3_jedgu"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.329412, 0.329412, 0.329412, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.6, 0.6, 0.6, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_srvxo"]
bg_color = Color(0.11858138, 0.11858139, 0.11858132, 1)
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="Theme" id="Theme_qq3yp"]
default_font_size = 20
Button/colors/font_focus_color = Color(0.7258277, 0.11823044, 0.94382197, 1)
Button/colors/font_hover_color = Color(0.7254902, 0.11764706, 0.94509804, 1)
Button/fonts/font = ExtResource("2_jedgu")
Button/styles/disabled = SubResource("StyleBoxFlat_spyqn")
Button/styles/focus = SubResource("StyleBoxFlat_ri4m3")
Button/styles/hover = SubResource("StyleBoxFlat_e0njw")
Button/styles/normal = SubResource("StyleBoxFlat_e0njw")
MarginContainer/constants/margin_bottom = 15
MarginContainer/constants/margin_left = 30
MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15
PanelContainer/styles/panel = SubResource("StyleBoxFlat_srvxo")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y76or"]
bg_color = Color(0.17402825, 0.17402828, 0.17402813, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
[node name="GameBalloonV2" type="CanvasLayer"]
layer = 100
script = ExtResource("1_srvxo")
[node name="Balloon" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_qq3yp")
[node name="MarginContainer" type="MarginContainer" parent="Balloon"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -219.0
grow_horizontal = 2
grow_vertical = 0
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 0
[node name="HeadPanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 25)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_y76or")
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer"]
layout_mode = 2
theme_override_constants/margin_top = 5
theme_override_constants/margin_bottom = 5
[node name="HeadText" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer/MarginContainer"]
layout_mode = 2
theme_override_fonts/normal_font = ExtResource("2_jedgu")
theme_override_font_sizes/normal_font_size = 28
text = "/Level_1/"
fit_content = true
horizontal_alignment = 1
script = ExtResource("3_jedgu")
[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
clip_children = 2
layout_mode = 2
mouse_filter = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer"]
custom_minimum_size = Vector2(0, 300)
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0.501961)
layout_mode = 2
mouse_filter = 1
theme_override_fonts/normal_font = ExtResource("2_jedgu")
theme_override_font_sizes/normal_font_size = 28
bbcode_enabled = true
text = "Character"
fit_content = true
scroll_active = false
[node name="DialogueLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("2_y76or")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_fonts/normal_font = ExtResource("2_jedgu")
text = "Dialogue..."
[node name="Control" type="Control" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(20, 10)
layout_mode = 2
size_flags_vertical = 8
[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
unique_name_in_owner = true
visible = false
polygon = PackedVector2Array(0, 0, 10, 10, 20, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
autoplay = "progress"
[node name="MarginContainer2" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2" node_paths=PackedStringArray("response_template")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 2
script = ExtResource("3_hol6y")
response_template = NodePath("ResponseExample")
[node name="ResponseExample" type="Button" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu"]
layout_mode = 2
theme_override_colors/font_focus_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
theme_override_colors/font_hover_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
theme_override_font_sizes/font_size = 32
text = "Response example"
alignment = 0
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="meta_hover_ended" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/DialogueLabel" to="." method="_on_dialogue_label_meta_hover_ended"]
[connection signal="response_selected" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]
@@ -0,0 +1,182 @@
[gd_scene load_steps=13 format=3 uid="uid://dd7wybycpufwm"]
[ext_resource type="Script" uid="uid://dw0hgklv36ei0" path="res://addons/dialogue_manager/game_balloons/game_balloon_v_2.gd" id="1_1f47g"]
[ext_resource type="FontFile" uid="uid://ub0pauqeelw8" path="res://assets/Fonts/Perfect DOS VGA 437.ttf" id="2_nuo8t"]
[ext_resource type="Script" uid="uid://tsgi2x8suqcv" path="res://addons/dialogue_manager/game_balloons/head_text.gd" id="3_ps53m"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="4_ec54f"]
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="5_cgph6"]
[ext_resource type="FontFile" uid="uid://xyyowbn8d8hq" path="res://assets/Fonts/LessPerfectDOSVGA.ttf" id="5_nuo8t"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.329412, 0.329412, 0.329412, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.6, 0.6, 0.6, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_srvxo"]
bg_color = Color(0.11858138, 0.11858139, 0.11858132, 1)
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="Theme" id="Theme_qq3yp"]
default_font_size = 20
Button/colors/font_focus_color = Color(0.7258277, 0.11823044, 0.94382197, 1)
Button/colors/font_hover_color = Color(0.7254902, 0.11764706, 0.94509804, 1)
Button/fonts/font = ExtResource("2_nuo8t")
Button/styles/disabled = SubResource("StyleBoxFlat_spyqn")
Button/styles/focus = SubResource("StyleBoxFlat_ri4m3")
Button/styles/hover = SubResource("StyleBoxFlat_e0njw")
Button/styles/normal = SubResource("StyleBoxFlat_e0njw")
MarginContainer/constants/margin_bottom = 15
MarginContainer/constants/margin_left = 30
MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15
PanelContainer/styles/panel = SubResource("StyleBoxFlat_srvxo")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y76or"]
bg_color = Color(0.17402825, 0.17402828, 0.17402813, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
[node name="GameBalloonV2" type="CanvasLayer"]
layer = 100
script = ExtResource("1_1f47g")
[node name="Balloon" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_qq3yp")
[node name="MarginContainer" type="MarginContainer" parent="Balloon"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 120.0
offset_top = -880.0
offset_right = -900.0
offset_bottom = -520.0
grow_horizontal = 2
grow_vertical = 0
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 0
[node name="HeadPanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 25)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_y76or")
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer"]
layout_mode = 2
theme_override_constants/margin_top = 5
theme_override_constants/margin_bottom = 5
[node name="HeadText" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer/MarginContainer"]
layout_mode = 2
theme_override_fonts/normal_font = ExtResource("2_nuo8t")
text = "/Level_1/"
fit_content = true
horizontal_alignment = 1
script = ExtResource("3_ps53m")
[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
clip_children = 2
layout_mode = 2
mouse_filter = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer"]
custom_minimum_size = Vector2(0, 300)
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0.501961)
layout_mode = 2
mouse_filter = 1
theme_override_fonts/normal_font = ExtResource("2_nuo8t")
theme_override_font_sizes/normal_font_size = 24
bbcode_enabled = true
text = "Character"
fit_content = true
scroll_active = false
[node name="DialogueLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("4_ec54f")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_fonts/normal_font = ExtResource("5_nuo8t")
text = "Dialogue..."
[node name="Control" type="Control" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(20, 10)
layout_mode = 2
size_flags_vertical = 8
[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
unique_name_in_owner = true
visible = false
polygon = PackedVector2Array(0, 0, 10, 10, 20, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
autoplay = "progress"
[node name="MarginContainer2" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2" node_paths=PackedStringArray("response_template")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 2
script = ExtResource("5_cgph6")
response_template = NodePath("ResponseExample")
[node name="ResponseExample" type="Button" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu"]
layout_mode = 2
theme_override_colors/font_focus_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
theme_override_colors/font_hover_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
text = "Response example"
alignment = 0
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="meta_hover_ended" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/DialogueLabel" to="." method="_on_dialogue_label_meta_hover_ended"]
[connection signal="response_selected" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]
@@ -0,0 +1,185 @@
[gd_scene load_steps=13 format=3 uid="uid://badfvro4jfkl"]
[ext_resource type="Script" uid="uid://dw0hgklv36ei0" path="res://addons/dialogue_manager/game_balloons/game_balloon_v_2.gd" id="1_x7ekx"]
[ext_resource type="FontFile" uid="uid://ub0pauqeelw8" path="res://assets/Fonts/Perfect DOS VGA 437.ttf" id="2_14q4r"]
[ext_resource type="Script" uid="uid://tsgi2x8suqcv" path="res://addons/dialogue_manager/game_balloons/head_text.gd" id="3_ko5db"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="4_inu7v"]
[ext_resource type="FontFile" uid="uid://xyyowbn8d8hq" path="res://assets/Fonts/LessPerfectDOSVGA.ttf" id="5_14q4r"]
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="5_v3yfa"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.329412, 0.329412, 0.329412, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"]
bg_color = Color(0, 0, 0, 0)
border_color = Color(0.6, 0.6, 0.6, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_srvxo"]
bg_color = Color(0.11858138, 0.11858139, 0.11858132, 1)
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="Theme" id="Theme_qq3yp"]
default_font_size = 20
Button/colors/font_focus_color = Color(0.7258277, 0.11823044, 0.94382197, 1)
Button/colors/font_hover_color = Color(0.7254902, 0.11764706, 0.94509804, 1)
Button/fonts/font = ExtResource("2_14q4r")
Button/styles/disabled = SubResource("StyleBoxFlat_spyqn")
Button/styles/focus = SubResource("StyleBoxFlat_ri4m3")
Button/styles/hover = SubResource("StyleBoxFlat_e0njw")
Button/styles/normal = SubResource("StyleBoxFlat_e0njw")
MarginContainer/constants/margin_bottom = 15
MarginContainer/constants/margin_left = 30
MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15
PanelContainer/styles/panel = SubResource("StyleBoxFlat_srvxo")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y76or"]
bg_color = Color(0.17402825, 0.17402828, 0.17402813, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
[node name="GameBalloonV2" type="CanvasLayer"]
layer = 100
script = ExtResource("1_x7ekx")
[node name="Balloon" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_qq3yp")
[node name="MarginContainer" type="MarginContainer" parent="Balloon"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 200.0
offset_top = -880.0
offset_right = -220.0
offset_bottom = -480.0
grow_horizontal = 2
grow_vertical = 0
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 0
[node name="HeadPanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 25)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_y76or")
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer"]
layout_mode = 2
theme_override_constants/margin_top = 5
theme_override_constants/margin_bottom = 5
[node name="HeadText" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/HeadPanelContainer/MarginContainer"]
layout_mode = 2
theme_override_fonts/normal_font = ExtResource("2_14q4r")
theme_override_font_sizes/normal_font_size = 28
text = "/Level_1/"
fit_content = true
horizontal_alignment = 1
script = ExtResource("3_ko5db")
[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer/VBoxContainer"]
clip_children = 2
layout_mode = 2
size_flags_vertical = 3
mouse_filter = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer"]
custom_minimum_size = Vector2(0, 300)
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0.501961)
layout_mode = 2
mouse_filter = 1
theme_override_fonts/normal_font = ExtResource("2_14q4r")
theme_override_font_sizes/normal_font_size = 28
bbcode_enabled = true
text = "Character"
fit_content = true
scroll_active = false
[node name="DialogueLabel" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("4_inu7v")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_fonts/normal_font = ExtResource("5_14q4r")
text = "Dialogue..."
[node name="Control" type="Control" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(20, 10)
layout_mode = 2
size_flags_vertical = 8
[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
unique_name_in_owner = true
visible = false
polygon = PackedVector2Array(0, 0, 10, 10, 20, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/Control"]
autoplay = "progress"
[node name="MarginContainer2" type="MarginContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2" node_paths=PackedStringArray("response_template")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 2
script = ExtResource("5_v3yfa")
response_template = NodePath("ResponseExample")
[node name="ResponseExample" type="Button" parent="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu"]
layout_mode = 2
theme_override_colors/font_focus_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
theme_override_colors/font_hover_color = Color(0.011764706, 0.68235296, 0.27058825, 1)
theme_override_font_sizes/font_size = 32
text = "Response example"
alignment = 0
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="meta_hover_ended" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/DialogueLabel" to="." method="_on_dialogue_label_meta_hover_ended"]
[connection signal="response_selected" from="Balloon/MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/MarginContainer2/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]
@@ -0,0 +1,12 @@
extends RichTextLabel
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var scene_name = get_tree().current_scene.name
text = "/" + scene_name + "/"
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
@@ -0,0 +1 @@
uid://tsgi2x8suqcv