[gd_scene load_steps=24 format=3 uid="uid://bdirphnfabey8"]

[ext_resource type="Texture2D" uid="uid://dbq7oso3fo4n6" path="res://Assets/Sprites/Enemies/CheepCheep.png" id="1_123qd"]
[ext_resource type="Script" uid="uid://b475vfhcp2f30" path="res://Scripts/Classes/Entities/Enemies/SwimmingCheepCheep.gd" id="1_a3qb1"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="3_1gkhc"]
[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="3_a5qfu"]
[ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="4_1gkhc"]
[ext_resource type="Script" uid="uid://dri2d5jtu0fbq" path="res://Scripts/Classes/Components/FireballDetection.gd" id="4_cd02n"]
[ext_resource type="JSON" path="res://Assets/Sprites/Enemies/GreenCheepCheep.json" id="5_8m1k0"]
[ext_resource type="Script" uid="uid://c3gg32ivrlq8n" path="res://Scripts/Classes/Components/GibSpawner.gd" id="5_qwki7"]
[ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="6_qwki7"]
[ext_resource type="Script" uid="uid://d4a7yp6e55u8t" path="res://Scripts/Classes/Components/TrackJoint.gd" id="10_8m1k0"]
[ext_resource type="Script" uid="uid://ctfbuoxtnnl0q" path="res://Scripts/Classes/Components/EditorPropertyExposer.gd" id="11_21r3x"]
[ext_resource type="Script" uid="uid://b8vmbtoaaq5nc" path="res://Scripts/Parts/EditorToggleDetection.gd" id="12_si7cd"]
[ext_resource type="Script" uid="uid://ba18grqjixded" path="res://Scripts/Classes/Components/ExplosionDetection.gd" id="13_m2mkg"]

[sub_resource type="AtlasTexture" id="AtlasTexture_si7cd"]
atlas = ExtResource("1_123qd")
region = Rect2(0, 0, 16, 16)

[sub_resource type="AtlasTexture" id="AtlasTexture_m2mkg"]
atlas = ExtResource("1_123qd")
region = Rect2(16, 0, 16, 16)

[sub_resource type="SpriteFrames" id="SpriteFrames_pyihc"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_si7cd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m2mkg")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]

[sub_resource type="RectangleShape2D" id="RectangleShape2D_cd02n"]
size = Vector2(10, 10)

[sub_resource type="Animation" id="Animation_a3qb1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}

[sub_resource type="Animation" id="Animation_iib8n"]
resource_name = "Swim"
length = 0.4
loop_mode = 1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 1]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_a5qfu"]
_data = {
&"RESET": SubResource("Animation_a3qb1"),
&"Swim": SubResource("Animation_iib8n")
}

[sub_resource type="Animation" id="Animation_b7un4"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -8)]
}

[sub_resource type="Animation" id="Animation_qwki7"]
resource_name = "Wave"
length = 2.0
loop_mode = 2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(0, -16), Vector2(0, -8), Vector2(0, 0)]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_reflr"]
_data = {
&"RESET": SubResource("Animation_b7un4"),
&"Wave": SubResource("Animation_qwki7")
}

[node name="CheepCheep" type="CharacterBody2D" node_paths=PackedStringArray("on_screen_enabler", "score_note_adder") groups=["Enemies"]]
script = ExtResource("1_a3qb1")
on_screen_enabler = NodePath("Sprite/VisibleOnScreenEnabler2D")
score_note_adder = NodePath("ScoreNoteSpawner")

[node name="Sprite" type="AnimatedSprite2D" parent="."]
position = Vector2(0, -8)
scale = Vector2(-1, 1)
sprite_frames = SubResource("SpriteFrames_pyihc")
flip_h = true
script = ExtResource("3_1gkhc")
metadata/_custom_type_script = "uid://caq1qiwmy0mox"

[node name="Hitbox" type="Area2D" parent="Sprite"]
position = Vector2(0, 8)
rotation = 3.14159
scale = Vector2(1, -1)

[node name="Collision" type="CollisionShape2D" parent="Sprite/Hitbox"]
position = Vector2(0, -8)
shape = SubResource("RectangleShape2D_cd02n")

[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="Sprite"]
rotation = 3.14159
scale = Vector2(1, -1)
enable_node_path = NodePath("../..")

[node name="ResourceSetterNew" type="Node" parent="Sprite" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("4_1gkhc")
node_to_affect = NodePath("..")
property_name = "sprite_frames"
resource_json = ExtResource("5_8m1k0")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik"

[node name="Animations" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_a5qfu")
}
autoplay = "Swim"

[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("3_a5qfu")
hitbox = NodePath("../Sprite/Hitbox")
metadata/_custom_type_script = "uid://chj8hu207lrh"

[node name="WaveAnimations" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_reflr")
}

[node name="FireballDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("4_cd02n")
hitbox = NodePath("../Sprite/Hitbox")
metadata/_custom_type_script = "uid://dri2d5jtu0fbq"

[node name="GibSpawner" type="Node" parent="." node_paths=PackedStringArray("visuals")]
script = ExtResource("5_qwki7")
visuals = NodePath("../Sprite")
metadata/_custom_type_script = "uid://c3gg32ivrlq8n"

[node name="ScoreNoteSpawner" type="Node" parent="."]
script = ExtResource("6_qwki7")
add_score = true
metadata/_custom_type_script = "uid://5octqlf4ohel"

[node name="TrackJoint" type="Node" parent="."]
script = ExtResource("10_8m1k0")
metadata/_custom_type_script = "uid://d4a7yp6e55u8t"

[node name="PropertyExposer" type="Node" parent="."]
script = ExtResource("11_21r3x")
properties = Array[String](["movement_type"])
metadata/_custom_type_script = "uid://ctfbuoxtnnl0q"

[node name="LevelEditorToggleDetection" type="Node" parent="."]
script = ExtResource("12_si7cd")
metadata/_custom_type_script = "uid://b8vmbtoaaq5nc"

[node name="ExplosionDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("13_m2mkg")
hitbox = NodePath("../Sprite/Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded"

[connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"]
[connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
[connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="toggled" from="LevelEditorToggleDetection" to="." method="_ready"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]
[connection signal="explosion_entered" from="ExplosionDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
