diff --git a/.gitignore b/.gitignore index 70515d1..2828ca2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ .vscode/ build/ + +resources/concept art/ diff --git a/entities/DistractorDrone.tscn b/entities/DistractorDrone.tscn index dec4e6c..8c2ac5b 100644 --- a/entities/DistractorDrone.tscn +++ b/entities/DistractorDrone.tscn @@ -1,6 +1,66 @@ -[gd_scene load_steps=3 format=3 uid="uid://ss2dg1i7j4ck"] +[gd_scene load_steps=6 format=3 uid="uid://ss2dg1i7j4ck"] [ext_resource type="Script" path="res://entities/scripts/distractor_drone.gd" id="1_vnjar"] +[ext_resource type="Texture2D" uid="uid://cfufcbeeeg5oy" path="res://resources/textures/distractor_drone.png" id="2_dr1h4"] + +[sub_resource type="Animation" id="Animation_wno6f"] +resource_name = "Idle" +length = 5.0 +loop_mode = 1 +step = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DistractorDrone:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2.5, 5), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [30.0, -30.0, 30.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DistractorDrone:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1, 2.5, 4, 5), +"transitions": PackedFloat32Array(-2, -2, 1, -2, -2), +"update": 0, +"values": [0.0, 30.0, 0.0, 40.0, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DistractorDrone:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1, 2.5, 4, 5), +"transitions": PackedFloat32Array(-2, -2, -2, -2, -2), +"update": 0, +"values": [0.0, 0.0698132, -0.10472, 0.10472, 0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Shadow:position:x") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 2.5, 5), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [30.0, -30.0, 30.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_lcuxq"] +_data = { +"Idle": SubResource("Animation_wno6f") +} [sub_resource type="CircleShape2D" id="CircleShape2D_bxdlt"] radius = 31.0161 @@ -8,15 +68,28 @@ radius = 31.0161 [node name="DistractorDrone" type="CharacterBody2D" groups=["distractor"]] script = ExtResource("1_vnjar") -[node name="Shape2" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_bxdlt") +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_lcuxq") +} +autoplay = "Idle" -[node name="Polygon2D" type="Polygon2D" parent="."] -position = Vector2(1, -1) -color = Color(0.926224, 0.528901, 0.424107, 1) -polygon = PackedVector2Array(-28, -25, 25, -28, 26, 33, -32, 19) +[node name="DroneShape" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bxdlt") [node name="HitBox" type="Area2D" parent="."] [node name="Shape" type="CollisionShape2D" parent="HitBox"] shape = SubResource("CircleShape2D_bxdlt") + +[node name="DistractorDrone" type="Sprite2D" parent="."] +position = Vector2(28.6279, 5.71726) +rotation = 0.0149678 +scale = Vector2(0.2, 0.2) +texture = ExtResource("2_dr1h4") + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(28.6279, 100) +scale = Vector2(0.151346, 0.0434807) +texture = ExtResource("2_dr1h4") diff --git a/entities/scripts/distractor_drone.gd b/entities/scripts/distractor_drone.gd index 65f025a..64d7e23 100644 --- a/entities/scripts/distractor_drone.gd +++ b/entities/scripts/distractor_drone.gd @@ -1,11 +1,12 @@ class_name DistractorDrone extends Drone +#var dog : Dog = null -# Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. + # Get the dog in the scene (there will only ever be one...) + #dog = get_tree().get_first_node_in_group("dog") as Dog + #Log.pr(dog) + pass + func _process(_delta): pass diff --git a/levels/level_5.tscn b/levels/level_5.tscn new file mode 100644 index 0000000..cf0233d --- /dev/null +++ b/levels/level_5.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=17 format=3 uid="uid://vvk5h14u0i1k"] + +[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_7viev"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_d6prf"] +[ext_resource type="Resource" uid="uid://drdk5e8lskbwo" path="res://levels/rules/level_5_rules.tres" id="3_xjoeh"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_o2mgo"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_ldaym"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_4xst1"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_bmsu5"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_dtrxx"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_ne0y1"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="10_ogjm5"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="11_kkv2y"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="12_ml7gj"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="13_yi2jf"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="14_i1bii"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="15_2iprn"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="16_jy3y1"] + +[node name="Level5" type="Node2D"] +script = ExtResource("1_7viev") + +[node name="RulesComponent" parent="." instance=ExtResource("2_d6prf")] +unique_name_in_owner = true +game_rules = ExtResource("3_xjoeh") + +[node name="Grass" parent="." instance=ExtResource("4_o2mgo")] + +[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_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_ldaym")] +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_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("5_ldaym")] +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_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_ldaym")] +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_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_ldaym")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_4xst1")] +position = Vector2(-41, 437) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_bmsu5")] +position = Vector2(217, 52) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_bmsu5")] +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_dtrxx")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +position = Vector2(1209.52, 209.747) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +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_dtrxx")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_dtrxx")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_dtrxx")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_ne0y1")] +unique_name_in_owner = true +position = Vector2(1102, 298) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_ogjm5")] +unique_name_in_owner = true +position = Vector2(272, 427) + +[node name="BeeSpawner" parent="." instance=ExtResource("11_kkv2y")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("12_ml7gj")] +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("13_yi2jf")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("14_i1bii")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("15_2iprn")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="Dog" parent="." instance=ExtResource("16_jy3y1")] +position = Vector2(731, 309) +rotation = 0.844739 diff --git a/levels/rules/level_5_rules.tres b/levels/rules/level_5_rules.tres new file mode 100644 index 0000000..6ebc2e8 --- /dev/null +++ b/levels/rules/level_5_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://drdk5e8lskbwo"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_6j81d"] + +[resource] +script = ExtResource("1_6j81d") +level_number = 5 +level_name = "Level Five" +level_description = "Serious Business" +bees_available = 100 +nectar_required = 200 +level_par = 5 +collector_enabled = true +dancer_enabled = true +director_enabled = true +distractor_enabled = true diff --git a/resources/concept art/.scene design.kra-autosave.kra b/resources/concept art/.scene design.kra-autosave.kra deleted file mode 100644 index 93e3ca3..0000000 Binary files a/resources/concept art/.scene design.kra-autosave.kra and /dev/null differ diff --git a/resources/concept art/scene design.kra b/resources/concept art/scene design.kra deleted file mode 100644 index efaafe3..0000000 Binary files a/resources/concept art/scene design.kra and /dev/null differ diff --git a/resources/concept art/scene design.kra~ b/resources/concept art/scene design.kra~ deleted file mode 100644 index 2a0d81c..0000000 Binary files a/resources/concept art/scene design.kra~ and /dev/null differ diff --git a/resources/textures/distractor_drone.png b/resources/textures/distractor_drone.png new file mode 100644 index 0000000..2df434b Binary files /dev/null and b/resources/textures/distractor_drone.png differ diff --git a/resources/textures/distractor_drone.png.import b/resources/textures/distractor_drone.png.import new file mode 100644 index 0000000..1c2fe58 --- /dev/null +++ b/resources/textures/distractor_drone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfufcbeeeg5oy" +path="res://.godot/imported/distractor_drone.png-d093338e00acad836fddc960a72d2544.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/distractor_drone.png" +dest_files=["res://.godot/imported/distractor_drone.png-d093338e00acad836fddc960a72d2544.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/scripts/dog.gd b/scenes/scripts/dog.gd index dc5e2a0..4c04a4c 100644 --- a/scenes/scripts/dog.gd +++ b/scenes/scripts/dog.gd @@ -7,6 +7,7 @@ class_name Dog var acquired_target : Bee = null var target_timer : float = 0.0 @export var distracted : bool = false +var distracted_by : Node2D = null func _ready(): death_box.connect("body_entered", Callable(self, "_on_body_entered")) @@ -26,6 +27,11 @@ func _process(delta): target_timer = 0.0 return + + if distracted_by: + # Look around + rotation = lerp_angle(rotation, rotation + get_angle_to(distracted_by.global_position), 0.5) + func show_outline(): outline.visible = true @@ -44,6 +50,7 @@ func _on_body_entered(area): Log.pr("Distracted") acquired_target = null distracted = true + distracted_by = area func _on_body_exited(area): if area == acquired_target: @@ -54,3 +61,4 @@ func _on_body_exited(area): if area.is_in_group("distractor"): Log.pr("No longer distracted") distracted = false + distracted_by = null