Updates the export configuration for the prof tool. Parakeets are clickable earlier during the right answer animation. The animation of repeat button has been disabled. Tracing will use uppercase first then lowercase. Look And Learn now show the right title at the top.

This commit is contained in:
Dylan Sarrazyn
2025-01-27 14:37:27 +01:00
parent d8a66d4fb7
commit c449b469af
19 changed files with 65 additions and 53 deletions
+1 -1
View File
@@ -49,7 +49,7 @@ advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="language_resources/model_database.db"
include_filter="model_database.db"
exclude_filter=""
export_path="../Export/prof_tool.dmg"
encryption_include_filters=""
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@ config_version=5
config/name="Kalulu"
config/version="2.0.8"
run/main_scene="res://sources/language_tool/prof_tool_menu.tscn"
run/main_scene="res://sources/menus/splash_screen/splash_screen.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 1)
config/icon="res://assets/kalulu_icon.png"
File diff suppressed because one or more lines are too long
+1
View File
@@ -15,6 +15,7 @@ var save_file: ProfToolSave
func _ready() -> void:
MusicManager.stop()
Database.load_additional_word_list()
_update_add_word_list_button()
if not ResourceLoader.exists(save_file_path):
save_file = ProfToolSave.new()
+3 -3
View File
@@ -199,13 +199,13 @@ func _on_word_gui_input(event: InputEvent) -> void:
func _on_list_title_import_path_selected(path: String, match_to_file: bool) -> void:
var file: = FileAccess.open(path, FileAccess.READ)
var line: = file.get_csv_line()
if line.size() < 1 or line[0] != "ORTHO":
error_label.text = "Column names should be ORTHO"
if line.size() < 1 or line[0] != "ORTHO" and line[1] != "GPMATCH":
error_label.text = "Column names should be ORTHO, GPMATCH"
return
var all_data = {}
while not file.eof_reached():
line = file.get_csv_line()
if line.size() < 1:
if line.size() < 2:
continue
_e._try_to_complete_from_word(line[0])
all_data[line[0]] = true
+1 -1
View File
@@ -294,12 +294,12 @@ func _add_from_additional_word_list(new_text: String) -> int:
func _try_to_complete_from_word(new_text: String) -> int:
var id: = _already_in_database(new_text)
if id >= 0:
print("Already in DB " + new_text)
return id
id = _add_from_additional_word_list(new_text)
if id >= 0:
return id
return -1
+8 -5
View File
@@ -68,17 +68,20 @@ func setup() -> void:
sounds.append(gp_sound)
used = true
if used:
gp_display.append(gp)
var tracing_data: = tracing_manager._get_letter_tracings(gp.Grapheme)
if tracing_data.upper:
gp_display.append(gp.Grapheme.to_upper())
if tracing_data.lower:
gp_display.append(gp.Grapheme.to_lower())
if gp_display.is_empty():
gp_display.append(gp_list[0])
gp_display.append(gp_list[0].Grapheme)
grapheme_label.text = ""
for gp: Dictionary in gp_display:
for gp: String in gp_display:
if grapheme_label.text:
grapheme_label.text += " - "
grapheme_label.text += "%s" % gp.Grapheme
grapheme_label.text += "%s" % gp
func play_videos() -> void:
@@ -788,7 +788,6 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_12st1")
lesson_nb = 24
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
@@ -852,7 +851,6 @@ theme_override_font_sizes/font_size = 175
text = "o"
horizontal_alignment = 1
vertical_alignment = 1
uppercase = true
[node name="LeftContainer" type="VBoxContainer" parent="."]
layout_mode = 1
+14 -10
View File
@@ -13,8 +13,8 @@ const tracing_data_folder: = "tracing_data/"
const extension: = ".csv"
func _process(_delta: float) -> void:
place_segments(lower_labels.get_children())
place_segments(upper_labels.get_children())
place_segments(lower_labels.get_children())
func place_segments(labels: Array) -> void:
@@ -24,12 +24,12 @@ func place_segments(labels: Array) -> void:
func reset() -> void:
for child in lower_labels.get_children():
child.queue_free()
for child in upper_labels.get_children():
child.queue_free()
for child in lower_labels.get_children():
child.queue_free()
lower_labels.visible = true
lower_labels.visible = false
upper_labels.visible = false
await get_tree().process_frame
@@ -41,11 +41,11 @@ func setup(grapheme: String) -> void:
for letter in grapheme:
var tracings: = _get_letter_tracings(letter)
if tracings.lower:
setup_tracing(letter, tracings["lower"] as Array, lower_labels, true)
if tracings.upper:
setup_tracing(letter, tracings["upper"] as Array, upper_labels, false)
if tracings.lower:
setup_tracing(letter, tracings["lower"] as Array, lower_labels, true)
func setup_tracing(letter: String, letter_tracings: Array, parent: Control, lower: bool) -> void:
@@ -116,9 +116,6 @@ func _real_path(path: String) -> String:
func start() -> void:
await demo_labels(lower_labels)
await start_labels(lower_labels)
if upper_labels.get_child_count(false) > 0:
lower_labels.visible = false
upper_labels.visible = true
@@ -126,6 +123,13 @@ func start() -> void:
await demo_labels(upper_labels)
await start_labels(upper_labels)
if lower_labels.get_child_count(false) > 0:
lower_labels.visible = true
upper_labels.visible = false
await demo_labels(lower_labels)
await start_labels(lower_labels)
finished.emit()
+2 -2
View File
@@ -362,12 +362,12 @@ func _on_minigame_ui_stimulus_button_pressed() -> void:
_pause_game()
minigame_ui.lock()
await minigame_ui.repeat_stimulus_animation(true)
#await minigame_ui.repeat_stimulus_animation(true)
@warning_ignore("redundant_await")
await _play_stimulus()
await minigame_ui.repeat_stimulus_animation(false)
#await minigame_ui.repeat_stimulus_animation(false)
minigame_ui.unlock()
_pause_game()
+4 -4
View File
@@ -158,10 +158,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -1179.0
offset_top = -460.0
offset_right = -929.0
offset_bottom = -74.0
offset_left = -466.0
offset_top = -575.0
offset_right = -216.0
offset_bottom = -189.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
@@ -85,6 +85,7 @@ func _find_stimuli_and_distractions() -> void:
for GP: Dictionary in stimulus.GPs:
grapheme_distractions.append(Database.get_distractors_for_grapheme(GP.ID as int, lesson_nb))
distractions.append(grapheme_distractions)
# Launch the minigame
+10 -4
View File
@@ -8,7 +8,14 @@
[ext_resource type="PackedScene" uid="uid://bgio7muqck2bu" path="res://sources/utils/auto_size_label.tscn" id="4_26xiq"]
[ext_resource type="SpriteFrames" uid="uid://dquynn3nx52o" path="res://sources/minigames/jellyfish/red_jellyfish_animations.tres" id="5_js27p"]
[ext_resource type="PackedScene" uid="uid://dlmbxcgiv8tpr" path="res://sources/utils/fx/wrong.tscn" id="6_w1tlu"]
[ext_resource type="LabelSettings" uid="uid://bguqnhiblwick" path="res://resources/themes/minigames_label_settings.tres" id="8_x6vke"]
[sub_resource type="LabelSettings" id="LabelSettings_qqnw2"]
font_size = 140
outline_size = 8
outline_color = Color(0, 0, 0, 1)
shadow_size = 4
shadow_color = Color(0, 0, 0, 0.639216)
shadow_offset = Vector2(3, 3)
[node name="Jellyfish" type="Control"]
custom_minimum_size = Vector2(400, 400)
@@ -16,7 +23,7 @@ layout_mode = 3
anchors_preset = 0
offset_right = 400.0
offset_bottom = 400.0
scale = Vector2(1.0829, 1.0829)
scale = Vector2(1.10523, 1.10523)
script = ExtResource("1_06uwq")
[node name="BackFX" type="Control" parent="."]
@@ -69,7 +76,6 @@ unique_name_in_owner = true
scale = Vector2(2.15054, 2.15054)
sprite_frames = ExtResource("5_js27p")
animation = &"idle"
frame_progress = 0.433302
centered = false
offset = Vector2(-0.000205994, 0.00019455)
@@ -95,7 +101,7 @@ layout_mode = 2
[node name="Label" parent="PercentMarginContainer/AspectRatioContainer/AutoSizeLabel" index="0"]
text = ""
label_settings = ExtResource("8_x6vke")
label_settings = SubResource("LabelSettings_qqnw2")
[node name="FrontFX" type="Control" parent="."]
custom_minimum_size = Vector2(0, 220)
@@ -20,7 +20,6 @@ base_font = ExtResource("8_fem7m")
spacing_glyph = 20
[node name="MonkeysMinigame" instance=ExtResource("1_6nhsm")]
process_mode = 1
script = ExtResource("2_12lw5")
throw_to_king_duration = 1.2
throw_to_monkey_duration = 0.8
@@ -29,7 +28,7 @@ max_number_of_GPs = 6
distractors_queue_size = 6
time_between_words = 3.0
minigame_name = 3
lesson_nb = 7
lesson_nb = 6
difficulty = 4
max_number_of_lives = 5
max_progression = 5
+1 -2
View File
@@ -27,9 +27,8 @@ offset_bottom = -104.0
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
scale = Vector2(2, 2)
sprite_frames = ExtResource("2_k0dcm")
animation = &"idle_front"
animation = &"idle_front_blink"
autoplay = "idle_front"
frame_progress = 0.444126
offset = Vector2(2.08165e-12, -82)
[node name="Label" type="Label" parent="."]
@@ -155,7 +155,7 @@ func _correct() -> void:
await _make_selected_coo()
await _fly_to(fly_away_positions)
_fly_to(fly_away_positions)
state = State.Idle
@@ -229,8 +229,9 @@ func _fly_to(targets: Array[Vector2]) -> void:
func _turn(parakeet: Parakeet, to_back: bool) -> void:
audio_player.stream = audio_streams[Audio.Turn]
audio_player.play()
if not audio_player.playing:
audio_player.stream = audio_streams[Audio.Turn]
audio_player.play()
if to_back:
await parakeet.turn_to_back()
else:
@@ -19,7 +19,7 @@ shader_parameter/direction = Vector2(0.015, 0)
script = ExtResource("2_x6xn5")
fly_duration = 3.0
minigame_name = 2
lesson_nb = 10
lesson_nb = 8
difficulty = 4
max_number_of_lives = 5