Finishes spawning of turtles. Adds interactions between turtles and the island
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bxbs8osui2o8f"
|
||||
path="res://.godot/imported/turtles_mask.png-20f05d7972f96ab47bc204fca2e3e93d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/minigames/turtles/graphic/turtles_mask.png"
|
||||
dest_files=["res://.godot/imported/turtles_mask.png-20f05d7972f96ab47bc204fca2e3e93d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -3,7 +3,6 @@ class_name Island
|
||||
|
||||
@onready var label : Label = $Label
|
||||
|
||||
|
||||
func _on_area_entered(area):
|
||||
print(area)
|
||||
print(area.owner)
|
||||
var stimulus: Dictionary:
|
||||
set(value):
|
||||
label.text = "_".repeat(stimulus.Word.length())
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://c3i6riv7blkux" path="res://assets/minigames/turtles/graphic/turtle_Island.png" id="1_shxj4"]
|
||||
|
||||
[node name="Island" type="Area2D"]
|
||||
collision_layer = 0
|
||||
script = ExtResource("1_bl1e4")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
@@ -20,7 +21,6 @@ horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
|
||||
position = Vector2(0, 8)
|
||||
scale = Vector2(2, 2)
|
||||
polygon = PackedVector2Array(144, -148, 176, -124, 192, -100, 204, -84, 220, -52, 228, -20, 228, 20, 216, 56, 196, 84, 172, 108, 152, 120, 120, 132, 76, 144, 36, 148, -40, 156, -8, 152, -56, 160, -72, 160, -88, 160, -112, 152, -132, 144, -152, 136, -168, 124, -200, 100, -220, 72, -228, 36, -224, 4, -200, -28, -164, -52, -120, -68, -72, -80, -24, -132, 8, -152, 56, -164, 100, -160)
|
||||
|
||||
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||
polygon = PackedVector2Array(136, -124, 160, -104, 180, -80, 196, -36, 196, 12, 184, 56, 156, 88, 104, 112, 72, 124, 24, 128, -56, 128, -104, 124, -140, 116, -180, 92, -196, 68, -200, 24, -180, -12, -156, -28, -120, -36, -76, -52, -48, -72, -4, -116, 44, -140, 92, -140)
|
||||
|
||||
@@ -6,21 +6,20 @@ signal animation_changed(position: Vector2)
|
||||
@onready var body: Node2D = $Body
|
||||
@onready var sprite: AnimatedSprite2D = $Body/AnimatedSprite2D
|
||||
@onready var label: Label = $Label
|
||||
@onready var head_area: Area2D = %HeadArea
|
||||
@onready var body_area: Area2D = %BodyArea
|
||||
@onready var head_area_collision_shape: CollisionShape2D = $Body/HeadArea/CollisionShape2D
|
||||
@onready var body_area_collision_shape: CollisionShape2D = $Body/BodyArea/CollisionShape2D
|
||||
@onready var highlight_fx: HighlightFX = $HighlightFX
|
||||
@onready var right_fx: RightFX = $RightFX
|
||||
@onready var wrong_fx: WrongFX = $WrongFX
|
||||
|
||||
@onready var button: Button = $Button
|
||||
|
||||
var velocity: float = 0.
|
||||
var direction: Vector2 = Vector2(0,-1):
|
||||
set = _set_direction
|
||||
|
||||
var is_moving: bool = true
|
||||
|
||||
func _process(delta):
|
||||
position = position + velocity * delta * direction
|
||||
if is_moving:
|
||||
position += velocity * delta * direction
|
||||
|
||||
|
||||
func _set_direction(new_direction: Vector2) -> void:
|
||||
@@ -53,20 +52,24 @@ func highlight(value: bool = true) -> void:
|
||||
|
||||
|
||||
func right() -> void:
|
||||
is_moving = false
|
||||
sprite.play("victory")
|
||||
right_fx.play()
|
||||
await right_fx.finished
|
||||
|
||||
|
||||
func wrong() -> void:
|
||||
is_moving = false
|
||||
wrong_fx.play()
|
||||
await wrong_fx.finished
|
||||
|
||||
|
||||
func disappear() -> void:
|
||||
is_moving = false
|
||||
head_area_collision_shape.set_deferred("disabled", true)
|
||||
body_area_collision_shape.set_deferred("disabled", true)
|
||||
sprite.play("disappear")
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Connections
|
||||
@@ -90,4 +93,8 @@ func _on_animated_sprite_2d_animation_finished():
|
||||
func _on_visible_on_screen_notifier_2d_screen_exited():
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_body_area_area_entered(area):
|
||||
disappear()
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[gd_scene load_steps=45 format=3 uid="uid://djykrpdu58f3v"]
|
||||
|
||||
[ext_resource type="Script" path="res://sources/utils/fx/highlight.gd" id="1_fpcej"]
|
||||
[ext_resource type="Texture2D" uid="uid://bi8db32muvyqp" path="res://assets/minigames/turtles/graphic/turtle_disappears_0000.png" id="1_phg5d"]
|
||||
[ext_resource type="Script" path="res://sources/minigames/turtles/turtle.gd" id="1_vx1yr"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn2rw06pltyiu" path="res://sources/utils/fx/right.tscn" id="2_dmkbj"]
|
||||
[ext_resource type="Texture2D" uid="uid://b04s06613lgyo" path="res://assets/minigames/turtles/graphic/turtle_disappears_0001.png" id="2_qodey"]
|
||||
[ext_resource type="PackedScene" uid="uid://cge0uyn30tcpv" path="res://sources/utils/fx/highlight.tscn" id="2_rllc5"]
|
||||
[ext_resource type="Texture2D" uid="uid://dncvc4dkurogg" path="res://assets/minigames/turtles/graphic/turtle_disappears_0002.png" id="3_pinqg"]
|
||||
[ext_resource type="Texture2D" uid="uid://dvwkb0orntj6j" path="res://assets/minigames/turtles/graphic/turtle_disappears_0003.png" id="4_bk8j5"]
|
||||
[ext_resource type="Texture2D" uid="uid://18okbnsktp37" path="res://assets/minigames/turtles/graphic/turtle_disappears_0004.png" id="5_1gjjo"]
|
||||
@@ -35,11 +35,11 @@
|
||||
[ext_resource type="Texture2D" uid="uid://30w5sssd8c1e" path="res://assets/minigames/turtles/graphic/turtle_swim_right_0007.png" id="38_dmtwb"]
|
||||
[ext_resource type="Texture2D" uid="uid://c5kar2p8ae8yu" path="res://assets/minigames/turtles/graphic/turtle_victory_0000.png" id="39_a8d4f"]
|
||||
[ext_resource type="Texture2D" uid="uid://pcty3etq3036" path="res://assets/minigames/turtles/graphic/turtle_victory_0001.png" id="40_rg80s"]
|
||||
[ext_resource type="PackedScene" uid="uid://dlmbxcgiv8tpr" path="res://sources/utils/fx/wrong.tscn" id="40_vguhy"]
|
||||
[ext_resource type="Texture2D" uid="uid://bg6603ct43g00" path="res://assets/minigames/turtles/graphic/turtle_victory_0002.png" id="41_hkvwr"]
|
||||
[ext_resource type="Texture2D" uid="uid://25h5xdesr8mk" path="res://assets/minigames/turtles/graphic/turtle_victory_0003.png" id="42_1is74"]
|
||||
[ext_resource type="Texture2D" uid="uid://vgqt4v6pgerb" path="res://assets/minigames/turtles/graphic/turtle_victory_0004.png" id="43_lvi8j"]
|
||||
[ext_resource type="Texture2D" uid="uid://64w00rvu3xfe" path="res://assets/minigames/turtles/graphic/turtle_victory_0005.png" id="44_w2vrc"]
|
||||
[ext_resource type="Script" path="res://sources/utils/fx/wrong.gd" id="47_d8u8j"]
|
||||
[ext_resource type="PackedScene" uid="uid://cjg6pgc7yfp1p" path="res://sources/utils/swipe_detector.tscn" id="49_0qwwy"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_1emmd"]
|
||||
@@ -123,7 +123,7 @@ animations = [{
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"swim_left",
|
||||
"speed": 12.0
|
||||
"speed": 18.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
@@ -152,7 +152,7 @@ animations = [{
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"swim_right",
|
||||
"speed": 12.0
|
||||
"speed": 18.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
@@ -179,20 +179,17 @@ animations = [{
|
||||
}]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_uo0u3"]
|
||||
radius = 40.0
|
||||
height = 112.0
|
||||
radius = 24.0
|
||||
height = 80.0
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_xsnve"]
|
||||
radius = 112.0
|
||||
height = 256.0
|
||||
radius = 88.0
|
||||
height = 224.0
|
||||
|
||||
[node name="Turtle" type="Node2D"]
|
||||
script = ExtResource("1_vx1yr")
|
||||
|
||||
[node name="HighlightFX" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("1_fpcej")
|
||||
[node name="HighlightFX" parent="." instance=ExtResource("2_rllc5")]
|
||||
|
||||
[node name="RightFX" parent="." instance=ExtResource("2_dmkbj")]
|
||||
|
||||
@@ -200,44 +197,46 @@ script = ExtResource("1_fpcej")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Body"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -16)
|
||||
scale = Vector2(2, 2)
|
||||
sprite_frames = SubResource("SpriteFrames_1emmd")
|
||||
animation = &"disappear"
|
||||
autoplay = "swim"
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="Body"]
|
||||
position = Vector2(0, 16)
|
||||
|
||||
[node name="HeadArea" type="Area2D" parent="Body"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -16)
|
||||
collision_mask = 0
|
||||
monitoring = false
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Body/HeadArea"]
|
||||
position = Vector2(0, -160)
|
||||
position = Vector2(0, -152)
|
||||
shape = SubResource("CapsuleShape2D_uo0u3")
|
||||
debug_color = Color(0.129412, 0.458824, 0, 0.505882)
|
||||
|
||||
[node name="BodyArea" type="Area2D" parent="Body"]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -16)
|
||||
collision_layer = 0
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Body/BodyArea"]
|
||||
position = Vector2(0, 32)
|
||||
shape = SubResource("CapsuleShape2D_xsnve")
|
||||
debug_color = Color(0.870588, 0.117647, 0, 0.388235)
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="Body"]
|
||||
position = Vector2(0, 256)
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
offset_left = -64.0
|
||||
offset_top = -64.0
|
||||
offset_top = -88.0
|
||||
offset_right = 64.0
|
||||
offset_bottom = 96.0
|
||||
offset_bottom = 72.0
|
||||
theme_override_font_sizes/font_size = 92
|
||||
text = "ent"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="WrongFX" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("47_d8u8j")
|
||||
[node name="WrongFX" parent="." instance=ExtResource("40_vguhy")]
|
||||
|
||||
[node name="SwipeDetector" parent="." instance=ExtResource("49_0qwwy")]
|
||||
offset_left = -152.0
|
||||
@@ -248,4 +247,5 @@ offset_bottom = 192.0
|
||||
[connection signal="animation_changed" from="Body/AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_changed"]
|
||||
[connection signal="animation_finished" from="Body/AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_finished"]
|
||||
[connection signal="screen_exited" from="Body/VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"]
|
||||
[connection signal="area_entered" from="Body/BodyArea" to="." method="_on_body_area_area_entered"]
|
||||
[connection signal="swipe" from="SwipeDetector" to="." method="_on_swipe_detector_swipe"]
|
||||
|
||||
@@ -29,7 +29,7 @@ var difficulty_settings: Array[DifficultySettings] = [
|
||||
|
||||
@onready var water: TextureRect = $GameRoot/Water
|
||||
@onready var island: Island = $GameRoot/Island
|
||||
@onready var turtles: Control = $GameRoot/Turtles
|
||||
@onready var turtles: Control = %Turtles
|
||||
@onready var spawn_location: PathFollow2D = $GameRoot/SpawnPath/SpawnLocation
|
||||
@onready var spawn_timer: Timer = $GameRoot/SpawnTimer
|
||||
|
||||
@@ -39,7 +39,6 @@ var turtle_count: int = 0:
|
||||
if turtle_count >= max_turtle_count and value < max_turtle_count:
|
||||
can_spawn_turtle.emit()
|
||||
turtle_count = value
|
||||
var last_spawn_location_ratio: float
|
||||
|
||||
# Find and set the parameters of the minigame, like the number of lives or the victory conditions.
|
||||
func _setup_minigame() -> void:
|
||||
@@ -56,11 +55,11 @@ func _setup_minigame() -> void:
|
||||
|
||||
func _start() -> void:
|
||||
super._start()
|
||||
spawn_timer.start()
|
||||
_on_spawn_timer_timeout()
|
||||
|
||||
|
||||
func _spawn_water_ring(position: Vector2):
|
||||
print(position)
|
||||
#print(position)
|
||||
pass
|
||||
|
||||
|
||||
@@ -76,11 +75,13 @@ func _on_spawn_timer_timeout():
|
||||
var position_found: bool = false
|
||||
while not position_found:
|
||||
spawn_location.progress_ratio = randf()
|
||||
|
||||
var all_position_ok: bool = true
|
||||
# Check if there are other turtles near
|
||||
for other_turtle: Turtle in turtles.get_children():
|
||||
if other_turtle.position.distance_to(spawn_location.position) < 4:
|
||||
if other_turtle.position.distance_squared_to(spawn_location.position) < 250000:
|
||||
all_position_ok = false
|
||||
break
|
||||
position_found = all_position_ok
|
||||
|
||||
turtle.position = spawn_location.position
|
||||
turtle.velocity = settings.velocity
|
||||
@@ -103,4 +104,15 @@ func _on_spawn_timer_timeout():
|
||||
|
||||
# Restarts timer
|
||||
spawn_timer.start()
|
||||
|
||||
|
||||
func _on_island_area_entered(area):
|
||||
var turtle = area.owner as Turtle
|
||||
if not turtle:
|
||||
return
|
||||
|
||||
# Check if the turtle is a distractor or the awaited GP TODO
|
||||
await turtle.wrong()
|
||||
|
||||
# Make the turtle disappear
|
||||
turtle.disappear()
|
||||
|
||||
@@ -16,6 +16,7 @@ point_count = 5
|
||||
|
||||
[node name="TurtlesMinigame" instance=ExtResource("1_geqym")]
|
||||
script = ExtResource("2_f5de7")
|
||||
difficulty = 1
|
||||
minigame_number = 1
|
||||
max_number_of_lives = 5
|
||||
max_progression = 5
|
||||
@@ -38,6 +39,7 @@ texture = ExtResource("6_l6je2")
|
||||
position = Vector2(1280, 830)
|
||||
|
||||
[node name="Turtles" type="Control" parent="GameRoot" index="2"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -54,4 +56,5 @@ position = Vector2(-256, -256)
|
||||
[node name="SpawnTimer" type="Timer" parent="GameRoot" index="4"]
|
||||
one_shot = true
|
||||
|
||||
[connection signal="area_entered" from="GameRoot/Island" to="." method="_on_island_area_entered"]
|
||||
[connection signal="timeout" from="GameRoot/SpawnTimer" to="." method="_on_spawn_timer_timeout"]
|
||||
|
||||
@@ -7,6 +7,6 @@ shader = ExtResource("1_3btqb")
|
||||
shader_parameter/WATER_COL = Color(0.352941, 0.713726, 0.67451, 1)
|
||||
shader_parameter/WATER2_COL = Color(0.329412, 0.670588, 0.619608, 1)
|
||||
shader_parameter/FOAM_COL = Color(0.65098, 0.882353, 0.847059, 1)
|
||||
shader_parameter/distortion_speed = 0.66
|
||||
shader_parameter/distortion_speed = 0.75
|
||||
shader_parameter/tile = Vector2(0.4, 0.4)
|
||||
shader_parameter/offset = Vector2(0, 0)
|
||||
|
||||
Reference in New Issue
Block a user