Boss minigame feedbacks

This commit is contained in:
Adrien Ufferte
2026-02-06 14:02:44 +01:00
parent 19d7687d91
commit 77affb11bf
21 changed files with 383 additions and 83 deletions
+9
View File
@@ -24,3 +24,12 @@ func defeat() -> void:
animated_sprite_2d.play_backwards("defeat") animated_sprite_2d.play_backwards("defeat")
await animated_sprite_2d.animation_finished await animated_sprite_2d.animation_finished
idle() idle()
func idle_boss() -> void:
animated_sprite_2d.play("idle")
animated_sprite_2d.stop()
func victory_boss() -> void:
animated_sprite_2d.play("success")
+1 -1
View File
@@ -18,7 +18,7 @@ shape = SubResource("RectangleShape2D_100ls")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=889635559] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=889635559]
position = Vector2(1, -90.5) position = Vector2(1, -90.5)
sprite_frames = ExtResource("2_rcd7x") sprite_frames = ExtResource("2_rcd7x")
animation = &"defeat" animation = &"idle"
autoplay = "idle" autoplay = "idle"
[node name="Anchor" type="Marker2D" parent="." unique_id=744855349] [node name="Anchor" type="Marker2D" parent="." unique_id=744855349]
+112 -1
View File
@@ -18,6 +18,7 @@ var _boss_session_index: int = -1
var _boss_answer_start_ms: int = 0 var _boss_answer_start_ms: int = 0
var default_label_settings: LabelSettings var default_label_settings: LabelSettings
var default_label_background_color: Color var default_label_background_color: Color
var _correct_answer_tween: Tween
@onready var text_start_zone: Control = %ControlText @onready var text_start_zone: Control = %ControlText
@onready var texture_button_bin: TextureButton = $GameRoot/TextureButtonBin @onready var texture_button_bin: TextureButton = $GameRoot/TextureButtonBin
@@ -32,10 +33,23 @@ var default_label_background_color: Color
@onready var kalulu_boss: KaluluBoss = %KaluluBoss @onready var kalulu_boss: KaluluBoss = %KaluluBoss
@onready var wrong_fx: WrongFX = %WrongFX @onready var wrong_fx: WrongFX = %WrongFX
@onready var right_stars: RightStarsFX = $GameRoot/Right_Stars @onready var right_stars: RightStarsFX = $GameRoot/Right_Stars
@onready var frame_exit: Sprite2D = $GameRoot/Frame/FrameExit
@onready var turtle: Turtle = $GameRoot/Friends/Turtle
@onready var frog: Frog = $GameRoot/Friends/Frog
@onready var crab: Crab = $GameRoot/Friends/Crab
@onready var penguin: Penguin = $GameRoot/Friends/Penguin
@onready var monkey: Monkey = $GameRoot/Friends/Monkey
@onready var parakeet: Parakeet = $GameRoot/Friends/Parakeet
@onready var ant: Ant = $GameRoot/Friends/Ant
@onready var jellyfish: Jellyfish = $GameRoot/Friends_Behind_Frame/Jellyfish
func _ready() -> void: func _ready() -> void:
super() super()
if not is_final_boss:
frame_exit.show()
setup_animal_friends()
fireworks.set_colors([Color("#bca4ff"), Color("#f5a8c8"), Color("#ffbf94")])
if adult_block and adult_block.has_signal("unlocked"): if adult_block and adult_block.has_signal("unlocked"):
adult_block.unlocked.connect(_on_adult_block_unlocked) adult_block.unlocked.connect(_on_adult_block_unlocked)
text_start_zone.set_drag_forwarding(_text_get_drag_data, Callable(), Callable()) text_start_zone.set_drag_forwarding(_text_get_drag_data, Callable(), Callable())
@@ -55,6 +69,28 @@ func _ready() -> void:
tutorial_count = 2 tutorial_count = 2
func setup_animal_friends() -> void:
turtle.idle_boss()
frog.idle_boss()
crab.idle_boss()
penguin.idle_boss()
monkey.idle_boss()
parakeet.idle_boss()
ant.idle_boss()
jellyfish.idle_boss()
func win_with_friends() -> void:
turtle.victory_boss()
frog.victory_boss()
crab.victory_boss()
penguin.victory_boss()
monkey.victory_boss()
parakeet.victory_boss()
ant.victory_boss()
jellyfish.victory_boss()
func _text_get_drag_data(_at_position: Vector2) -> Variant: func _text_get_drag_data(_at_position: Vector2) -> Variant:
var duplicated: Control = text_start_zone.duplicate() var duplicated: Control = text_start_zone.duplicate()
duplicated.set_scale(Vector2(0.6, 0.6)) duplicated.set_scale(Vector2(0.6, 0.6))
@@ -109,7 +145,10 @@ func _start() -> void:
func _present_next_word() -> void: func _present_next_word() -> void:
if words_to_present.is_empty(): if words_to_present.is_empty():
if words_to_present_next.is_empty(): if words_to_present_next.is_empty():
_win() if _get_win_ratio() >= minimum_correct_ratio:
_win()
else:
_lose()
return return
words_to_present = words_to_present_next words_to_present = words_to_present_next
words_to_present.shuffle() words_to_present.shuffle()
@@ -175,6 +214,7 @@ func _on_answer_dropped(is_answered_real: bool) -> void:
label.label_settings = label.label_settings.duplicate() label.label_settings = label.label_settings.duplicate()
label.label_settings.font_color = Minigame.LABEL_COLOR_NEUTRAL label.label_settings.font_color = Minigame.LABEL_COLOR_NEUTRAL
texture_rect_text_box.self_modulate = Minigame.LABEL_COLOR_WIN texture_rect_text_box.self_modulate = Minigame.LABEL_COLOR_WIN
var target_button: Control = texture_button_book if is_answered_real else texture_button_bin
if is_answered_real: if is_answered_real:
right_stars.global_position = texture_button_book.global_position + texture_button_book.get_size() / 2 right_stars.global_position = texture_button_book.global_position + texture_button_book.get_size() / 2
right_stars.replay() right_stars.replay()
@@ -182,6 +222,7 @@ func _on_answer_dropped(is_answered_real: bool) -> void:
right_stars.global_position = texture_button_bin.global_position + texture_button_bin.get_size() / 2 right_stars.global_position = texture_button_bin.global_position + texture_button_bin.get_size() / 2
right_stars.replay() right_stars.replay()
words_to_present.pop_front() words_to_present.pop_front()
await _play_correct_answer_animation(target_button)
if tutorial_count == 0: if tutorial_count == 0:
var speech: AudioStreamMP3 = Database.load_external_sound(Database.get_kalulu_speech_path(Type.keys()[minigame_name] as String, "win_test_game_first_word")) var speech: AudioStreamMP3 = Database.load_external_sound(Database.get_kalulu_speech_path(Type.keys()[minigame_name] as String, "win_test_game_first_word"))
minigame_ui.play_kalulu_speech(speech) minigame_ui.play_kalulu_speech(speech)
@@ -193,6 +234,9 @@ func _on_answer_dropped(is_answered_real: bool) -> void:
await minigame_ui.kalulu_speech_ended await minigame_ui.kalulu_speech_ended
tutorial_count += 1 tutorial_count += 1
else: else:
label.label_settings = label.label_settings.duplicate()
label.label_settings.font_color = Minigame.LABEL_COLOR_NEUTRAL
texture_rect_text_box.self_modulate = Minigame.LABEL_COLOR_LOSE
if is_answered_real: if is_answered_real:
wrong_fx.global_position = texture_button_book.global_position + texture_button_book.get_size() / 2 wrong_fx.global_position = texture_button_book.global_position + texture_button_book.get_size() / 2
wrong_fx.play() wrong_fx.play()
@@ -217,6 +261,72 @@ func _on_answer_dropped(is_answered_real: bool) -> void:
texture_button_book.set_disabled(false) texture_button_book.set_disabled(false)
_update_progression_gauge() _update_progression_gauge()
_present_next_word() _present_next_word()
text_start_zone.show()
func _center_global(control: Control) -> Vector2:
var rect: Rect2 = control.get_global_rect()
var scaled_half: Vector2 = (rect.size * control.scale) * 0.5
return rect.position + scaled_half
func _play_correct_answer_animation(target_button: Control) -> void:
if not is_instance_valid(text_start_zone) or not is_instance_valid(target_button):
return
if _correct_answer_tween and _correct_answer_tween.is_running():
_correct_answer_tween.kill()
var duplicated: Control = text_start_zone.duplicate()
if text_start_zone.is_visible_in_tree():
text_start_zone.hide()
else:
duplicated.show()
duplicated.name = "CorrectAnswerWord"
duplicated.mouse_filter = Control.MOUSE_FILTER_IGNORE
# Place duplicated so that its center matches the original center.
# (We set position after adding as child to ensure layout/size is correct)
text_start_zone.get_parent().add_child(duplicated)
duplicated.scale = text_start_zone.scale
# Force layout to be up-to-date (helps if sizes depend on theme/text)
duplicated.queue_redraw()
duplicated.minimum_size_changed.emit()
var start_center: Vector2 = _center_global(text_start_zone)
var end_center: Vector2 = _center_global(target_button)
# Initialize duplicated at start center
var dup_half: Vector2 = duplicated.size * duplicated.scale * 0.5
duplicated.global_position = start_center - dup_half
var arc_height: float = max(200.0, start_center.distance_to(end_center) * 0.5)
var control_position: Vector2 = (start_center + end_center) * 0.5 + Vector2(0.0, -arc_height)
_correct_answer_tween = create_tween()
_correct_answer_tween.tween_method(
func(progress: float) -> void:
var new_center: Vector2 = _quadratic_bezier(start_center, control_position, end_center, progress)
var half: Vector2 = duplicated.size * duplicated.scale * 0.5
duplicated.global_position = new_center - half
duplicated.scale = text_start_zone.scale.lerp(Vector2(0.2, 0.2), progress),
0.0,
1.0,
0.6
).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
await _correct_answer_tween.finished
if is_instance_valid(duplicated):
duplicated.queue_free()
func _quadratic_bezier(start: Vector2, control: Vector2, end: Vector2, progress: float) -> Vector2:
var one_minus: float = 1.0 - progress
return one_minus * one_minus * start + 2.0 * one_minus * progress * control + progress * progress * end
func _update_progression_gauge() -> void: func _update_progression_gauge() -> void:
@@ -252,6 +362,7 @@ func _on_adult_block_unlocked() -> void:
func _win() -> void: func _win() -> void:
if _is_boss_session() and _boss_session_index >= 0: if _is_boss_session() and _boss_session_index >= 0:
UserDataManager.finish_boss_session(_boss_session_index, true) UserDataManager.finish_boss_session(_boss_session_index, true)
win_with_friends()
await kalulu_boss.happy() await kalulu_boss.happy()
await super() await super()
+131 -35
View File
@@ -4,10 +4,15 @@
[ext_resource type="Script" uid="uid://dgodk76761a1n" path="res://sources/minigames/boss/boss_minigame.gd" id="2_68jip"] [ext_resource type="Script" uid="uid://dgodk76761a1n" path="res://sources/minigames/boss/boss_minigame.gd" id="2_68jip"]
[ext_resource type="Texture2D" uid="uid://ccfocxdqxujvc" path="res://assets/minigames/boss/background.png" id="3_3ty3i"] [ext_resource type="Texture2D" uid="uid://ccfocxdqxujvc" path="res://assets/minigames/boss/background.png" id="3_3ty3i"]
[ext_resource type="Texture2D" uid="uid://bf7od6f56f516" path="res://assets/minigames/boss/sun.png" id="4_2m0ff"] [ext_resource type="Texture2D" uid="uid://bf7od6f56f516" path="res://assets/minigames/boss/sun.png" id="4_2m0ff"]
[ext_resource type="Script" uid="uid://cgtd34f7vi2tj" path="res://sources/utils/clouds_manager.gd" id="5_rl4hv"]
[ext_resource type="Texture2D" uid="uid://bk4k8v5yrolt1" path="res://assets/minigames/boss/frame_corner.png" id="5_xo63t"] [ext_resource type="Texture2D" uid="uid://bk4k8v5yrolt1" path="res://assets/minigames/boss/frame_corner.png" id="5_xo63t"]
[ext_resource type="Texture2D" uid="uid://2iib006wpkux" path="res://assets/minigames/boss/frame_side.png" id="6_2c6ay"] [ext_resource type="Texture2D" uid="uid://2iib006wpkux" path="res://assets/minigames/boss/frame_side.png" id="6_2c6ay"]
[ext_resource type="Texture2D" uid="uid://rx270y4n7tul" path="res://assets/minigames/parakeets/graphic/cloud_1.png" id="6_je4of"]
[ext_resource type="Texture2D" uid="uid://dphj3hqfnnw4p" path="res://assets/minigames/parakeets/graphic/cloud_2.png" id="7_bba1f"]
[ext_resource type="Texture2D" uid="uid://cax5nncivwq4" path="res://assets/minigames/boss/bin.png" id="7_wij1o"] [ext_resource type="Texture2D" uid="uid://cax5nncivwq4" path="res://assets/minigames/boss/bin.png" id="7_wij1o"]
[ext_resource type="Texture2D" uid="uid://xukdk8dobsqy" path="res://assets/minigames/boss/book.png" id="8_mkvne"] [ext_resource type="Texture2D" uid="uid://xukdk8dobsqy" path="res://assets/minigames/boss/book.png" id="8_mkvne"]
[ext_resource type="Texture2D" uid="uid://1btgagsporxa" path="res://assets/minigames/parakeets/graphic/cloud_3.png" id="8_xrsj0"]
[ext_resource type="PackedScene" uid="uid://djykrpdu58f3v" path="res://sources/minigames/turtles/turtle.tscn" id="11_je4of"]
[ext_resource type="Texture2D" uid="uid://dxqnvbr4tffn7" path="res://assets/minigames/minigame_ui/graphic/gauge.png" id="11_p5wnc"] [ext_resource type="Texture2D" uid="uid://dxqnvbr4tffn7" path="res://assets/minigames/minigame_ui/graphic/gauge.png" id="11_p5wnc"]
[ext_resource type="Texture2D" uid="uid://7w2e4mo7yssm" path="res://assets/minigames/boss/foreground.png" id="12_2c6ay"] [ext_resource type="Texture2D" uid="uid://7w2e4mo7yssm" path="res://assets/minigames/boss/foreground.png" id="12_2c6ay"]
[ext_resource type="Texture2D" uid="uid://4ci6gmg0c15o" path="res://assets/minigames/minigame_ui/graphic/white_gauge.png" id="12_w5m1b"] [ext_resource type="Texture2D" uid="uid://4ci6gmg0c15o" path="res://assets/minigames/minigame_ui/graphic/white_gauge.png" id="12_w5m1b"]
@@ -17,9 +22,15 @@
[ext_resource type="LabelSettings" uid="uid://bguqnhiblwick" path="res://resources/themes/minigames_label_settings.tres" id="17_47luc"] [ext_resource type="LabelSettings" uid="uid://bguqnhiblwick" path="res://resources/themes/minigames_label_settings.tres" id="17_47luc"]
[ext_resource type="PackedScene" uid="uid://dpfn2ag2xv24s" path="res://sources/minigames/boss/kalulu_boss.tscn" id="17_kvjsk"] [ext_resource type="PackedScene" uid="uid://dpfn2ag2xv24s" path="res://sources/minigames/boss/kalulu_boss.tscn" id="17_kvjsk"]
[ext_resource type="PackedScene" uid="uid://b7rx6esglyd6c" path="res://sources/menus/adult_block/adult_block.tscn" id="18_4v0wd"] [ext_resource type="PackedScene" uid="uid://b7rx6esglyd6c" path="res://sources/menus/adult_block/adult_block.tscn" id="18_4v0wd"]
[ext_resource type="Texture2D" uid="uid://cobv0mceg2vb8" path="res://assets/minigames/boss/friends.png" id="18_kvjsk"] [ext_resource type="PackedScene" uid="uid://bp0b4xkr7nwed" path="res://sources/minigames/monkeys/monkey.tscn" id="18_y0mix"]
[ext_resource type="PackedScene" uid="uid://cs6g7fhc0bjvh" path="res://sources/utils/fx/right_stars.tscn" id="19_b2wqe"] [ext_resource type="PackedScene" uid="uid://cs6g7fhc0bjvh" path="res://sources/utils/fx/right_stars.tscn" id="19_b2wqe"]
[ext_resource type="PackedScene" uid="uid://b78362g1yif2n" path="res://sources/minigames/penguin/penguin.tscn" id="19_j0ia3"]
[ext_resource type="PackedScene" uid="uid://dlmbxcgiv8tpr" path="res://sources/utils/fx/wrong.tscn" id="19_wi3c5"] [ext_resource type="PackedScene" uid="uid://dlmbxcgiv8tpr" path="res://sources/utils/fx/wrong.tscn" id="19_wi3c5"]
[ext_resource type="PackedScene" uid="uid://bwe3fp0vkpufb" path="res://sources/minigames/crabs/crab/crab.tscn" id="20_j0ia3"]
[ext_resource type="PackedScene" uid="uid://bloyucpsbvpx8" path="res://sources/minigames/frog/frog.tscn" id="20_xrsj0"]
[ext_resource type="PackedScene" uid="uid://cpkwyypyikpfc" path="res://sources/minigames/jellyfish/jellyfish.tscn" id="21_3iy22"]
[ext_resource type="PackedScene" uid="uid://cmoeum0oc0p2" path="res://sources/minigames/parakeets/parakeet.tscn" id="23_h2hey"]
[ext_resource type="PackedScene" uid="uid://c6st16roxwloh" path="res://sources/minigames/ants/ant.tscn" id="24_ejade"]
[sub_resource type="Curve2D" id="Curve2D_8d1qx"] [sub_resource type="Curve2D" id="Curve2D_8d1qx"]
_data = { _data = {
@@ -27,7 +38,7 @@ _data = {
} }
point_count = 2 point_count = 2
[node name="FishMinigame" unique_id=1178378052 instance=ExtResource("1_itrpi")] [node name="BossMinigame" unique_id=1178378052 instance=ExtResource("1_itrpi")]
script = ExtResource("2_68jip") script = ExtResource("2_68jip")
game_duration = 240 game_duration = 240
minimum_correct_ratio = 0.8 minimum_correct_ratio = 0.8
@@ -61,7 +72,35 @@ loop = false
[node name="Sprite2DSun" type="Sprite2D" parent="GameRoot/Path2D/PathFollow2D" index="0" unique_id=2147097806] [node name="Sprite2DSun" type="Sprite2D" parent="GameRoot/Path2D/PathFollow2D" index="0" unique_id=2147097806]
texture = ExtResource("4_2m0ff") texture = ExtResource("4_2m0ff")
[node name="Frame" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="2" unique_id=1674444498] [node name="Clouds_Background" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="2" unique_id=1520455712]
script = ExtResource("5_rl4hv")
max_speed = 40.0
min_y = 100.0
max_y = 500.0
[node name="cloud_1" type="Sprite2D" parent="GameRoot/Clouds_Background" index="0" unique_id=41424144]
position = Vector2(623, 253.5)
texture = ExtResource("6_je4of")
[node name="cloud_2" type="Sprite2D" parent="GameRoot/Clouds_Background" index="1" unique_id=1350923133]
position = Vector2(1088, 256)
texture = ExtResource("7_bba1f")
[node name="cloud_3" type="Sprite2D" parent="GameRoot/Clouds_Background" index="2" unique_id=190014762]
position = Vector2(1904, 248)
texture = ExtResource("8_xrsj0")
[node name="Friends_Behind_Frame" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="3" unique_id=889769498]
[node name="Jellyfish" parent="GameRoot/Friends_Behind_Frame" index="0" unique_id=2036427610 instance=ExtResource("21_3iy22")]
offset_left = 1449.0001
offset_top = 1301.0001
offset_right = 1849.0001
offset_bottom = 1701.0001
scale = Vector2(0.45, 0.45)
boss = true
[node name="Frame" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="4" unique_id=1674444498]
position = Vector2(1080, 720) position = Vector2(1080, 720)
scale = Vector2(0.9, 0.9) scale = Vector2(0.9, 0.9)
@@ -105,16 +144,48 @@ rotation = 1.5707964
scale = Vector2(1, 1.6) scale = Vector2(1, 1.6)
texture = ExtResource("6_2c6ay") texture = ExtResource("6_2c6ay")
[node name="TextureButtonBin" type="TextureButton" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="3" unique_id=852671648] [node name="FrameExit" type="Sprite2D" parent="GameRoot/Frame" index="8" unique_id=1578271912]
visible = false
position = Vector2(1546.6666, 195.55557)
rotation = 1.5707964
scale = Vector2(1, 1.6)
texture = ExtResource("6_2c6ay")
[node name="FrameEnter" type="Sprite2D" parent="GameRoot/Frame" index="9" unique_id=1113523446]
position = Vector2(-1013.3334, 195.55557)
rotation = 1.5707964
scale = Vector2(1, 1.6)
texture = ExtResource("6_2c6ay")
[node name="Clouds_Foreground" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="5" unique_id=2116541314]
script = ExtResource("5_rl4hv")
min_speed = 50.0
max_speed = 80.0
min_y = 100.0
max_y = 500.0
[node name="cloud_1" type="Sprite2D" parent="GameRoot/Clouds_Foreground" index="0" unique_id=1134925507]
position = Vector2(623, 253.5)
texture = ExtResource("6_je4of")
[node name="cloud_2" type="Sprite2D" parent="GameRoot/Clouds_Foreground" index="1" unique_id=392578643]
position = Vector2(1088, 256)
texture = ExtResource("7_bba1f")
[node name="cloud_3" type="Sprite2D" parent="GameRoot/Clouds_Foreground" index="2" unique_id=1502196887]
position = Vector2(1904, 248)
texture = ExtResource("8_xrsj0")
[node name="TextureButtonBin" type="TextureButton" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="6" unique_id=852671648]
layout_mode = 0 layout_mode = 0
offset_left = 320.0 offset_left = 320.0
offset_top = 768.0 offset_top = 768.0
offset_right = 320.0 offset_right = 561.0
offset_bottom = 768.0 offset_bottom = 1020.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
texture_normal = ExtResource("7_wij1o") texture_normal = ExtResource("7_wij1o")
[node name="TextureButtonBook" type="TextureButton" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="4" unique_id=22079276] [node name="TextureButtonBook" type="TextureButton" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="7" unique_id=22079276]
layout_mode = 0 layout_mode = 0
offset_left = 2064.0 offset_left = 2064.0
offset_top = 768.0 offset_top = 768.0
@@ -123,7 +194,7 @@ offset_bottom = 768.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
texture_normal = ExtResource("8_mkvne") texture_normal = ExtResource("8_mkvne")
[node name="ProgressionGauge" type="NinePatchRect" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="5" unique_id=1664248446] [node name="ProgressionGauge" type="NinePatchRect" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="8" unique_id=1664248446]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(64, 64) custom_minimum_size = Vector2(64, 64)
layout_mode = 0 layout_mode = 0
@@ -171,21 +242,56 @@ texture = ExtResource("12_w5m1b")
patch_margin_top = 33 patch_margin_top = 33
patch_margin_bottom = 33 patch_margin_bottom = 33
[node name="Foreground" type="Sprite2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="6" unique_id=942294228] [node name="Foreground" type="Sprite2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="9" unique_id=942294228]
top_level = true top_level = true
position = Vector2(1872, 424) position = Vector2(1872, 424)
texture = ExtResource("12_2c6ay") texture = ExtResource("12_2c6ay")
[node name="Friends" type="Sprite2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="7" unique_id=888328201] [node name="Friends" type="Node2D" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="10" unique_id=1965227465]
self_modulate = Color(1, 1, 1, 0.34509805)
position = Vector2(1676, 1280) position = Vector2(1676, 1280)
texture = ExtResource("18_kvjsk")
[node name="KaluluBoss" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="8" unique_id=1776395621 instance=ExtResource("17_kvjsk")] [node name="Monkey" parent="GameRoot/Friends" index="0" unique_id=1341983060 instance=ExtResource("18_y0mix")]
position = Vector2(125, 62)
scale = Vector2(0.7, 0.7)
[node name="Turtle" parent="GameRoot/Friends" index="1" unique_id=711306409 instance=ExtResource("11_je4of")]
position = Vector2(-220, 120)
rotation = 1.5707964
scale = Vector2(0.17999999, 0.17999999)
[node name="Penguin" parent="GameRoot/Friends" index="2" unique_id=1835464943 instance=ExtResource("19_j0ia3")]
position = Vector2(28, 104)
scale = Vector2(0.3, 0.3)
[node name="Frog" parent="GameRoot/Friends" index="3" unique_id=2020692812 instance=ExtResource("20_xrsj0")]
offset_left = -43.999985
offset_top = 112.0
offset_right = -43.999985
offset_bottom = 112.0
scale = Vector2(0.4, 0.4)
[node name="Crab" parent="GameRoot/Friends" index="4" unique_id=617305983 instance=ExtResource("20_j0ia3")]
offset_left = -220.0
offset_top = 32.0
offset_right = 148.0
offset_bottom = 352.0
scale = Vector2(0.45, 0.45)
[node name="Parakeet" parent="GameRoot/Friends" index="5" unique_id=1132826004 instance=ExtResource("23_h2hey")]
position = Vector2(124, -103)
scale = Vector2(0.09, 0.09)
[node name="Ant" parent="GameRoot/Friends" index="6" unique_id=1721368901 instance=ExtResource("24_ejade")]
position = Vector2(228, 128)
scale = Vector2(0.17, 0.17)
[node name="KaluluBoss" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="11" unique_id=1776395621 instance=ExtResource("17_kvjsk")]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2(800, 1224) position = Vector2(800, 1224)
scale = Vector2(0.7, 0.7) scale = Vector2(0.7, 0.7)
[node name="ControlText" type="Control" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="9" unique_id=95008625] [node name="ControlText" type="Control" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="12" unique_id=95008625]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(1025, 234) custom_minimum_size = Vector2(1025, 234)
anchors_preset = 0 anchors_preset = 0
@@ -204,40 +310,30 @@ stretch_mode = 2
[node name="TextureRectTextBox" type="TextureRect" parent="GameRoot/ControlText/TextureRectOutlineDotted" index="0" unique_id=1202683105] [node name="TextureRectTextBox" type="TextureRect" parent="GameRoot/ControlText/TextureRectOutlineDotted" index="0" unique_id=1202683105]
unique_name_in_owner = true unique_name_in_owner = true
self_modulate = Color(0.99607843, 0.96862745, 0.8666667, 1)
layout_mode = 0 layout_mode = 0
offset_left = 32.0 offset_right = 1024.0
offset_top = 24.0 offset_bottom = 233.0
offset_right = 1056.0
offset_bottom = 257.0
texture = ExtResource("16_sndot") texture = ExtResource("16_sndot")
stretch_mode = 2 stretch_mode = 3
[node name="MarginContainer" type="MarginContainer" parent="GameRoot/ControlText/TextureRectOutlineDotted/TextureRectTextBox" index="0" unique_id=415001204] [node name="Label" type="Label" parent="GameRoot/ControlText/TextureRectOutlineDotted/TextureRectTextBox" index="0" unique_id=1229572097]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -24.0
offset_top = -32.0
offset_right = -24.0
offset_bottom = -19.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_right = 30
[node name="Label" type="Label" parent="GameRoot/ControlText/TextureRectOutlineDotted/TextureRectTextBox/MarginContainer" index="0" unique_id=1229572097]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 0
offset_top = 11.0
offset_right = 1024.0
offset_bottom = 212.0
theme_override_font_sizes/font_size = 100 theme_override_font_sizes/font_size = 100
text = "abc" text = "abc"
label_settings = ExtResource("17_47luc") label_settings = ExtResource("17_47luc")
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1
[node name="WrongFX" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="10" unique_id=81753671 instance=ExtResource("19_wi3c5")] [node name="WrongFX" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="13" unique_id=81753671 instance=ExtResource("19_wi3c5")]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 0 layout_mode = 0
[node name="Right_Stars" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="11" unique_id=749307022 instance=ExtResource("19_b2wqe")] [node name="Right_Stars" parent="GameRoot" parent_id_path=PackedInt32Array(1053321881) index="14" unique_id=749307022 instance=ExtResource("19_b2wqe")]
[node name="AdultBlock" parent="." index="4" unique_id=1401891944 instance=ExtResource("18_4v0wd")] [node name="AdultBlock" parent="." index="4" unique_id=1401891944 instance=ExtResource("18_4v0wd")]
unique_name_in_owner = true unique_name_in_owner = true
+1 -1
View File
@@ -22,7 +22,7 @@ func sad() -> void:
play("idle_1") play("idle_1")
func _on_animated_sprite_2d_animation_finished() -> void: func _on_animation_finished() -> void:
match animation: match animation:
"idle_1": "idle_1":
animation_counter -= 1 animation_counter -= 1
+2
View File
@@ -8,3 +8,5 @@ sprite_frames = ExtResource("1_u7krp")
animation = &"idle_1" animation = &"idle_1"
autoplay = "idle_1" autoplay = "idle_1"
script = ExtResource("2_46epb") script = ExtResource("2_46epb")
[connection signal="animation_finished" from="." to="." method="_on_animation_finished"]
+10 -1
View File
@@ -1,4 +1,3 @@
@tool
class_name Crab class_name Crab
extends Control extends Control
@@ -108,3 +107,13 @@ func _on_animated_sprite_2d_animation_finished() -> void:
func _on_audio_stream_player_finished() -> void: func _on_audio_stream_player_finished() -> void:
audio_stream_player.stream = sounds[randi_range(0, sounds.size() - 1)] audio_stream_player.stream = sounds[randi_range(0, sounds.size() - 1)]
audio_stream_player.play() audio_stream_player.play()
func idle_boss() -> void:
text_box_sprite_2d.hide()
animated_sprite.play("idle")
animated_sprite.stop()
func victory_boss() -> void:
animated_sprite.play("right")
+9
View File
@@ -127,3 +127,12 @@ func _on_animated_sprite_2d_animation_finished() -> void:
jumped.emit() jumped.emit()
"defeat": "defeat":
defeated.emit() defeated.emit()
func idle_boss() -> void:
animated_sprite.play("idle_front")
animated_sprite.stop()
func victory_boss() -> void:
animated_sprite.play("idle_front")
-1
View File
@@ -1,4 +1,3 @@
@tool
class_name River class_name River
extends TextureRect extends TextureRect
+58 -29
View File
@@ -1,12 +1,11 @@
@tool
class_name Jellyfish class_name Jellyfish
extends Control extends Control
signal pressed(stimulus: Dictionary) signal pressed(stimulus: Dictionary)
enum Colors { enum Colors {
Red, Blue,
Green, Pink,
} }
const ANIMATIONS_BODY: Array[SpriteFrames] = [ const ANIMATIONS_BODY: Array[SpriteFrames] = [
@@ -18,35 +17,31 @@ const ANIMATIONS_ARMS: Array[SpriteFrames] = [
preload("res://sources/minigames/jellyfish/pink_jellyfish_animations_arms.tres"), preload("res://sources/minigames/jellyfish/pink_jellyfish_animations_arms.tres"),
] ]
const SCALES: Array[Vector2] = [ const SCALES: Array[Vector2] = [
Vector2(1.,1.), Vector2(1.0, 1.0),
Vector2(1.25, 1.25) Vector2(1.25, 1.25),
] ]
const SCALE_FACTOR: float = 0.2 const SCALE_FACTOR: float = 0.2
@export var color: int = Colors.Red: @export var boss: bool = false:
set(value): set(value):
color = value boss = value
if animated_sprite_body: if is_node_ready():
animated_sprite_body.sprite_frames = ANIMATIONS_BODY[color] _apply_visuals()
else:
Log.error("Jellyfish: no animated sprite body")
if animated_sprite_arms:
animated_sprite_arms.sprite_frames = ANIMATIONS_ARMS[color]
else:
Log.error("Jellyfish: no animated sprite arms")
scale = SCALES[color] * (1. + randf() * SCALE_FACTOR)
# Handles sprite size
sprite_control.resized.emit()
var stimulus: Dictionary = {}: var _color: int = Colors.Blue
var color: int:
get: return _color
set(value): set(value):
stimulus = value _color = value
if label: if is_node_ready():
if value.has("Grapheme"): _apply_visuals()
label.text = value.Grapheme var _stimulus: Dictionary = {}
else: var stimulus: Dictionary:
label.text = "" get: return _stimulus
set(value):
_stimulus = value
if is_node_ready():
_apply_label()
@onready var sprite_control: SpriteControl = $SpriteControl @onready var sprite_control: SpriteControl = $SpriteControl
@onready var animated_sprite_body: AnimatedSprite2D = %AnimatedSprite2D_Body @onready var animated_sprite_body: AnimatedSprite2D = %AnimatedSprite2D_Body
@@ -60,16 +55,38 @@ var stimulus: Dictionary = {}:
func _ready() -> void: func _ready() -> void:
stimulus = stimulus _apply_visuals()
_apply_label()
if boss:
return
var rand: float = randf() var rand: float = randf()
color = Colors.Red if rand < 0.7 else Colors.Green color = Colors.Blue if rand < 0.7 else Colors.Pink
var rand_frame: int = randi_range(0, animated_sprite_body.sprite_frames.get_frame_count("idle") - 1) var rand_frame: int = randi_range(0, animated_sprite_body.sprite_frames.get_frame_count("idle") - 1)
animated_sprite_body.frame = rand_frame animated_sprite_body.frame = rand_frame
animated_sprite_arms.frame = rand_frame animated_sprite_arms.frame = rand_frame
idle() idle()
func _apply_visuals() -> void:
if boss:
animated_sprite_body.sprite_frames = ANIMATIONS_BODY[Colors.Pink]
animated_sprite_arms.hide()
return
else:
animated_sprite_arms.show()
animated_sprite_body.sprite_frames = ANIMATIONS_BODY[_color]
animated_sprite_arms.sprite_frames = ANIMATIONS_ARMS[_color]
scale = SCALES[_color] * (1.0 + randf() * SCALE_FACTOR)
sprite_control.resized.emit()
func _apply_label() -> void:
label.text = str(_stimulus.get("Grapheme", ""))
func is_idle() -> bool: func is_idle() -> bool:
return animated_sprite_body.animation == "idle" return animated_sprite_body.animation == "idle"
@@ -126,3 +143,15 @@ func delete() -> void:
tween.tween_property(self, "modulate:a", 0, 2) tween.tween_property(self, "modulate:a", 0, 2)
await tween.finished await tween.finished
queue_free() queue_free()
func idle_boss() -> void:
text_box_sprite_2d.hide()
color = Colors.Pink
scale = Vector2(0.45, 0.45)
animated_sprite_body.stop()
animated_sprite_arms.stop()
func victory_boss() -> void:
animated_sprite_arms.play("happy")
+9 -7
View File
@@ -7,10 +7,10 @@
[ext_resource type="Script" uid="uid://d5qkkg88431w" path="res://sources/utils/percent_margin_container.gd" id="3_vllju"] [ext_resource type="Script" uid="uid://d5qkkg88431w" path="res://sources/utils/percent_margin_container.gd" id="3_vllju"]
[ext_resource type="PackedScene" uid="uid://bgio7muqck2bu" path="res://sources/utils/auto_size_label.tscn" id="4_26xiq"] [ext_resource type="PackedScene" uid="uid://bgio7muqck2bu" path="res://sources/utils/auto_size_label.tscn" id="4_26xiq"]
[ext_resource type="Texture2D" uid="uid://c34sgkbvr3h8q" path="res://assets/minigames/minigame_ui/graphic/primary_text_box.png" id="6_ah5ir"] [ext_resource type="Texture2D" uid="uid://c34sgkbvr3h8q" path="res://assets/minigames/minigame_ui/graphic/primary_text_box.png" id="6_ah5ir"]
[ext_resource type="SpriteFrames" uid="uid://033w5t1wyg3w" path="res://sources/minigames/jellyfish/blue_jellyfish_animations_arms.tres" id="6_i86t4"] [ext_resource type="SpriteFrames" uid="uid://dijfxjt76waan" path="res://sources/minigames/jellyfish/pink_jellyfish_animations_body.tres" id="6_jfr88"]
[ext_resource type="SpriteFrames" uid="uid://cyllu3lpjcxej" path="res://sources/minigames/jellyfish/blue_jellyfish_animations_body.tres" id="6_p6hdi"]
[ext_resource type="PackedScene" uid="uid://dlmbxcgiv8tpr" path="res://sources/utils/fx/wrong.tscn" id="6_w1tlu"] [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="9_ah5ir"] [ext_resource type="LabelSettings" uid="uid://bguqnhiblwick" path="res://resources/themes/minigames_label_settings.tres" id="9_ah5ir"]
[ext_resource type="SpriteFrames" uid="uid://cu631qur8h6sj" path="res://sources/minigames/jellyfish/pink_jellyfish_animations_arms.tres" id="11_4yskd"]
[ext_resource type="PackedScene" uid="uid://cs6g7fhc0bjvh" path="res://sources/utils/fx/right_stars.tscn" id="13_jfr88"] [ext_resource type="PackedScene" uid="uid://cs6g7fhc0bjvh" path="res://sources/utils/fx/right_stars.tscn" id="13_jfr88"]
[node name="Jellyfish" type="Control" unique_id=2036427610] [node name="Jellyfish" type="Control" unique_id=2036427610]
@@ -19,8 +19,9 @@ layout_mode = 3
anchors_preset = 0 anchors_preset = 0
offset_right = 400.0 offset_right = 400.0
offset_bottom = 400.0 offset_bottom = 400.0
scale = Vector2(1.157944, 1.157944) scale = Vector2(1.2724898, 1.2724898)
script = ExtResource("1_06uwq") script = ExtResource("1_06uwq")
color = 1
[node name="BackFX" type="Control" parent="." unique_id=880451279] [node name="BackFX" type="Control" parent="." unique_id=880451279]
custom_minimum_size = Vector2(0, 220) custom_minimum_size = Vector2(0, 220)
@@ -82,9 +83,9 @@ sprites = [NodePath("AnimatedSprite2D_Body"), NodePath("AnimatedSprite2D_Arms")]
[node name="AnimatedSprite2D_Body" type="AnimatedSprite2D" parent="SpriteControl" unique_id=220917894] [node name="AnimatedSprite2D_Body" type="AnimatedSprite2D" parent="SpriteControl" unique_id=220917894]
unique_name_in_owner = true unique_name_in_owner = true
scale = Vector2(0.5, 0.5) scale = Vector2(0.5, 0.5)
sprite_frames = ExtResource("6_p6hdi") sprite_frames = ExtResource("6_jfr88")
animation = &"idle" animation = &"idle"
frame_progress = 0.33819497 frame_progress = 0.7250104
centered = false centered = false
offset = Vector2(-0.000205994, 0.00019455) offset = Vector2(-0.000205994, 0.00019455)
@@ -117,7 +118,7 @@ layout_mode = 2
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
[node name="Label" parent="SpriteControl/TextBox_Sprite2D/PercentMarginContainer/AspectRatioContainer/AutoSizeLabel" index="0"] [node name="Label" parent="SpriteControl/TextBox_Sprite2D/PercentMarginContainer/AspectRatioContainer/AutoSizeLabel" index="0" unique_id=1172353947]
theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_colors/font_color = Color(0, 0, 0, 1)
text = "" text = ""
label_settings = ExtResource("9_ah5ir") label_settings = ExtResource("9_ah5ir")
@@ -125,8 +126,9 @@ label_settings = ExtResource("9_ah5ir")
[node name="AnimatedSprite2D_Arms" type="AnimatedSprite2D" parent="SpriteControl" unique_id=1825015543] [node name="AnimatedSprite2D_Arms" type="AnimatedSprite2D" parent="SpriteControl" unique_id=1825015543]
unique_name_in_owner = true unique_name_in_owner = true
scale = Vector2(0.5, 0.5) scale = Vector2(0.5, 0.5)
sprite_frames = ExtResource("6_i86t4") sprite_frames = ExtResource("11_4yskd")
animation = &"idle" animation = &"idle"
frame_progress = 0.7250104
centered = false centered = false
offset = Vector2(-0.000205994, 0.00019455) offset = Vector2(-0.000205994, 0.00019455)
+10 -1
View File
@@ -1,4 +1,3 @@
@tool
class_name Monkey class_name Monkey
extends Node2D extends Node2D
@@ -133,3 +132,13 @@ func _drop_data(_at_position: Vector2, data: Dictionary) -> void:
func _on_drag_preview_tree_exiting() -> void: func _on_drag_preview_tree_exiting() -> void:
coconut.show() coconut.show()
func idle_boss() -> void:
animated_sprite_2d.play("idle")
animated_sprite_2d.stop()
coconut.hide()
func victory_boss() -> void:
animated_sprite_2d.play("idle")
+11
View File
@@ -135,3 +135,14 @@ func wrong() -> void:
text_box_sprite_2d.self_modulate = Minigame.LABEL_COLOR_NEUTRAL text_box_sprite_2d.self_modulate = Minigame.LABEL_COLOR_NEUTRAL
wrong_fx.play() wrong_fx.play()
await wrong_fx.finished await wrong_fx.finished
func idle_boss() -> void:
text_box_sprite_2d.hide()
color = Colors.Green
animated_sprite.play("idle_front")
animated_sprite.stop()
func victory_boss() -> void:
animated_sprite.play("happy")
+2 -2
View File
@@ -71,7 +71,7 @@ layout_mode = 2
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
[node name="Label" parent="TextBox_Sprite2D/PercentMarginContainer/AspectRatioContainer/AutoSizeLabel" index="0"] [node name="Label" parent="TextBox_Sprite2D/PercentMarginContainer/AspectRatioContainer/AutoSizeLabel" index="0" unique_id=1172353947]
theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_colors/font_color = Color(0, 0, 0, 1)
text = "" text = ""
label_settings = SubResource("LabelSettings_thibt") label_settings = SubResource("LabelSettings_thibt")
@@ -79,7 +79,7 @@ label_settings = SubResource("LabelSettings_thibt")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1157745331] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1157745331]
scale = Vector2(2, 2) scale = Vector2(2, 2)
sprite_frames = ExtResource("2_k0dcm") sprite_frames = ExtResource("2_k0dcm")
animation = &"sad" animation = &"idle_front"
autoplay = "idle_front" autoplay = "idle_front"
offset = Vector2(2.08165e-12, -82) offset = Vector2(2.08165e-12, -82)
@@ -7,7 +7,7 @@
[ext_resource type="Texture2D" uid="uid://pj0mlw24jayt" path="res://assets/minigames/parakeets/graphic/background_2.png" id="6_6ktwy"] [ext_resource type="Texture2D" uid="uid://pj0mlw24jayt" path="res://assets/minigames/parakeets/graphic/background_2.png" id="6_6ktwy"]
[ext_resource type="Texture2D" uid="uid://di2qcv6jw8wh0" path="res://assets/minigames/parakeets/graphic/gauge_icon_parakeet_full.png" id="6_46vnr"] [ext_resource type="Texture2D" uid="uid://di2qcv6jw8wh0" path="res://assets/minigames/parakeets/graphic/gauge_icon_parakeet_full.png" id="6_46vnr"]
[ext_resource type="Texture2D" uid="uid://cs16kbsvnsltg" path="res://assets/minigames/parakeets/graphic/background_3.png" id="7_k6xou"] [ext_resource type="Texture2D" uid="uid://cs16kbsvnsltg" path="res://assets/minigames/parakeets/graphic/background_3.png" id="7_k6xou"]
[ext_resource type="Script" uid="uid://cgtd34f7vi2tj" path="res://sources/minigames/parakeets/clouds_manager.gd" id="8_cy1rn"] [ext_resource type="Script" uid="uid://cgtd34f7vi2tj" path="res://sources/utils/clouds_manager.gd" id="8_cy1rn"]
[ext_resource type="Texture2D" uid="uid://0p171y6thba8" path="res://assets/minigames/parakeets/graphic/tree.png" id="8_g6pid"] [ext_resource type="Texture2D" uid="uid://0p171y6thba8" path="res://assets/minigames/parakeets/graphic/tree.png" id="8_g6pid"]
[ext_resource type="Texture2D" uid="uid://ca2jljrk2wnjt" path="res://assets/minigames/parakeets/graphic/nest.png" id="9_0u6jo"] [ext_resource type="Texture2D" uid="uid://ca2jljrk2wnjt" path="res://assets/minigames/parakeets/graphic/nest.png" id="9_0u6jo"]
[ext_resource type="Texture2D" uid="uid://rx270y4n7tul" path="res://assets/minigames/parakeets/graphic/cloud_1.png" id="9_6ktwy"] [ext_resource type="Texture2D" uid="uid://rx270y4n7tul" path="res://assets/minigames/parakeets/graphic/cloud_1.png" id="9_6ktwy"]
+8
View File
@@ -49,3 +49,11 @@ func throw(pos: Vector2) -> void:
idle() idle()
#endregion #endregion
func idle_boss() -> void:
animated_sprite.play("idle")
animated_sprite.stop()
func victory_boss() -> void:
animated_sprite.play("happy")
+8
View File
@@ -187,3 +187,11 @@ func _on_body_area_area_entered(_area: Area2D) -> void:
disappear() disappear()
#endregion #endregion
func idle_boss() -> void:
sprite.play("swim")
sprite.stop()
func victory_boss() -> void:
sprite.play("swim")
+1 -2
View File
@@ -78,7 +78,7 @@ unique_name_in_owner = true
position = Vector2(0, -16) position = Vector2(0, -16)
scale = Vector2(0.8, 0.8) scale = Vector2(0.8, 0.8)
sprite_frames = ExtResource("5_xbpgw") sprite_frames = ExtResource("5_xbpgw")
animation = &"defeat" animation = &"swim"
autoplay = "swim" autoplay = "swim"
[node name="Sprite2D_Back" type="Sprite2D" parent="Body/AnimatedSprite2D" unique_id=1980717066] [node name="Sprite2D_Back" type="Sprite2D" parent="Body/AnimatedSprite2D" unique_id=1980717066]
@@ -114,7 +114,6 @@ offset_left = -64.0
offset_top = -88.0 offset_top = -88.0
offset_right = 72.0 offset_right = 72.0
offset_bottom = 72.0 offset_bottom = 72.0
text = "ch"
label_settings = ExtResource("6_8k7c6") label_settings = ExtResource("6_8k7c6")
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
-1
View File
@@ -1,4 +1,3 @@
@tool
class_name SpriteControl class_name SpriteControl
extends Control extends Control