Update Dog entity with new textures and animations. Add Level 4 scene with game elements and UI components.

This commit is contained in:
Dan 2024-05-11 17:32:57 +01:00
parent f4e2169009
commit 11f8c1d815
14 changed files with 432 additions and 9 deletions

View file

@ -1,6 +1,78 @@
[gd_scene load_steps=3 format=3 uid="uid://cfhoi2rqxa3up"]
[gd_scene load_steps=8 format=3 uid="uid://cfhoi2rqxa3up"]
[ext_resource type="Script" path="res://scenes/scripts/dog.gd" id="1_26pvc"]
[ext_resource type="Texture2D" uid="uid://cqs2lfakkpqib" path="res://resources/textures/dog_body.png" id="2_mewoo"]
[ext_resource type="Texture2D" uid="uid://b22isfr66b8y2" path="res://resources/textures/dog_head.png" id="3_d7db6"]
[ext_resource type="Texture2D" uid="uid://bwxbit5i2x2ti" path="res://resources/textures/dog_tail.png" id="4_odrmk"]
[sub_resource type="Animation" id="Animation_y6mxj"]
resource_name = "Idle"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DogSprite/DogTail:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [-0.10472, 0.10472, -0.10472]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DogSprite/DogHead:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.4, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [0.0349066, -0.0349066, 0.0349066]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DogSprite/DogBody:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.04, 1), Vector2(1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DogShadow/DogBody:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.6, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.04, 1), Vector2(1, 1)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DogShadow/DogTail:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [-0.10472, 0.10472, -0.10472]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2ki86"]
_data = {
"Idle": SubResource("Animation_y6mxj")
}
[sub_resource type="CircleShape2D" id="CircleShape2D_eyufl"]
radius = 191.83
@ -9,13 +81,55 @@ radius = 191.83
position = Vector2(-5, -1)
script = ExtResource("1_26pvc")
[node name="DogGraphic" type="Polygon2D" parent="."]
position = Vector2(4, 28)
color = Color(0.803922, 0.407843, 0.239216, 1)
offset = Vector2(0, -15)
polygon = PackedVector2Array(17, -32, 57, -45, 51, 27, 29, -5, 31, 27, 15, 57, -15, 55, -29, 31, -23, -9, -51, 25, -53, -43, -17, -32)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_2ki86")
}
autoplay = "Idle"
[node name="DeathBox" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="DeathBox"]
shape = SubResource("CircleShape2D_eyufl")
[node name="DogShadow" type="Node2D" parent="."]
modulate = Color(0, 0, 0, 0.0392157)
position = Vector2(10, 10)
rotation = 1.5708
scale = Vector2(0.4, 0.4)
[node name="DogBody" type="Sprite2D" parent="DogShadow"]
scale = Vector2(1.03986, 1)
texture = ExtResource("2_mewoo")
[node name="DogHead" type="Sprite2D" parent="DogShadow"]
position = Vector2(12.5, -165)
rotation = 0.0349066
texture = ExtResource("3_d7db6")
offset = Vector2(-2.5, -75)
[node name="DogTail" type="Sprite2D" parent="DogShadow"]
position = Vector2(2.50001, 205)
rotation = 0.0818845
texture = ExtResource("4_odrmk")
offset = Vector2(2.5, 67.5)
[node name="DogSprite" type="Node2D" parent="."]
rotation = 1.5708
scale = Vector2(0.4, 0.4)
[node name="DogBody" type="Sprite2D" parent="DogSprite"]
scale = Vector2(1.03986, 1)
texture = ExtResource("2_mewoo")
[node name="DogHead" type="Sprite2D" parent="DogSprite"]
position = Vector2(12.5, -165)
rotation = -0.0166864
texture = ExtResource("3_d7db6")
offset = Vector2(-2.5, -75)
[node name="DogTail" type="Sprite2D" parent="DogSprite"]
position = Vector2(5, 182.5)
rotation = 0.0818845
texture = ExtResource("4_odrmk")
offset = Vector2(2.5, 67.5)

185
levels/level_4.tscn Normal file
View file

@ -0,0 +1,185 @@
[gd_scene load_steps=17 format=3 uid="uid://byndd263rnk4q"]
[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_uldek"]
[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_41ccr"]
[ext_resource type="Resource" uid="uid://2xo8nkuq5g35" path="res://levels/rules/level_4_rules.tres" id="3_y0164"]
[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_2ulo2"]
[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_r4fbb"]
[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_4f8v1"]
[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_tlpqx"]
[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_fw2qi"]
[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_4looi"]
[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="11_m7gfp"]
[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="12_scxhi"]
[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="13_a7gm0"]
[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="14_6mygu"]
[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="15_vt473"]
[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="16_ams0s"]
[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="16_quoie"]
[node name="Level4" type="Node2D"]
script = ExtResource("1_uldek")
[node name="RulesComponent" parent="." instance=ExtResource("2_41ccr")]
unique_name_in_owner = true
game_rules = ExtResource("3_y0164")
[node name="Grass" parent="." instance=ExtResource("4_2ulo2")]
[node name="LevelDecor" type="Node" parent="."]
[node name="BushGroup" type="Node2D" parent="LevelDecor"]
position = Vector2(-243, -56)
[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")]
position = Vector2(1110, 28)
scale = Vector2(0.25, 0.25)
[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")]
position = Vector2(1272, 123)
scale = Vector2(0.25, 0.25)
[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")]
position = Vector2(1214, 47)
rotation = 0.60912
scale = Vector2(0.4, 0.4)
[node name="BushGroup4" type="Node2D" parent="LevelDecor"]
position = Vector2(8, -4)
[node name="Bush" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")]
position = Vector2(1110, 28)
scale = Vector2(0.25, 0.25)
[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")]
position = Vector2(1272, 123)
scale = Vector2(0.25, 0.25)
[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")]
position = Vector2(1214, 47)
rotation = 0.60912
scale = Vector2(0.4, 0.4)
[node name="BushGroup3" type="Node2D" parent="LevelDecor"]
position = Vector2(-928, 592)
scale = Vector2(0.75, 0.75)
[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")]
position = Vector2(1110, 28)
scale = Vector2(0.25, 0.25)
[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")]
position = Vector2(1272, 123)
scale = Vector2(0.25, 0.25)
[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")]
position = Vector2(1214, 47)
rotation = 0.60912
scale = Vector2(0.4, 0.4)
[node name="BushGroup2" type="Node2D" parent="LevelDecor"]
position = Vector2(1291, 1886)
rotation = 4.5012
[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")]
position = Vector2(1110, 28)
scale = Vector2(0.25, 0.25)
[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")]
position = Vector2(1272, 123)
scale = Vector2(0.25, 0.25)
[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")]
position = Vector2(1214, 47)
rotation = 0.60912
scale = Vector2(0.4, 0.4)
[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_4f8v1")]
position = Vector2(-41, 437)
scale = Vector2(0.6, 0.6)
[node name="Tree" parent="LevelDecor" instance=ExtResource("7_tlpqx")]
position = Vector2(217, 52)
scale = Vector2(0.6, 0.6)
[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_tlpqx")]
position = Vector2(1175, -35)
rotation = -0.42237
scale = Vector2(0.6, 0.6)
[node name="Mushrooms" type="Node2D" parent="LevelDecor"]
position = Vector2(-254, 571)
rotation = -0.60912
[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")]
position = Vector2(232, 250)
scale = Vector2(0.5, 0.5)
[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")]
position = Vector2(1209.52, 209.747)
scale = Vector2(0.5, 0.5)
[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")]
position = Vector2(252, 289)
rotation = 1.13446
scale = Vector2(0.3, 0.3)
[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")]
position = Vector2(260, 225)
rotation = 1.13446
scale = Vector2(0.3, 0.3)
[node name="Mushrooms2" type="Node2D" parent="LevelDecor"]
position = Vector2(1551, 802)
rotation = 2.81347
[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")]
position = Vector2(232, 250)
scale = Vector2(0.5, 0.5)
[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")]
position = Vector2(252, 289)
rotation = 1.13446
scale = Vector2(0.3, 0.3)
[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")]
position = Vector2(260, 225)
rotation = 1.13446
scale = Vector2(0.3, 0.3)
[node name="Flowers" parent="." instance=ExtResource("9_4looi")]
unique_name_in_owner = true
position = Vector2(1102, 298)
[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("11_m7gfp")]
unique_name_in_owner = true
position = Vector2(272, 427)
[node name="BeeSpawner" parent="." instance=ExtResource("12_scxhi")]
unique_name_in_owner = true
[node name="UiComponent" parent="." instance=ExtResource("13_a7gm0")]
unique_name_in_owner = true
z_index = 1000
offset_right = 1280.0
offset_bottom = 720.0
mouse_filter = 1
[node name="DroneManager" parent="." instance=ExtResource("14_6mygu")]
unique_name_in_owner = true
[node name="LevelCompleteComponent" parent="." instance=ExtResource("15_vt473")]
visible = false
z_index = 999
offset_right = 1280.0
offset_bottom = 720.0
[node name="GameOverComponent" parent="." instance=ExtResource("16_quoie")]
visible = false
z_index = 900
offset_right = 1280.0
offset_bottom = 720.0
[node name="Dog" parent="." instance=ExtResource("16_ams0s")]
position = Vector2(731, 309)
rotation = 0.844739

View file

@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://2xo8nkuq5g35"]
[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_c8fak"]
[resource]
script = ExtResource("1_c8fak")
level_number = 4
level_name = "Level Four"
level_description = "Hazard introduction - it's a dog!"
bees_available = 60
nectar_required = 100
level_par = 4
collector_enabled = true
dancer_enabled = true
director_enabled = false
distractor_enabled = true

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqs2lfakkpqib"
path="res://.godot/imported/dog_body.png-7f0c34de84d1923afb71c8aa6690a2ee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/dog_body.png"
dest_files=["res://.godot/imported/dog_body.png-7f0c34de84d1923afb71c8aa6690a2ee.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b22isfr66b8y2"
path="res://.godot/imported/dog_head.png-41d56191ef16a77c9231e0281d046a50.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/dog_head.png"
dest_files=["res://.godot/imported/dog_head.png-41d56191ef16a77c9231e0281d046a50.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwxbit5i2x2ti"
path="res://.godot/imported/dog_tail.png-e650e2e3f82fe30838198d1e84cae1fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/dog_tail.png"
dest_files=["res://.godot/imported/dog_tail.png-e650e2e3f82fe30838198d1e84cae1fc.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

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=19 format=3 uid="uid://cdk8rrve1fe3u"]
[gd_scene load_steps=20 format=3 uid="uid://cdk8rrve1fe3u"]
[ext_resource type="Script" path="res://scenes/scripts/main_menu.gd" id="1_ges7y"]
[ext_resource type="Resource" uid="uid://bn4qhonifxne3" path="res://levels/rules/main_menu.tres" id="2_4iepj"]
@ -16,6 +16,7 @@
[ext_resource type="PackedScene" uid="uid://cx7cunaspu08a" path="res://entities/DancerDrone.tscn" id="13_fi5ph"]
[ext_resource type="PackedScene" uid="uid://dqdi1tpoid80c" path="res://entities/CollectorDrone.tscn" id="14_qpr88"]
[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="14_swqxu"]
[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="19_a6u8t"]
[ext_resource type="Texture2D" uid="uid://15wckxixnr8y" path="res://resources/images/logo.png" id="19_jw5rd"]
[ext_resource type="Texture2D" uid="uid://c3tl5pihlrd8u" path="res://resources/cursors/navigation_s.png" id="20_fw4ew"]
@ -136,6 +137,11 @@ scale = Vector2(0.3, 0.3)
unique_name_in_owner = true
position = Vector2(1042, 458)
[node name="Dog" parent="." instance=ExtResource("19_a6u8t")]
position = Vector2(1034, 177)
rotation = 1.03149
distracted = true
[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_1lp5c")]
unique_name_in_owner = true
position = Vector2(306, 459)

View file

@ -5,7 +5,7 @@ class_name Dog
var acquired_target : Bee = null
var target_timer : float = 0.0
var distracted : bool = false
@export var distracted : bool = false
func _ready():
death_box.connect("body_entered", Callable(self, "_on_body_entered"))
@ -16,7 +16,7 @@ func _process(delta):
target_timer += delta
# Look at the target
rotation = lerp_angle(rotation, rotation + get_angle_to(acquired_target.global_position), 0.25)
rotation = lerp_angle(rotation, rotation + get_angle_to(acquired_target.global_position), 0.5)
if target_timer > 3.0:
# Kill the target!