Files
Kalulu/patch-test.diff
T
2025-06-08 23:36:19 +02:00

1025 lines
45 KiB
Diff

From 77425af7dd5aee9864c88f8c46afd428132dc157 Mon Sep 17 00:00:00 2001
From: Adrien Ufferte <adrien.ufferte@netcourrier.com>
Date: Sun, 8 Jun 2025 19:37:02 +0200
Subject: [PATCH] Clean code naming convention
---
sources/gardens/gardens.gd | 46 +++++++++----------
sources/gardens/gardens_edit_tool.gd | 28 +++++------
sources/gardens/minigame_layout.gd | 2 +
.../gp_image_and_sound_descriptions.gd | 6 +--
.../language_tool/gp_video_descriptions.gd | 6 +--
.../image_and_sound_gp_description.gd | 4 +-
sources/language_tool/in_game_sounds.gd | 12 ++---
sources/language_tool/kalulu_speech.gd | 2 +-
sources/language_tool/lesson_exercises.gd | 13 +-----
.../lesson_exercises_container.gd | 1 +
sources/language_tool/prof_tool_menu.gd | 44 +++++++++---------
.../language_tool/sentence_list_element.gd | 4 +-
sources/language_tool/tracing_builder.gd | 4 +-
sources/language_tool/video_gp_description.gd | 2 +-
sources/language_tool/word_list_element.gd | 8 ++--
sources/look_and_learn/look_and_learn.gd | 4 +-
sources/look_and_learn/tracing_manager.gd | 10 ++--
sources/menus/brain/brain.gd | 5 +-
sources/minigames/base/base_minigame.gd | 3 --
sources/minigames/caterpillar/berry.gd | 1 +
sources/minigames/caterpillar/branch.gd | 15 +++---
sources/minigames/caterpillar/caterpillar.gd | 6 +--
.../minigames/caterpillar/caterpillar_body.gd | 1 +
.../minigames/caterpillar/caterpillar_head.gd | 1 +
.../caterpillar/caterpillar_minigame.gd | 9 +---
sources/minigames/caterpillar/leaf.gd | 1 +
sources/minigames/frog/frog_material.tres | 2 +-
sources/minigames/frog/lilypad_material.tres | 2 +-
sources/utils/autoloads/database.gd | 21 ++++-----
sources/utils/fx/fireworks.gd | 6 +--
sources/utils/fx/rocket.gd | 1 +
31 files changed, 125 insertions(+), 145 deletions(-)
diff --git a/sources/gardens/gardens.gd b/sources/gardens/gardens.gd
index 7d8bd1d6..28fde8d8 100644
--- a/sources/gardens/gardens.gd
+++ b/sources/gardens/gardens.gd
@@ -1,16 +1,16 @@
extends Control
+class_name Gardens
+
signal minigame_layout_opened()
# Namespace
-const LookAndLearn: = preload("res://sources/look_and_learn/look_and_learn.gd")
-const MinigameLayout: = preload("res://sources/gardens/minigame_layout.gd")
-const Kalulu: = preload("res://sources/minigames/base/kalulu.gd")
+const KALULU: = preload("res://sources/minigames/base/kalulu.gd")
-const garden_scene: PackedScene = preload("res://resources/gardens/garden.tscn")
-const look_and_learn_scene: PackedScene = preload("res://sources/look_and_learn/look_and_learn.tscn")
-const flower_fvx: PackedScene = preload("res://sources/gardens/flower_particle.tscn")
+const GARDEN_SCENE: PackedScene = preload("res://resources/gardens/garden.tscn")
+const LOOK_AND_LEARN_SCENE: PackedScene = preload("res://sources/look_and_learn/look_and_learn.tscn")
+const FLOWER_FVX: PackedScene = preload("res://sources/gardens/flower_particle.tscn")
-const garden_size: int = 2400
+const GARDEN_SIZE: int = 2400
@export_category("Layout")
@export var gardens_layout: GardensLayout:
@@ -46,7 +46,7 @@ const garden_size: int = 2400
@onready var minigame_background: TextureRect = %MinigameBackground
@onready var minigame_background_center: TextureRect = %MinigameBackgroundCenter
@onready var lock: Control = %Lock
-@onready var kalulu: Kalulu = %Kalulu
+@onready var kalulu: KALULU = %Kalulu
@onready var kalulu_button: CanvasItem = %KaluluButton
@onready var intro_speech: AudioStreamMP3 = Database.load_external_sound(Database.get_kalulu_speech_path("gardens_screen", "intro"))
@@ -238,9 +238,9 @@ func _ready() -> void:
Logger.error("Gardens: initialisation: transition_data exists but does not contains the needed current_garden_index")
starting_garden = 0
- scroll_container.scroll_horizontal = garden_size * starting_garden
+ scroll_container.scroll_horizontal = GARDEN_SIZE * starting_garden
@warning_ignore("integer_division")
- scroll_beginning_garden = scroll_container.scroll_horizontal / garden_size
+ scroll_beginning_garden = scroll_container.scroll_horizontal / GARDEN_SIZE
current_garden = garden_parent.get_child(starting_garden)
@@ -285,7 +285,7 @@ func _ready() -> void:
play_animation = true
if play_animation:
- var fvfx: FlowerVFX = flower_fvx.instantiate()
+ var fvfx: FlowerVFX = FLOWER_FVX.instantiate()
current_garden.flower_controls[flower_ind].add_child(fvfx)
fvfx.anchor_bottom = 0.5
fvfx.anchor_top = 0.5
@@ -346,14 +346,14 @@ func _ready() -> void:
# Check if we need to scroll to the next garden
if is_last_lesson_of_garden:
@warning_ignore("integer_division")
- scroll_beginning_garden = scroll_container.scroll_horizontal / garden_size
- var target_scroll: int = scroll_beginning_garden * garden_size + garden_size
+ scroll_beginning_garden = scroll_container.scroll_horizontal / GARDEN_SIZE
+ var target_scroll: int = scroll_beginning_garden * GARDEN_SIZE + GARDEN_SIZE
var tween: Tween = create_tween()
tween.set_ease(Tween.EASE_IN_OUT)
tween.tween_property(scroll_container, "scroll_horizontal", target_scroll, 4)
@warning_ignore("integer_division")
- scroll_beginning_garden = target_scroll / garden_size
+ scroll_beginning_garden = target_scroll / GARDEN_SIZE
current_garden = garden_parent.get_child(scroll_beginning_garden)
@@ -571,7 +571,7 @@ func add_gardens() -> void:
var current_lesson_count: int = 0
var garden_index: int = 0
for garden_layout: GardenLayout in gardens_layout.gardens:
- var garden: Garden = garden_scene.instantiate()
+ var garden: Garden = GARDEN_SCENE.instantiate()
garden_parent.add_child(garden)
garden.garden_index = garden_index
garden_index += 1
@@ -649,7 +649,7 @@ func _on_lesson_button_pressed() -> void:
current_garden_index = current_garden.garden_index,
look_and_learn_completed = false
}
- get_tree().change_scene_to_packed(look_and_learn_scene)
+ get_tree().change_scene_to_packed(LOOK_AND_LEARN_SCENE)
func _on_minigame_button_pressed(minigame_scene: PackedScene, minigame_number: int) -> void:
@@ -675,21 +675,21 @@ func _on_scroll_container_gui_input(event: InputEvent) -> void:
if event.is_action_pressed("left_click"):
is_scrolling = true
@warning_ignore("integer_division")
- scroll_beginning_garden = scroll_container.scroll_horizontal / garden_size
+ scroll_beginning_garden = scroll_container.scroll_horizontal / GARDEN_SIZE
if scroll_tween:
scroll_tween.stop()
scroll_tween = null
elif event.is_action_released("left_click"):
is_scrolling = false
- var shift_value: int = scroll_container.scroll_horizontal - scroll_beginning_garden * garden_size
- var target_scroll: int = scroll_beginning_garden * garden_size
+ var shift_value: int = scroll_container.scroll_horizontal - scroll_beginning_garden * GARDEN_SIZE
+ var target_scroll: int = scroll_beginning_garden * GARDEN_SIZE
var is_garden_changed: bool = false
if shift_value < - 400:
- target_scroll -= garden_size
+ target_scroll -= GARDEN_SIZE
is_garden_changed = true
left_audio_stream_player.play()
elif shift_value > 400:
- target_scroll += garden_size
+ target_scroll += GARDEN_SIZE
is_garden_changed = true
right_audio_stream_player.play()
scroll_tween = create_tween()
@@ -698,12 +698,12 @@ func _on_scroll_container_gui_input(event: InputEvent) -> void:
scroll_tween.tween_property(scroll_container, "scroll_horizontal", target_scroll, 1)
if is_garden_changed:
@warning_ignore("integer_division")
- current_garden = garden_parent.get_child(target_scroll / garden_size)
+ current_garden = garden_parent.get_child(target_scroll / GARDEN_SIZE)
current_garden.pop_animation()
await scroll_tween.finished
@warning_ignore("integer_division")
- scroll_beginning_garden = scroll_container.scroll_horizontal / garden_size
+ scroll_beginning_garden = scroll_container.scroll_horizontal / GARDEN_SIZE
if is_scrolling and event is InputEventMouseMotion:
var motion_event: InputEventMouseMotion = event
diff --git a/sources/gardens/gardens_edit_tool.gd b/sources/gardens/gardens_edit_tool.gd
index c9624a79..3a32ec38 100644
--- a/sources/gardens/gardens_edit_tool.gd
+++ b/sources/gardens/gardens_edit_tool.gd
@@ -1,9 +1,9 @@
-extends "res://sources/gardens/gardens.gd"
+extends Gardens
-const max_lesson_number: int = 80
-const garden_textures_nb: int = 20
-const flower_types_nb: int = 5
-const gardens_layout_resource_path: String = "res://resources/gardens/gardens_layout.tres"
+const MAX_LESSON_NUMBER: int = 80
+const GARDEN_TEXTURES_NB: int = 20
+const FLOWER_TYPES_NB: int = 5
+const GARDENS_LAYOUT_RESOURCE_PATH: String = "res://resources/gardens/gardens_layout.tres"
var dragging_element: Variant
@@ -15,16 +15,16 @@ func _ready() -> void:
line_particles.hide()
back_button.hide()
- for index: int in max_lesson_number:
+ for index: int in MAX_LESSON_NUMBER:
lessons[index] = index
# Checks if a configuration exists
- if not ResourceLoader.exists(gardens_layout_resource_path):
+ if not ResourceLoader.exists(GARDENS_LAYOUT_RESOURCE_PATH):
gardens_layout = GardensLayout.new()
- gardens_layout.resource_path = gardens_layout_resource_path
+ gardens_layout.resource_path = GARDENS_LAYOUT_RESOURCE_PATH
_init_gardens_layout()
- gardens_layout = load(gardens_layout_resource_path)
+ gardens_layout = load(GARDENS_LAYOUT_RESOURCE_PATH)
set_up_click_detection()
@@ -32,7 +32,7 @@ func _init_gardens_layout() -> void:
# Empty the gardens configuration
gardens_layout.gardens.clear()
- for index: int in max_lesson_number:
+ for index: int in MAX_LESSON_NUMBER:
var garden_layout: GardenLayout
@@ -42,7 +42,7 @@ func _init_gardens_layout() -> void:
gardens_layout.gardens.append(garden_layout)
@warning_ignore("integer_division")
- garden_layout.color = (index / 4) % garden_textures_nb
+ garden_layout.color = (index / 4) % GARDEN_TEXTURES_NB
# Add the flowers to the garden
for flower_i: int in 5:
@@ -181,7 +181,7 @@ func _on_flower_gui_input(event: InputEvent, garden_control_ind: int, flower_ind
var garden: Garden = garden_parent.get_child(garden_control_ind)
var flower: GardenLayout.Flower = gardens_layout.gardens[garden_control_ind].flowers[flower_ind]
flower.type += 1
- if flower.type >= flower_types_nb:
+ if flower.type >= FLOWER_TYPES_NB:
flower.type = 0
garden.set_flowers(gardens_layout.gardens[garden_control_ind].flowers, Garden.FlowerSizes.LARGE)
ResourceSaver.save(gardens_layout, gardens_layout.resource_path)
@@ -205,7 +205,7 @@ func _on_change_flower_color_button_pressed() -> void:
var flowers: Array[GardenLayout.Flower] = gardens_layout.gardens[garden_ind].flowers
for flower: GardenLayout.Flower in flowers:
flower.color += 1
- if flower.color >= garden_textures_nb:
+ if flower.color >= GARDEN_TEXTURES_NB:
flower.color = 0
gardens_layout.gardens[garden_ind].flowers = flowers
@@ -222,7 +222,7 @@ func _on_change_flower_color_button_2_pressed() -> void:
for flower: GardenLayout.Flower in flowers:
flower.color -= 1
if flower.color < 0:
- flower.color = garden_textures_nb - 1
+ flower.color = GARDEN_TEXTURES_NB - 1
gardens_layout.gardens[garden_ind].flowers = flowers
garden.set_flowers(flowers, Garden.FlowerSizes.LARGE)
diff --git a/sources/gardens/minigame_layout.gd b/sources/gardens/minigame_layout.gd
index c6d1fe68..d00ef204 100644
--- a/sources/gardens/minigame_layout.gd
+++ b/sources/gardens/minigame_layout.gd
@@ -1,4 +1,6 @@
extends TextureRect
+class_name MinigameLayout
+
signal pressed()
@onready var icon: TextureRect = $TextureRect
diff --git a/sources/language_tool/gp_image_and_sound_descriptions.gd b/sources/language_tool/gp_image_and_sound_descriptions.gd
index d0e94aeb..298cf773 100644
--- a/sources/language_tool/gp_image_and_sound_descriptions.gd
+++ b/sources/language_tool/gp_image_and_sound_descriptions.gd
@@ -3,7 +3,7 @@ class_name GPImageAndSoundDescriptions
@onready var description_container: VBoxContainer = %DescriptionsContainer
-const description_line_scene: PackedScene = preload("res://sources/language_tool/image_and_sound_gp_description.tscn")
+const DESCRIPTION_LINE_SCENE: PackedScene = preload("res://sources/language_tool/image_and_sound_gp_description.tscn")
func _ready() -> void:
@@ -11,8 +11,8 @@ func _ready() -> void:
DirAccess.make_dir_recursive_absolute(Database.base_path + Database.language + Database.look_and_learn_sounds)
Database.db.query("SELECT * FROM GPs WHERE GPs.Exception=0")
- for res in Database.db.query_result:
- var description_line: ImageAndSoundGPDescription = description_line_scene.instantiate()
+ for res: Dictionary in Database.db.query_result:
+ var description_line: ImageAndSoundGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
description_container.add_child(description_line)
description_line.set_gp(res)
diff --git a/sources/language_tool/gp_video_descriptions.gd b/sources/language_tool/gp_video_descriptions.gd
index b401848f..00a9ca04 100644
--- a/sources/language_tool/gp_video_descriptions.gd
+++ b/sources/language_tool/gp_video_descriptions.gd
@@ -2,17 +2,17 @@ extends Control
@onready var description_container: VBoxContainer = %DescriptionsContainer
-const description_line_scene: PackedScene = preload("res://sources/language_tool/video_gp_description.tscn")
+const DESCRIPTION_LINE_SCENE: PackedScene = preload("res://sources/language_tool/video_gp_description.tscn")
func _ready() -> void:
- var _description_line: VideoGPDescription = description_line_scene.instantiate()
+ var _description_line: VideoGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
DirAccess.make_dir_recursive_absolute(Database.base_path + Database.language + Database.look_and_learn_videos)
_description_line.queue_free()
Database.db.query("Select * FROM GPs WHERE GPs.Exception=0")
for gp in Database.db.query_result:
- var description_line: VideoGPDescription = description_line_scene.instantiate()
+ var description_line: VideoGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
description_container.add_child(description_line)
description_line.set_gp(gp)
diff --git a/sources/language_tool/image_and_sound_gp_description.gd b/sources/language_tool/image_and_sound_gp_description.gd
index 828812ca..78565b26 100644
--- a/sources/language_tool/image_and_sound_gp_description.gd
+++ b/sources/language_tool/image_and_sound_gp_description.gd
@@ -91,7 +91,7 @@ func set_gp(value: Dictionary) -> void:
func _on_image_upload_button_pressed() -> void:
if not gp.is_empty():
file_dialog.filters = []
- file_dialog.add_filter("*" + Database.image_extension, "Images")
+ file_dialog.add_filter("*" + Database.IMAGE_EXTENSION, "Images")
for connection in file_dialog.file_selected.get_connections():
connection["signal"].disconnect(connection["callable"])
@@ -104,7 +104,7 @@ func _on_image_upload_button_pressed() -> void:
func _on_sound_upload_button_pressed() -> void:
if not gp.is_empty():
file_dialog.filters = []
- file_dialog.add_filter("*" + Database.sound_extension, "Sounds")
+ file_dialog.add_filter("*" + Database.SOUND_EXTENSION, "Sounds")
for connection in file_dialog.file_selected.get_connections():
connection["signal"].disconnect(connection["callable"])
diff --git a/sources/language_tool/in_game_sounds.gd b/sources/language_tool/in_game_sounds.gd
index eff8f62b..e7a862b7 100644
--- a/sources/language_tool/in_game_sounds.gd
+++ b/sources/language_tool/in_game_sounds.gd
@@ -6,8 +6,8 @@ func _ready() -> void:
DirAccess.make_dir_recursive_absolute(Database.base_path + Database.language + Database.language_sounds)
Database.db.query("SELECT * FROM GPs WHERE GPs.Exception=0")
- for res in Database.db.query_result:
- var description_line: ImageAndSoundGPDescription = description_line_scene.instantiate()
+ for res: Dictionary in Database.db.query_result:
+ var description_line: ImageAndSoundGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
description_line.get_sound_path = Database.get_gp_sound_path
description_line.get_image_path = get_empty_string
description_line.hide_image_part()
@@ -17,8 +17,8 @@ func _ready() -> void:
description_line.image_upload_button.hide()
Database.db.query("SELECT * FROM Syllables WHERE Syllables.Exception=0")
- for res in Database.db.query_result:
- var description_line: = description_line_scene.instantiate()
+ for res: Dictionary in Database.db.query_result:
+ var description_line: ImageAndSoundGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
description_line.get_sound_path = Database.get_syllable_sound_path
description_line.get_image_path = get_empty_string
description_line.hide_image_part()
@@ -29,8 +29,8 @@ func _ready() -> void:
description_line.image_upload_button.hide()
Database.db.query("SELECT * FROM Words WHERE Words.Exception=0")
- for res in Database.db.query_result:
- var description_line: = description_line_scene.instantiate()
+ for res: Dictionary in Database.db.query_result:
+ var description_line: ImageAndSoundGPDescription = DESCRIPTION_LINE_SCENE.instantiate()
description_line.get_sound_path = Database.get_word_sound_path
description_line.get_image_path = get_empty_string
description_line.hide_image_part()
diff --git a/sources/language_tool/kalulu_speech.gd b/sources/language_tool/kalulu_speech.gd
index 87f81516..1fa5b532 100644
--- a/sources/language_tool/kalulu_speech.gd
+++ b/sources/language_tool/kalulu_speech.gd
@@ -17,7 +17,7 @@ extends PanelContainer
func _ready() -> void:
file_dialog.access = FileDialog.ACCESS_FILESYSTEM
file_dialog.filters = []
- file_dialog.add_filter("*" + Database.sound_extension, "Sounds")
+ file_dialog.add_filter("*" + Database.SOUND_EXTENSION, "Sounds")
_set_speech_name(speech_name)
_set_speech_description(speech_description)
diff --git a/sources/language_tool/lesson_exercises.gd b/sources/language_tool/lesson_exercises.gd
index 8e0a15cc..be94e4e1 100644
--- a/sources/language_tool/lesson_exercises.gd
+++ b/sources/language_tool/lesson_exercises.gd
@@ -1,15 +1,6 @@
extends Control
-const LessonExerciceContainer: = preload("res://sources/language_tool/lesson_exercises_container.gd")
-const lesson_exercice_container_scene: = preload("res://sources/language_tool/lesson_exercises_container.tscn")
-
-const exercise_types: Array[String] = [
- "Syllable",
- "Pairing",
- "Words",
- "Sentences",
- "Boss"
-]
+const LESSON_EXERCICE_CONTAINER_SCENE: = preload("res://sources/language_tool/lesson_exercises_container.tscn")
@onready var lessons_container: VBoxContainer = %LessonsContainer
@@ -51,7 +42,7 @@ func _ready() -> void:
var sentences_by_lesson: = Database.get_sentences_by_lessons()
Database.db.query("Select * FROM Lessons")
for e in Database.db.query_result:
- var container: LessonExerciceContainer = lesson_exercice_container_scene.instantiate()
+ var container: LessonExerciceContainer = LESSON_EXERCICE_CONTAINER_SCENE.instantiate()
lessons_container.add_child(container)
container.sentences_by_lesson = sentences_by_lesson
container.lesson_number = e.LessonNb
diff --git a/sources/language_tool/lesson_exercises_container.gd b/sources/language_tool/lesson_exercises_container.gd
index b6876ba2..fe7cfe27 100644
--- a/sources/language_tool/lesson_exercises_container.gd
+++ b/sources/language_tool/lesson_exercises_container.gd
@@ -1,4 +1,5 @@
extends PanelContainer
+class_name LessonExerciceContainer
@export var lesson_number: = -1:
set = _set_lesson_number
diff --git a/sources/language_tool/prof_tool_menu.gd b/sources/language_tool/prof_tool_menu.gd
index adb64205..858d8584 100644
--- a/sources/language_tool/prof_tool_menu.gd
+++ b/sources/language_tool/prof_tool_menu.gd
@@ -1,7 +1,7 @@
extends Control
-const base_path: String = "user://language_resources/"
-const save_file_path: String = "user://prof_tool_save.tres"
+const BASE_PATH: String = "user://language_resources/"
+const SAVE_FILE_PATH: String = "user://prof_tool_save.tres"
var save_file: ProfToolSave
@onready var language_select_button: OptionButton = %LanguageSelectButton
@@ -18,11 +18,11 @@ func _ready() -> void:
MusicManager.stop()
Database.load_additional_word_list()
_update_add_word_list_button()
- if not ResourceLoader.exists(save_file_path):
+ if not ResourceLoader.exists(SAVE_FILE_PATH):
save_file = ProfToolSave.new()
- save_file.resource_path = save_file_path
- ResourceSaver.save(save_file, save_file_path)
- save_file = load(save_file_path)
+ save_file.resource_path = SAVE_FILE_PATH
+ ResourceSaver.save(save_file, SAVE_FILE_PATH)
+ save_file = load(SAVE_FILE_PATH)
_display_available_languages()
tab_container.current_tab = Globals.main_menu_selected_tab
tab_container.tab_changed.connect(_on_tab_container_tab_changed)
@@ -97,11 +97,11 @@ func _on_exercises_button_pressed() -> void:
func _on_export_filename_selected(filename: String) -> void:
- var version_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("version.txt"), FileAccess.WRITE)
+ var version_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("version.txt"), FileAccess.WRITE)
version_file.store_line(Time.get_datetime_string_from_system(true, false))
version_file.close()
- var summary_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("summary.txt"), FileAccess.WRITE)
+ var summary_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("summary.txt"), FileAccess.WRITE)
var sentences_by_lesson: Dictionary = Database.get_sentences_by_lessons()
for index: int in Database.get_lessons_count():
@@ -132,7 +132,7 @@ func _on_export_filename_selected(filename: String) -> void:
_create_sentence_csv()
var folder_zipper: FolderZipper = FolderZipper.new()
- folder_zipper.compress(base_path.path_join(Database.language), filename)
+ folder_zipper.compress(BASE_PATH.path_join(Database.language), filename)
#region Database integrity check
var integrity_checking: bool = false
@@ -327,13 +327,13 @@ func file_exists_case_sensitive(path: String) -> Dictionary:
func _get_available_languages() -> Array[String]:
var available_languages: Array[String] = []
- var dir: DirAccess = DirAccess.open(base_path)
+ var dir: DirAccess = DirAccess.open(BASE_PATH)
if dir:
dir.list_dir_begin()
var file_name: String = dir.get_next()
while file_name != "":
if dir.current_is_dir():
- if FileAccess.file_exists(base_path.path_join(file_name).path_join("language.db")):
+ if FileAccess.file_exists(BASE_PATH.path_join(file_name).path_join("language.db")):
available_languages.append(file_name)
file_name = dir.get_next()
return available_languages
@@ -346,7 +346,7 @@ func _on_language_select_button_item_selected(index: int) -> void:
return
save_file.selected_language = language_select_button.get_item_text(index)
- ResourceSaver.save(save_file, save_file_path)
+ ResourceSaver.save(save_file, SAVE_FILE_PATH)
Database.language = save_file.selected_language
@@ -354,14 +354,14 @@ func _on_validate_language_pressed() -> void:
if not line_edit.text:
return
- DirAccess.make_dir_recursive_absolute(base_path.path_join(line_edit.text))
+ DirAccess.make_dir_recursive_absolute(BASE_PATH.path_join(line_edit.text))
var file: FileAccess = FileAccess.open("res://model_database.db", FileAccess.READ)
- var dest: FileAccess = FileAccess.open(base_path.path_join(line_edit.text).path_join("language.db"), FileAccess.WRITE)
+ var dest: FileAccess = FileAccess.open(BASE_PATH.path_join(line_edit.text).path_join("language.db"), FileAccess.WRITE)
dest.store_buffer(file.get_buffer(file.get_length()))
file.close()
dest.close()
save_file.selected_language = line_edit.text
- ResourceSaver.save(save_file, save_file_path)
+ ResourceSaver.save(save_file, SAVE_FILE_PATH)
get_tree().reload_current_scene()
@@ -437,12 +437,12 @@ func _on_export_button_pressed() -> void:
func _language_data_selected(file_path: String) -> void:
if FileAccess.file_exists(file_path):
var folder_unzipper: FolderUnzipper = FolderUnzipper.new()
- folder_unzipper.extract(file_path, base_path, false)
+ folder_unzipper.extract(file_path, BASE_PATH, false)
get_tree().reload_current_scene()
func _create_GP_csv() -> void:
- var gp_list_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("gp_list.csv"), FileAccess.WRITE)
+ var gp_list_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("gp_list.csv"), FileAccess.WRITE)
gp_list_file.store_csv_line(["Grapheme", "Phoneme", "Type", "Exception"])
var query: String = "Select * FROM GPs ORDER BY GPs.Grapheme"
Database.db.query(query)
@@ -453,7 +453,7 @@ func _create_GP_csv() -> void:
func _create_words_csv() -> void:
- var gp_list_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("words_list.csv"), FileAccess.WRITE)
+ var gp_list_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("words_list.csv"), FileAccess.WRITE)
gp_list_file.store_csv_line(["ORTHO", "GPMATCH", "LESSON", "READING", "WRITING"])
var query: String = "SELECT Words.ID as WordId, Word, group_concat(Grapheme, ' ') as Graphemes, group_concat(Phoneme, ' ') as Phonemes, group_concat(GPs.ID, ' ') as GPIDs, Words.Exception, Reading, Writing
FROM Words
@@ -482,7 +482,7 @@ func _create_words_csv() -> void:
func _create_syllable_csv() -> void:
- var gp_list_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("syllables_list.csv"), FileAccess.WRITE)
+ var gp_list_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("syllables_list.csv"), FileAccess.WRITE)
gp_list_file.store_csv_line(["ORTHO", "GPMATCH", "LESSON", "READING", "WRITING"])
var query: String = "SELECT Syllables.ID as SyllableId, Syllable, group_concat(Grapheme, ' ') as Graphemes, group_concat(Phoneme, ' ') as Phonemes, group_concat(GPs.ID, ' ') as GPIDs, Syllables.Exception, Reading, Writing
FROM Syllables
@@ -511,7 +511,7 @@ func _create_syllable_csv() -> void:
func _create_sentence_csv() -> void:
- var gp_list_file: FileAccess = FileAccess.open(base_path.path_join(Database.language).path_join("sentences_list.csv"), FileAccess.WRITE)
+ var gp_list_file: FileAccess = FileAccess.open(BASE_PATH.path_join(Database.language).path_join("sentences_list.csv"), FileAccess.WRITE)
gp_list_file.store_csv_line(["Sentence", "Lesson"])
var query: String = "SELECT Sentences.ID as SentenceId, Sentence, group_concat(Word, ' ') as Words, group_concat(Word, ' ') as Words, group_concat(Words.ID, ' ') as WordIDs, Sentences.Exception
FROM Sentences
@@ -533,7 +533,7 @@ func _create_sentence_csv() -> void:
func _on_open_folder_button_pressed() -> void:
- OS.shell_show_in_file_manager(ProjectSettings.globalize_path(base_path))
+ OS.shell_show_in_file_manager(ProjectSettings.globalize_path(BASE_PATH))
func _on_tab_container_tab_changed(tab: int) -> void:
@@ -542,7 +542,7 @@ func _on_tab_container_tab_changed(tab: int) -> void:
#region Book Generation
func create_book() -> void:
- var lang_path: String = base_path.path_join(Database.language)
+ var lang_path: String = BASE_PATH.path_join(Database.language)
var file_names: Dictionary[String, String] = {
"word": "words_list.csv",
"syllable": "syllables_list.csv",
diff --git a/sources/language_tool/sentence_list_element.gd b/sources/language_tool/sentence_list_element.gd
index 3f8d11c8..61abf697 100644
--- a/sources/language_tool/sentence_list_element.gd
+++ b/sources/language_tool/sentence_list_element.gd
@@ -2,7 +2,7 @@ extends "res://sources/language_tool/word_list_element.gd"
signal not_found(text: String)
-const word_list_element_scene: = preload("res://sources/language_tool/word_list_element.tscn")
+const WORD_LIST_ELEMENT_SCENE: = preload("res://sources/language_tool/word_list_element.tscn")
var words_not_founds: PackedStringArray
@@ -28,7 +28,7 @@ func _add_from_additional_word_list(new_text: String) -> int:
var new_text_clean: = new_text.to_lower()
for chara in punc:
new_text_clean = new_text_clean.replace(chara, " ")
- var word_list_element: WordListElement = word_list_element_scene.instantiate()
+ var word_list_element: WordListElement = WORD_LIST_ELEMENT_SCENE.instantiate()
var all_found: = true
words_not_founds.clear()
var word_ids: Array[int] = []
diff --git a/sources/language_tool/tracing_builder.gd b/sources/language_tool/tracing_builder.gd
index 121e31df..fba5c4bc 100644
--- a/sources/language_tool/tracing_builder.gd
+++ b/sources/language_tool/tracing_builder.gd
@@ -8,7 +8,7 @@ extends Control
@onready var save_ok: TextureRect = %SaveOk
@onready var copy_from: MenuButton = %CopyFrom
-const extension: String = ".csv"
+const EXTENSION: String = ".csv"
var letters: Array[String] = []
var current_letter: int = -1
@@ -92,7 +92,7 @@ func upper_path(letter: String) -> String:
func real_path(path: String) -> String:
- return Database.base_path.path_join(Database.language).path_join(Database.tracing_data_folder).path_join(path) + extension
+ return Database.base_path.path_join(Database.language).path_join(Database.tracing_data_folder).path_join(path) + EXTENSION
func _on_save_button_pressed() -> void:
diff --git a/sources/language_tool/video_gp_description.gd b/sources/language_tool/video_gp_description.gd
index 0a43c286..5b40a897 100644
--- a/sources/language_tool/video_gp_description.gd
+++ b/sources/language_tool/video_gp_description.gd
@@ -39,7 +39,7 @@ func set_gp(p_gp: Dictionary) -> void:
func _on_video_upload_button_pressed() -> void:
if not gp.is_empty():
file_dialog.filters = []
- file_dialog.add_filter("*" + Database.video_extension, "Videos")
+ file_dialog.add_filter("*" + Database.VIDEO_EXTENSION, "Videos")
for connection in file_dialog.file_selected.get_connections():
connection["signal"].disconnect(connection["callable"])
diff --git a/sources/language_tool/word_list_element.gd b/sources/language_tool/word_list_element.gd
index d9030c3c..ed69d26c 100644
--- a/sources/language_tool/word_list_element.gd
+++ b/sources/language_tool/word_list_element.gd
@@ -6,8 +6,8 @@ signal new_GP_asked(i: int)
signal validated()
signal GPs_updated()
-const gp_list_button_scene: PackedScene = preload("res://sources/language_tool/gp_list_button.tscn")
-const plus_button_scene: PackedScene = preload("res://sources/language_tool/plus_button.tscn")
+const GP_LIST_BUTTON_SCENE: PackedScene = preload("res://sources/language_tool/gp_list_button.tscn")
+const PLUS_BUTTON_SCENE: PackedScene = preload("res://sources/language_tool/plus_button.tscn")
@export var table: String = "Words"
@export var table_graph_column: String = "Word"
@@ -101,14 +101,14 @@ func set_graphemes_edit(p_gp_ids: Array[int]) -> void:
func add_gp_list_button(gp_id: int, ind_gp_id: int) -> void:
- var gp_list_button: GPListButton = gp_list_button_scene.instantiate()
+ var gp_list_button: GPListButton = GP_LIST_BUTTON_SCENE.instantiate()
gp_list_button.set_gp_list(sub_elements_list)
graphemes_edit_container.add_child(gp_list_button)
graphemes_edit_container.move_child(gp_list_button, 2 * ind_gp_id)
gp_list_button.select_id(gp_id)
gp_list_button.gp_selected.connect(_on_gp_list_button_selected.bind(gp_list_button))
gp_list_button.new_selected.connect(_on_gp_list_button_new_selected.bind(gp_list_button))
- var plus_button: PlusButton = plus_button_scene.instantiate()
+ var plus_button: PlusButton = PLUS_BUTTON_SCENE.instantiate()
plus_button.size = Vector2(50, 50)
graphemes_edit_container.add_child(plus_button)
graphemes_edit_container.move_child(plus_button, 2 * ind_gp_id + 1)
diff --git a/sources/look_and_learn/look_and_learn.gd b/sources/look_and_learn/look_and_learn.gd
index 5a51afde..e479b7d3 100644
--- a/sources/look_and_learn/look_and_learn.gd
+++ b/sources/look_and_learn/look_and_learn.gd
@@ -1,7 +1,5 @@
extends Control
-
-const Gardens: = preload("res://sources/gardens/gardens.gd")
-const TracingManager: = preload("res://sources/look_and_learn/tracing_manager.gd")
+class_name LookAndLearn
@export var lesson_nb: int = 1
@export var current_button_pressed: int = 0
diff --git a/sources/look_and_learn/tracing_manager.gd b/sources/look_and_learn/tracing_manager.gd
index 5ecc860b..5e05966b 100644
--- a/sources/look_and_learn/tracing_manager.gd
+++ b/sources/look_and_learn/tracing_manager.gd
@@ -1,16 +1,16 @@
extends Control
+class_name TracingManager
signal finished()
-const letter_segment_class: PackedScene = preload("res://sources/look_and_learn/letter_segment.tscn")
+const LETTER_SEGMENT_CLASS: PackedScene = preload("res://sources/look_and_learn/letter_segment.tscn")
@export var label_settings: LabelSettings
@onready var lower_labels: HBoxContainer = %LowerLabels
@onready var upper_labels: HBoxContainer = %UpperLabels
-const tracing_data_folder: String = "tracing_data/"
-const extension: String = ".csv"
+const EXTENSION: String = ".csv"
func _process(_delta: float) -> void:
place_segments(upper_labels.get_children())
@@ -65,7 +65,7 @@ func setup_tracing(letter: String, letter_tracings: Array, parent: Control, lowe
parent.add_child(label)
for points: Array in letter_tracings:
- var segment: LetterSegment = letter_segment_class.instantiate()
+ var segment: LetterSegment = LETTER_SEGMENT_CLASS.instantiate()
label.add_child(segment)
segment.setup(points)
@@ -108,7 +108,7 @@ func _upper_path(letter: String) -> String:
func _real_path(path: String) -> String:
- return Database.base_path.path_join(Database.language).path_join(Database.tracing_data_folder).path_join(path) + extension
+ return Database.base_path.path_join(Database.language).path_join(Database.tracing_data_folder).path_join(path) + EXTENSION
diff --git a/sources/menus/brain/brain.gd b/sources/menus/brain/brain.gd
index dcc1ad54..0977e713 100644
--- a/sources/menus/brain/brain.gd
+++ b/sources/menus/brain/brain.gd
@@ -1,8 +1,7 @@
@tool
extends Control
-const Gardens: = preload("res://sources/gardens/gardens.gd")
-const gardens_scene: PackedScene = preload("res://sources/gardens/gardens.tscn")
+const GARDENS_SCENE: PackedScene = preload("res://sources/gardens/gardens.tscn")
const Kalulu: = preload("res://sources/minigames/base/kalulu.gd")
@export var locked_color: Color
@@ -126,7 +125,7 @@ func _on_garden_button_pressed(button_number: int) -> void:
audio_stream_player.play()
await OpeningCurtain.close()
- var gardens: Gardens = gardens_scene.instantiate()
+ var gardens: Gardens = GARDENS_SCENE.instantiate()
gardens.starting_garden = button_number
get_tree().root.add_child(gardens)
get_tree().current_scene = gardens
diff --git a/sources/minigames/base/base_minigame.gd b/sources/minigames/base/base_minigame.gd
index 4a18cf00..cde57f03 100644
--- a/sources/minigames/base/base_minigame.gd
+++ b/sources/minigames/base/base_minigame.gd
@@ -2,9 +2,6 @@
extends Control
class_name Minigame
-const Gardens: = preload("res://sources/gardens/gardens.gd")
-const Fireworks: = preload("res://sources/utils/fx/fireworks.gd")
-
enum Type {
jellyfish,
crabs,
diff --git a/sources/minigames/caterpillar/berry.gd b/sources/minigames/caterpillar/berry.gd
index d3da6a35..573ef7fd 100644
--- a/sources/minigames/caterpillar/berry.gd
+++ b/sources/minigames/caterpillar/berry.gd
@@ -1,4 +1,5 @@
extends Area2D
+class_name Berry
signal pressed(gp: Dictionary)
diff --git a/sources/minigames/caterpillar/branch.gd b/sources/minigames/caterpillar/branch.gd
index ad7e39ed..105cd9c8 100644
--- a/sources/minigames/caterpillar/branch.gd
+++ b/sources/minigames/caterpillar/branch.gd
@@ -1,15 +1,12 @@
@tool
extends Node2D
+class_name Branch
signal branch_pressed()
signal berry_pressed(gp: Dictionary)
-# Namespace
-const Leaf: = preload("res://sources/minigames/caterpillar/leaf.gd")
-const Berry: = preload("res://sources/minigames/caterpillar/berry.gd")
-
-const leaf_scene: PackedScene = preload("res://sources/minigames/caterpillar/leaf.tscn")
-const berry_scene: PackedScene = preload("res://sources/minigames/caterpillar/berry.tscn")
+const LEAF_SCENE: PackedScene = preload("res://sources/minigames/caterpillar/leaf.tscn")
+const BERRY_SCENE: PackedScene = preload("res://sources/minigames/caterpillar/berry.tscn")
@onready var leaves: Node2D = $Leaves
@onready var berries: Node2D = $Berries
@@ -32,7 +29,7 @@ func _ready() -> void:
# Adds some leaves from start
var pos: float = -leaves.position.x + velocity * randf_range(0,2)
while pos < 0:
- var leaf: Leaf = leaf_scene.instantiate()
+ var leaf: Leaf = LEAF_SCENE.instantiate()
leaves.add_child(leaf)
leaf.position.x = pos
pos = pos + velocity * randf_range(2, 5)
@@ -54,7 +51,7 @@ func _process(delta: float) -> void:
func spawn_berry(gp: Dictionary, is_distractor: bool) -> void:
- var berry : Berry = berry_scene.instantiate()
+ var berry : Berry = BERRY_SCENE.instantiate()
berries.add_child(berry)
berry.gp = gp
berry.is_distractor = is_distractor
@@ -76,7 +73,7 @@ func _on_button_pressed() -> void:
func _on_leaf_timer_timeout() -> void:
- var leaf: Leaf = leaf_scene.instantiate()
+ var leaf: Leaf = LEAF_SCENE.instantiate()
leaves.add_child(leaf)
leaf_timer.wait_time = randf_range(2.0, 5.0)
diff --git a/sources/minigames/caterpillar/caterpillar.gd b/sources/minigames/caterpillar/caterpillar.gd
index c15d263e..9d26ea70 100644
--- a/sources/minigames/caterpillar/caterpillar.gd
+++ b/sources/minigames/caterpillar/caterpillar.gd
@@ -1,10 +1,6 @@
@tool
extends Node2D
-
-# Namespace
-const CaterpillarHead: = preload("res://sources/minigames/caterpillar/caterpillar_head.gd")
-const CaterpillarBody: = preload("res://sources/minigames/caterpillar/caterpillar_body.gd")
-const Berry: = preload("res://sources/minigames/caterpillar/berry.gd")
+class_name Caterpillar
signal berry_eaten(berry: Berry)
diff --git a/sources/minigames/caterpillar/caterpillar_body.gd b/sources/minigames/caterpillar/caterpillar_body.gd
index 5d666854..5743aa20 100644
--- a/sources/minigames/caterpillar/caterpillar_body.gd
+++ b/sources/minigames/caterpillar/caterpillar_body.gd
@@ -1,5 +1,6 @@
@tool
extends Node2D
+class_name CaterpillarBody
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var label: Label = $Label
diff --git a/sources/minigames/caterpillar/caterpillar_head.gd b/sources/minigames/caterpillar/caterpillar_head.gd
index 8232f17b..b76f2da2 100644
--- a/sources/minigames/caterpillar/caterpillar_head.gd
+++ b/sources/minigames/caterpillar/caterpillar_head.gd
@@ -1,5 +1,6 @@
@tool
extends Node2D
+class_name CaterpillarHead
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var audio_stream_player: CaterpillarAudioStreamPlayer = $CaterpillarAudioStreamPlayer
diff --git a/sources/minigames/caterpillar/caterpillar_minigame.gd b/sources/minigames/caterpillar/caterpillar_minigame.gd
index 421a51f2..eb30ffc5 100644
--- a/sources/minigames/caterpillar/caterpillar_minigame.gd
+++ b/sources/minigames/caterpillar/caterpillar_minigame.gd
@@ -1,12 +1,7 @@
@tool
extends WordsMinigame
-# Namespace
-const Caterpillar: = preload("res://sources/minigames/caterpillar/caterpillar.gd")
-const Branch: = preload("res://sources/minigames/caterpillar/branch.gd")
-const Berry: = preload("res://sources/minigames/caterpillar/berry.gd")
-
-const branch_scene: PackedScene = preload("res://sources/minigames/caterpillar/branch.tscn")
+const BRANCH_SCENE: PackedScene = preload("res://sources/minigames/caterpillar/branch.tscn")
class DifficultySettings:
@@ -50,7 +45,7 @@ func _setup_minigame() -> void:
# Spawn the right amount of branches
var branch_size: float = branches_zone.size.y / (settings.branches + 1)
for index: int in settings.branches:
- var branch: Branch = branch_scene.instantiate()
+ var branch: Branch = BRANCH_SCENE.instantiate()
branch.velocity = settings.velocity
branches_zone.add_child(branch)
branch.set_position(Vector2(0, branch_size * (index+1)))
diff --git a/sources/minigames/caterpillar/leaf.gd b/sources/minigames/caterpillar/leaf.gd
index f56c7bd8..f9eee100 100644
--- a/sources/minigames/caterpillar/leaf.gd
+++ b/sources/minigames/caterpillar/leaf.gd
@@ -1,4 +1,5 @@
extends Node2D
+class_name Leaf
func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
queue_free()
diff --git a/sources/minigames/frog/frog_material.tres b/sources/minigames/frog/frog_material.tres
index 7fe6e190..6e9377e5 100644
--- a/sources/minigames/frog/frog_material.tres
+++ b/sources/minigames/frog/frog_material.tres
@@ -1,6 +1,6 @@
[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://cj241oskmxqgv"]
-[ext_resource type="Shader" uid="uid://dkmay7kcecvde" path="res://sources/minigames/frog/flood.gdshader" id="1_obtft"]
+[ext_resource type="Shader" uid="uid://djvhi4vg4ko1c" path="res://sources/minigames/frog/flood.gdshader" id="1_obtft"]
[sub_resource type="Gradient" id="Gradient_s16dt"]
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
diff --git a/sources/minigames/frog/lilypad_material.tres b/sources/minigames/frog/lilypad_material.tres
index a658c9a4..2732d41b 100644
--- a/sources/minigames/frog/lilypad_material.tres
+++ b/sources/minigames/frog/lilypad_material.tres
@@ -1,6 +1,6 @@
[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://3n8kdc1u25om"]
-[ext_resource type="Shader" uid="uid://dkmay7kcecvde" path="res://sources/minigames/frog/flood.gdshader" id="1_yfhcb"]
+[ext_resource type="Shader" uid="uid://djvhi4vg4ko1c" path="res://sources/minigames/frog/flood.gdshader" id="1_yfhcb"]
[sub_resource type="Gradient" id="Gradient_q5on4"]
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
diff --git a/sources/utils/autoloads/database.gd b/sources/utils/autoloads/database.gd
index ad5ed07a..4fe05266 100644
--- a/sources/utils/autoloads/database.gd
+++ b/sources/utils/autoloads/database.gd
@@ -15,11 +15,10 @@ const look_and_learn_sounds: String = "/look_and_learn/sounds/"
const look_and_learn_videos: String = "/look_and_learn/video/"
const language_sounds: String = "/language_sounds/"
const kalulu_folder: String = "/kalulu/"
-const tracing_data_folder: String = "tracing_data/"
const additional_word_list_path: String = "word_list.csv"
-const video_extension: String = ".ogv"
-const image_extension: String = ".png"
-const sound_extension: String = ".mp3"
+const VIDEO_EXTENSION: String = ".ogv"
+const IMAGE_EXTENSION: String = ".png"
+const SOUND_EXTENSION: String = ".mp3"
var language: String:
set(value):
@@ -539,31 +538,31 @@ func get_gp_name(gp: Dictionary) -> String:
func get_gp_look_and_learn_image_path(gp: Dictionary) -> String:
- return base_path + language + look_and_learn_images + get_gp_name(gp) + image_extension
+ return base_path + language + look_and_learn_images + get_gp_name(gp) + IMAGE_EXTENSION
func get_gp_look_and_learn_sound_path(gp: Dictionary) -> String:
- return base_path + language + look_and_learn_sounds + get_gp_name(gp) + sound_extension
+ return base_path + language + look_and_learn_sounds + get_gp_name(gp) + SOUND_EXTENSION
func get_gp_look_and_learn_video_path(gp: Dictionary) -> String:
- return base_path + language + look_and_learn_videos + get_gp_name(gp) + video_extension
+ return base_path + language + look_and_learn_videos + get_gp_name(gp) + VIDEO_EXTENSION
func get_gp_sound_path(gp: Dictionary) -> String:
- return base_path + language + language_sounds + Database.get_gp_name(gp) + sound_extension
+ return base_path + language + language_sounds + Database.get_gp_name(gp) + SOUND_EXTENSION
func get_syllable_sound_path(syllable: Dictionary) -> String:
- return base_path + language + language_sounds + syllable.Grapheme + sound_extension
+ return base_path + language + language_sounds + syllable.Grapheme + SOUND_EXTENSION
func get_word_sound_path(word: Dictionary) -> String:
- return base_path + language + language_sounds + word.Word + sound_extension
+ return base_path + language + language_sounds + word.Word + SOUND_EXTENSION
func get_kalulu_speech_path(speech_category: String, speech_name: String) -> String:
- return base_path + language + language_sounds + kalulu_folder + speech_category + "_" + speech_name + sound_extension
+ return base_path + language + language_sounds + kalulu_folder + speech_category + "_" + speech_name + SOUND_EXTENSION
func load_external_sound(path: String) -> AudioStreamMP3:
diff --git a/sources/utils/fx/fireworks.gd b/sources/utils/fx/fireworks.gd
index 28e65ba8..2666ce32 100644
--- a/sources/utils/fx/fireworks.gd
+++ b/sources/utils/fx/fireworks.gd
@@ -1,9 +1,9 @@
extends Node
+class_name Fireworks
signal finished()
-const Rocket: = preload("res://sources/utils/fx/rocket.gd")
-const rocket_scene: PackedScene = preload("res://sources/utils/fx/rocket.tscn")
+const ROKCET_SCENE: PackedScene = preload("res://sources/utils/fx/rocket.tscn")
@export var number_of_rockets: int = 25
@@ -30,7 +30,7 @@ func _on_FireDelayTimer_timeout() -> void:
var start_node: Node2D = starts[randi() % starts.size()]
var end_node: Node2D = ends[randi() % ends.size()]
- var rocket: Rocket = rocket_scene.instantiate()
+ var rocket: Rocket = ROKCET_SCENE.instantiate()
rockets.add_child(rocket)
rocket.start(start_node.global_position, end_node.global_position + Vector2(randf_range(-25.0, 25.0), randf_range(-25.0, 25.0)))
diff --git a/sources/utils/fx/rocket.gd b/sources/utils/fx/rocket.gd
index accb943d..92ce0dce 100644
--- a/sources/utils/fx/rocket.gd
+++ b/sources/utils/fx/rocket.gd
@@ -1,4 +1,5 @@
extends Path2D
+class_name Rocket
@export var spread_angle: float = PI/8.0
@export var segments: int = 5
--
2.33.0.windows.1