Lazy load of minigames
This commit is contained in:
@@ -38,9 +38,11 @@ static var cached_layout_lessons: int = 0
|
||||
@export var unlocked_color: Color = Color("1c2662")
|
||||
@export var locked_color: Color = Color("1d2229")
|
||||
@export_group("Minigames")
|
||||
@export var minigames_scenes: Array[PackedScene] = []
|
||||
@export var minigame_scene_paths: PackedStringArray = PackedStringArray()
|
||||
@export var minigames_icons: Array[Texture] = []
|
||||
|
||||
var _minigame_scene_cache: Dictionary = {}
|
||||
|
||||
var lessons: Dictionary = {}
|
||||
var _gardens_layout: GardensLayout
|
||||
var points: Array[Array] = []
|
||||
@@ -875,7 +877,23 @@ func _fill_minigame_choice(minigame_layout: MinigameLayout, exercise_type: int,
|
||||
minigame_layout.self_modulate = locked_color
|
||||
else:
|
||||
minigame_layout.self_modulate = unlocked_color
|
||||
minigame_layout.pressed.connect(_on_minigame_button_pressed.bind(minigames_scenes[exercise_type-1], minigame_number))
|
||||
minigame_layout.pressed.connect(_on_minigame_button_pressed.bind(exercise_type - 1, minigame_number))
|
||||
|
||||
|
||||
func _get_minigame_scene(scene_index: int) -> PackedScene:
|
||||
if scene_index < 0 or scene_index >= minigame_scene_paths.size():
|
||||
return null
|
||||
if _minigame_scene_cache.has(scene_index):
|
||||
return _minigame_scene_cache[scene_index] as PackedScene
|
||||
var scene_path: String = minigame_scene_paths[scene_index]
|
||||
if scene_path.is_empty():
|
||||
return null
|
||||
var scene_resource: Resource = load(scene_path)
|
||||
if scene_resource is PackedScene:
|
||||
var packed_scene: PackedScene = scene_resource as PackedScene
|
||||
_minigame_scene_cache[scene_index] = packed_scene
|
||||
return packed_scene
|
||||
return null
|
||||
|
||||
|
||||
func _count_completed_minigames(lesson_number: int) -> int:
|
||||
@@ -1346,9 +1364,13 @@ func _on_final_boss_button_pressed(lesson_number: int, garden_index: int) -> voi
|
||||
get_tree().change_scene_to_file(BOSS_MINIGAME_SCENE_PATH)
|
||||
|
||||
|
||||
func _on_minigame_button_pressed(minigame_scene: PackedScene, minigame_number: int) -> void:
|
||||
func _on_minigame_button_pressed(scene_index: int, minigame_number: int) -> void:
|
||||
if is_locked:
|
||||
return
|
||||
var minigame_scene: PackedScene = _get_minigame_scene(scene_index)
|
||||
if not minigame_scene:
|
||||
Log.error("Gardens: Missing minigame scene for index %d" % scene_index)
|
||||
return
|
||||
feedback_audio_stream_player.play()
|
||||
await (OpeningCurtain as OpeningCurtainClass).close()
|
||||
Minigame.transition_data = {
|
||||
|
||||
@@ -1,27 +1,17 @@
|
||||
[gd_scene format=3 uid="uid://b1rkn0uwoyd7l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://djolw68efn6r5" path="res://sources/gardens/gardens.gd" id="1_qlsw4"]
|
||||
[ext_resource type="PackedScene" uid="uid://bxh1torc05k7p" path="res://sources/minigames/crabs/crabs_minigame.tscn" id="3_vqohy"]
|
||||
[ext_resource type="Texture2D" uid="uid://jlwblk7lj7vi" path="res://assets/vfx/fx_10.png" id="3_xbvhu"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtcgj6ee8jt2t" path="res://sources/minigames/jellyfish/jellyfish_minigame.tscn" id="4_cvoj1"]
|
||||
[ext_resource type="Texture2D" uid="uid://wtx3wqs0l4si" path="res://assets/minigames/minigame_ui/graphic/button_back_up.png" id="4_neut5"]
|
||||
[ext_resource type="Texture2D" uid="uid://cbhip35yyqneg" path="res://assets/minigames/minigame_ui/graphic/button_back_down.png" id="5_2yuxn"]
|
||||
[ext_resource type="Texture2D" uid="uid://cq5wwf7y1msh7" path="res://assets/minigames/crabs/graphic/gauge_icon_crab_full.png" id="5_h8c5w"]
|
||||
[ext_resource type="PackedScene" uid="uid://8cbihh6410yp" path="res://sources/minigames/parakeets/parakeets_minigame.tscn" id="5_ix8qe"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2160x4hwd3y2" path="res://sources/minigames/caterpillar/caterpillar_minigame.tscn" id="6_flf16"]
|
||||
[ext_resource type="Texture2D" uid="uid://tcapan0mj64o" path="res://assets/minigames/minigame_ui/graphic/button_back_disabled.png" id="6_gs6gi"]
|
||||
[ext_resource type="Texture2D" uid="uid://di2qcv6jw8wh0" path="res://assets/minigames/parakeets/graphic/gauge_icon_parakeet_full.png" id="6_hekq6"]
|
||||
[ext_resource type="Texture2D" uid="uid://cq87j1xw4c31r" path="res://assets/minigames/jellyfish/graphic/gauge_icon_jellyfish_full.png" id="6_p30hm"]
|
||||
[ext_resource type="PackedScene" uid="uid://c20bhtvqds4p6" path="res://sources/minigames/monkeys/monkeys_minigame.tscn" id="6_r5cos"]
|
||||
[ext_resource type="Texture2D" uid="uid://cffuqacgb1jra" path="res://assets/lesson_screen/branches.png" id="7_axgdc"]
|
||||
[ext_resource type="PackedScene" uid="uid://dl5wx8l0awoi0" path="res://sources/minigames/frog/frog_minigame.tscn" id="7_o1s4m"]
|
||||
[ext_resource type="PackedScene" uid="uid://df5oba70wj13y" path="res://sources/minigames/ants/ants_minigame.tscn" id="8_g4mhc"]
|
||||
[ext_resource type="PackedScene" uid="uid://tkfgc7fdyw1a" path="res://sources/minigames/turtles/turtles_minigame.tscn" id="8_ylxff"]
|
||||
[ext_resource type="Texture2D" uid="uid://c3okdxpi317x5" path="res://assets/minigames/monkeys/graphic/gauge_icon_monkey_full.png" id="9_68su4"]
|
||||
[ext_resource type="Texture2D" uid="uid://re7qgivb3n5w" path="res://assets/minigames/frog/graphics/gauge_icon_frog_full.png" id="10_5wvwc"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpp3bpy1v80jk" path="res://sources/minigames/penguin/penguin_minigame.tscn" id="10_l1gcl"]
|
||||
[ext_resource type="Texture2D" uid="uid://nwbekpbuu472" path="res://assets/minigames/ants/graphics/gauge_icon_ant_full.png" id="12_ohgqx"]
|
||||
[ext_resource type="PackedScene" uid="uid://df5derhil64ca" path="res://sources/minigames/boss/boss_minigame.tscn" id="15_6dtg2"]
|
||||
[ext_resource type="Texture2D" uid="uid://bc3e0qths2cvt" path="res://assets/minigames/boss/boss_icon_full.png" id="16_5rwfp"]
|
||||
[ext_resource type="Texture2D" uid="uid://bmdhpgxmur1vo" path="res://assets/minigames/caterpillar/graphics/gauge_icon_caterpillar_full.png" id="16_prl1o"]
|
||||
[ext_resource type="AudioStream" uid="uid://4bv1hr6r68op" path="res://assets/gardens/ui_transition_right.mp3" id="17_37f6y"]
|
||||
@@ -147,7 +137,7 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_qlsw4")
|
||||
minigames_scenes = Array[PackedScene]([ExtResource("4_cvoj1"), ExtResource("3_vqohy"), ExtResource("5_ix8qe"), ExtResource("6_r5cos"), ExtResource("6_flf16"), ExtResource("7_o1s4m"), ExtResource("8_ylxff"), ExtResource("8_g4mhc"), ExtResource("10_l1gcl"), ExtResource("15_6dtg2")])
|
||||
minigame_scene_paths = PackedStringArray("res://sources/minigames/jellyfish/jellyfish_minigame.tscn", "res://sources/minigames/crabs/crabs_minigame.tscn", "res://sources/minigames/parakeets/parakeets_minigame.tscn", "res://sources/minigames/monkeys/monkeys_minigame.tscn", "res://sources/minigames/caterpillar/caterpillar_minigame.tscn", "res://sources/minigames/frog/frog_minigame.tscn", "res://sources/minigames/turtles/turtles_minigame.tscn", "res://sources/minigames/ants/ants_minigame.tscn", "res://sources/minigames/penguin/penguin_minigame.tscn", "res://sources/minigames/boss/boss_minigame.tscn")
|
||||
minigames_icons = Array[Texture]([ExtResource("6_p30hm"), ExtResource("5_h8c5w"), ExtResource("6_hekq6"), ExtResource("9_68su4"), ExtResource("16_prl1o"), ExtResource("10_5wvwc"), ExtResource("18_12pcf"), ExtResource("12_ohgqx"), ExtResource("20_ouafq"), ExtResource("16_5rwfp")])
|
||||
|
||||
[node name="RightAudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=941811110]
|
||||
|
||||
Reference in New Issue
Block a user