diff --git a/entities/Dog.tscn b/entities/Dog.tscn index 648d180..e865f1c 100644 --- a/entities/Dog.tscn +++ b/entities/Dog.tscn @@ -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) diff --git a/levels/level_4.tscn b/levels/level_4.tscn new file mode 100644 index 0000000..8c6626e --- /dev/null +++ b/levels/level_4.tscn @@ -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 diff --git a/levels/rules/level_4_rules.tres b/levels/rules/level_4_rules.tres new file mode 100644 index 0000000..9b483a7 --- /dev/null +++ b/levels/rules/level_4_rules.tres @@ -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 diff --git a/resources/concept art/.scene design.kra-autosave.kra b/resources/concept art/.scene design.kra-autosave.kra new file mode 100644 index 0000000..93e3ca3 Binary files /dev/null and b/resources/concept art/.scene design.kra-autosave.kra differ diff --git a/resources/concept art/scene design.kra b/resources/concept art/scene design.kra index 2a0d81c..efaafe3 100644 Binary files a/resources/concept art/scene design.kra and b/resources/concept art/scene design.kra differ diff --git a/resources/concept art/scene design.kra~ b/resources/concept art/scene design.kra~ index 5bf442a..2a0d81c 100644 Binary files a/resources/concept art/scene design.kra~ and b/resources/concept art/scene design.kra~ differ diff --git a/resources/textures/dog_body.png b/resources/textures/dog_body.png new file mode 100644 index 0000000..0f3901f Binary files /dev/null and b/resources/textures/dog_body.png differ diff --git a/resources/textures/dog_body.png.import b/resources/textures/dog_body.png.import new file mode 100644 index 0000000..14f68bb --- /dev/null +++ b/resources/textures/dog_body.png.import @@ -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 diff --git a/resources/textures/dog_head.png b/resources/textures/dog_head.png new file mode 100644 index 0000000..ae847e2 Binary files /dev/null and b/resources/textures/dog_head.png differ diff --git a/resources/textures/dog_head.png.import b/resources/textures/dog_head.png.import new file mode 100644 index 0000000..d611c38 --- /dev/null +++ b/resources/textures/dog_head.png.import @@ -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 diff --git a/resources/textures/dog_tail.png b/resources/textures/dog_tail.png new file mode 100644 index 0000000..e287fc1 Binary files /dev/null and b/resources/textures/dog_tail.png differ diff --git a/resources/textures/dog_tail.png.import b/resources/textures/dog_tail.png.import new file mode 100644 index 0000000..7f8e0ce --- /dev/null +++ b/resources/textures/dog_tail.png.import @@ -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 diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index 7fcd19a..ed871d3 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -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) diff --git a/scenes/scripts/dog.gd b/scenes/scripts/dog.gd index 04df50b..f611d77 100644 --- a/scenes/scripts/dog.gd +++ b/scenes/scripts/dog.gd @@ -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!