Bees return nectar, UI stuff

This commit is contained in:
Dan Baker 2024-05-04 15:13:59 +01:00
parent 76e7ec7ec7
commit 5865778c77
12 changed files with 175 additions and 17 deletions

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://deek6uv574xas"]
[gd_scene load_steps=14 format=3 uid="uid://deek6uv574xas"]
[ext_resource type="Script" path="res://entities/scripts/bee.gd" id="1_pnu7x"]
[ext_resource type="Script" path="res://entities/scripts/finite_state_machine.gd" id="1_t3s5d"]
@ -7,9 +7,7 @@
[ext_resource type="Script" path="res://entities/scripts/bee_hit_box.gd" id="5_agq38"]
[ext_resource type="Script" path="res://entities/bee/states/bee_travelling.gd" id="5_qtx0r"]
[ext_resource type="Script" path="res://entities/bee/states/bee_sleeping.gd" id="7_6qlbu"]
[sub_resource type="Animation" id="Animation_t75ra"]
resource_name = "Idle"
[ext_resource type="Script" path="res://entities/bee/states/bee_returning.gd" id="8_dptvu"]
[sub_resource type="Animation" id="Animation_iys4n"]
resource_name = "Flying"
@ -29,6 +27,9 @@ tracks/0/keys = {
"values": [Vector2(0, 0), Vector2(0, 10), Vector2(0, -10), Vector2(0, 10), Vector2(0, 0)]
}
[sub_resource type="Animation" id="Animation_t75ra"]
resource_name = "Idle"
[sub_resource type="Animation" id="Animation_0encb"]
length = 0.001
tracks/0/type = "value"
@ -93,7 +94,11 @@ script = ExtResource("5_4vs4l")
[node name="Sleeping" type="Node" parent="StateMachine"]
script = ExtResource("7_6qlbu")
[node name="Returning" type="Node" parent="StateMachine"]
script = ExtResource("8_dptvu")
[node name="Polygon2D" type="Polygon2D" parent="."]
scale = Vector2(0.152885, 0.15978)
color = Color(1, 1, 0.0745098, 1)
polygon = PackedVector2Array(-18, -11, -6, -21, 17, -19, 23, 1, 3, 12, -18, 7)
@ -101,5 +106,40 @@ polygon = PackedVector2Array(-18, -11, -6, -21, 17, -19, 23, 1, 3, 12, -18, 7)
position = Vector2(0, 2.46663)
gravity = Vector2(0, 0)
[node name="Polygon2D" type="Polygon2D" parent="Polygon2D"]
position = Vector2(-13.0817, -6.25862)
scale = Vector2(0.5, 0.5)
color = Color(0, 0, 0, 1)
offset = Vector2(-9.53674e-07, -9.53674e-07)
polygon = PackedVector2Array(32.7043, -12.5172, 39.2451, -18.7759, 45.786, -12.5172, 39.2451, -6.25862)
[node name="Polygon2D5" type="Polygon2D" parent="Polygon2D"]
position = Vector2(-13.0817, 18.7759)
scale = Vector2(0.5, 0.5)
color = Color(0, 0, 0, 1)
offset = Vector2(-9.53674e-07, -9.53674e-07)
polygon = PackedVector2Array(32.7043, -12.5172, 39.2451, -18.7759, 45.786, -12.5172, 39.2451, -6.25862)
[node name="Polygon2D4" type="Polygon2D" parent="Polygon2D"]
position = Vector2(-26.1634, 18.7759)
scale = Vector2(0.5, 0.5)
color = Color(0, 0, 0, 1)
offset = Vector2(-9.53674e-07, -9.53674e-07)
polygon = PackedVector2Array(32.7043, -12.5172, 39.2451, -18.7759, 45.786, -12.5172, 39.2451, -6.25862)
[node name="Polygon2D3" type="Polygon2D" parent="Polygon2D"]
position = Vector2(-26.1634, -6.25862)
scale = Vector2(0.5, 0.5)
color = Color(0.30032, 0.200213, 0.0690995, 1)
offset = Vector2(-9.53674e-07, -9.53674e-07)
polygon = PackedVector2Array(32.7043, -12.5172, 39.2451, -18.7759, 78.4903, 12.5172, 65.4086, 25.0345)
[node name="Polygon2D2" type="Polygon2D" parent="Polygon2D"]
position = Vector2(-6.54086, 0)
scale = Vector2(0.5, 0.5)
color = Color(0, 0, 0, 1)
offset = Vector2(-9.53674e-07, -9.53674e-07)
polygon = PackedVector2Array(32.7043, -12.5172, 39.2451, -18.7759, 45.786, -12.5172, 39.2451, -6.25862)
[connection signal="area_entered" from="HitBox" to="HitBox" method="_on_area_entered"]
[connection signal="area_exited" from="HitBox" to="HitBox" method="_on_area_exited"]

View file

@ -5,9 +5,6 @@ class_name BeeIdle
var idle_time : float = 0.0
func _ready():
Log.pr(bee, bee.nectar)
func enter(_msg := {}):
Log.pr("I sit by idl-bee")
#animator.play("Idle")

View file

@ -0,0 +1,25 @@
extends State
class_name BeeReturning
@onready var bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works
@onready var target = get_tree().get_first_node_in_group("beehive")
func enter(_msg := {}):
Log.pr("I return to the hive!")
bee.animation_player.play("Flying")
func update(delta : float) -> void:
if target:
if bee.position.distance_to(target.position) > 3:
bee.velocity = (target.get_global_position() - bee.position).normalized() * bee.speed * delta
bee.move_and_collide(bee.velocity)
bee.look_at(target.position)
else:
# Deposit the nectar and return it idle state
bee.deposit_nectar()
state_transition.emit(self, "Idle")

View file

@ -5,10 +5,11 @@ class_name BeeTravelling
@onready var bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works
var t = 0
var return_to_hive : bool = false
func enter(_msg := {}):
Log.pr("I am on the move!")
return_to_hive = false
## Get the next target location from the bee
if bee.just_gathering:
target = bee.get_current_director() # We want to go back the way we came
@ -16,12 +17,22 @@ func enter(_msg := {}):
else:
target = bee.get_next_target()
Log.pr(bee, target)
# If we have no target, we are returning to the hive
if !target:
Log.pr("No more drones to visit, going to go back to the hive")
return_to_hive = true
bee.animation_player.play("Flying")
pass
func update(delta : float) -> void:
if return_to_hive:
state_transition.emit(self, "Returning")
return
if target:
if bee.position.distance_to(target.position) > 3:
@ -36,4 +47,3 @@ func update(delta : float) -> void:
else:
state_transition.emit(self, "Idle")
pass

View file

@ -56,7 +56,13 @@ func get_next_target():
latest_target_director = previous_drone.visit_order
return previous_drone
pass
func deposit_nectar():
GameState.add_nectar()
nectar = 0
latest_target_director = 0
just_gathering = false