Bees return nectar, UI stuff
This commit is contained in:
parent
76e7ec7ec7
commit
5865778c77
12 changed files with 175 additions and 17 deletions
|
|
@ -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/bee.gd" id="1_pnu7x"]
|
||||||
[ext_resource type="Script" path="res://entities/scripts/finite_state_machine.gd" id="1_t3s5d"]
|
[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/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_travelling.gd" id="5_qtx0r"]
|
||||||
[ext_resource type="Script" path="res://entities/bee/states/bee_sleeping.gd" id="7_6qlbu"]
|
[ext_resource type="Script" path="res://entities/bee/states/bee_sleeping.gd" id="7_6qlbu"]
|
||||||
|
[ext_resource type="Script" path="res://entities/bee/states/bee_returning.gd" id="8_dptvu"]
|
||||||
[sub_resource type="Animation" id="Animation_t75ra"]
|
|
||||||
resource_name = "Idle"
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_iys4n"]
|
[sub_resource type="Animation" id="Animation_iys4n"]
|
||||||
resource_name = "Flying"
|
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)]
|
"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"]
|
[sub_resource type="Animation" id="Animation_0encb"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
|
|
@ -93,7 +94,11 @@ script = ExtResource("5_4vs4l")
|
||||||
[node name="Sleeping" type="Node" parent="StateMachine"]
|
[node name="Sleeping" type="Node" parent="StateMachine"]
|
||||||
script = ExtResource("7_6qlbu")
|
script = ExtResource("7_6qlbu")
|
||||||
|
|
||||||
|
[node name="Returning" type="Node" parent="StateMachine"]
|
||||||
|
script = ExtResource("8_dptvu")
|
||||||
|
|
||||||
[node name="Polygon2D" type="Polygon2D" parent="."]
|
[node name="Polygon2D" type="Polygon2D" parent="."]
|
||||||
|
scale = Vector2(0.152885, 0.15978)
|
||||||
color = Color(1, 1, 0.0745098, 1)
|
color = Color(1, 1, 0.0745098, 1)
|
||||||
polygon = PackedVector2Array(-18, -11, -6, -21, 17, -19, 23, 1, 3, 12, -18, 7)
|
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)
|
position = Vector2(0, 2.46663)
|
||||||
gravity = Vector2(0, 0)
|
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_entered" from="HitBox" to="HitBox" method="_on_area_entered"]
|
||||||
[connection signal="area_exited" from="HitBox" to="HitBox" method="_on_area_exited"]
|
[connection signal="area_exited" from="HitBox" to="HitBox" method="_on_area_exited"]
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,6 @@ class_name BeeIdle
|
||||||
|
|
||||||
var idle_time : float = 0.0
|
var idle_time : float = 0.0
|
||||||
|
|
||||||
func _ready():
|
|
||||||
Log.pr(bee, bee.nectar)
|
|
||||||
|
|
||||||
func enter(_msg := {}):
|
func enter(_msg := {}):
|
||||||
Log.pr("I sit by idl-bee")
|
Log.pr("I sit by idl-bee")
|
||||||
#animator.play("Idle")
|
#animator.play("Idle")
|
||||||
|
|
|
||||||
25
entities/bee/states/bee_returning.gd
Normal file
25
entities/bee/states/bee_returning.gd
Normal 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")
|
||||||
|
|
@ -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
|
@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 := {}):
|
func enter(_msg := {}):
|
||||||
Log.pr("I am on the move!")
|
Log.pr("I am on the move!")
|
||||||
|
return_to_hive = false
|
||||||
## Get the next target location from the bee
|
## Get the next target location from the bee
|
||||||
if bee.just_gathering:
|
if bee.just_gathering:
|
||||||
target = bee.get_current_director() # We want to go back the way we came
|
target = bee.get_current_director() # We want to go back the way we came
|
||||||
|
|
@ -16,12 +17,22 @@ func enter(_msg := {}):
|
||||||
else:
|
else:
|
||||||
target = bee.get_next_target()
|
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")
|
bee.animation_player.play("Flying")
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
func update(delta : float) -> void:
|
func update(delta : float) -> void:
|
||||||
|
|
||||||
|
if return_to_hive:
|
||||||
|
state_transition.emit(self, "Returning")
|
||||||
|
return
|
||||||
|
|
||||||
if target:
|
if target:
|
||||||
if bee.position.distance_to(target.position) > 3:
|
if bee.position.distance_to(target.position) > 3:
|
||||||
|
|
||||||
|
|
@ -36,4 +47,3 @@ func update(delta : float) -> void:
|
||||||
else:
|
else:
|
||||||
state_transition.emit(self, "Idle")
|
state_transition.emit(self, "Idle")
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,13 @@ func get_next_target():
|
||||||
latest_target_director = previous_drone.visit_order
|
latest_target_director = previous_drone.visit_order
|
||||||
return previous_drone
|
return previous_drone
|
||||||
|
|
||||||
pass
|
func deposit_nectar():
|
||||||
|
GameState.add_nectar()
|
||||||
|
nectar = 0
|
||||||
|
latest_target_director = 0
|
||||||
|
just_gathering = false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,10 @@ run/main_scene="res://scenes/test_level.tscn"
|
||||||
config/features=PackedStringArray("4.2", "Forward Plus")
|
config/features=PackedStringArray("4.2", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
GameState="*res://utility/game_state.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/viewport_width=1280
|
window/size/viewport_width=1280
|
||||||
|
|
|
||||||
3
resources/theme/game_theme.tres
Normal file
3
resources/theme/game_theme.tres
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[gd_resource type="Theme" format=3 uid="uid://cpkvret5gi66h"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
|
@ -6,8 +6,8 @@ var bee = preload("res://entities/Bee.tscn")
|
||||||
@onready var beehive = get_node("../Beehive")
|
@onready var beehive = get_node("../Beehive")
|
||||||
|
|
||||||
var bee_count = 0
|
var bee_count = 0
|
||||||
var max_bees = 10
|
var max_bees = 100
|
||||||
var spawn_interval = 3
|
var spawn_interval = 0.5
|
||||||
var spawn_timer = 0.0
|
var spawn_timer = 0.0
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
|
@ -17,7 +17,6 @@ func spawn_bee():
|
||||||
var bee_instance = bee.instantiate()
|
var bee_instance = bee.instantiate()
|
||||||
add_child(bee_instance)
|
add_child(bee_instance)
|
||||||
bee_instance.position = beehive.global_position
|
bee_instance.position = beehive.global_position
|
||||||
# bee_instance.connect("bee_died", self, "bee_died")
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
spawn_timer += delta
|
spawn_timer += delta
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
[gd_scene load_steps=7 format=3 uid="uid://mk5n0hrwk4yi"]
|
[gd_scene load_steps=9 format=3 uid="uid://mk5n0hrwk4yi"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scenes/scripts/test_level.gd" id="1_lgt1m"]
|
[ext_resource type="Script" path="res://scenes/scripts/test_level.gd" id="1_lgt1m"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="2_5ueyo"]
|
[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="2_5ueyo"]
|
||||||
[ext_resource type="Script" path="res://scenes/scripts/drone_manager.gd" id="2_474nc"]
|
[ext_resource type="Script" path="res://scenes/scripts/drone_manager.gd" id="2_474nc"]
|
||||||
[ext_resource type="Script" path="res://scenes/scripts/bee_spawner.gd" id="2_qqqq4"]
|
[ext_resource type="Script" path="res://scenes/scripts/bee_spawner.gd" id="2_qqqq4"]
|
||||||
[ext_resource type="Script" path="res://scenes/scripts/drone_controls.gd" id="3_rqkyv"]
|
[ext_resource type="Script" path="res://scenes/scripts/drone_controls.gd" id="3_rqkyv"]
|
||||||
|
[ext_resource type="Theme" uid="uid://cpkvret5gi66h" path="res://resources/theme/game_theme.tres" id="6_1kbwe"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="6_xuemm"]
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_usqp5"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_usqp5"]
|
||||||
radius = 142.316
|
radius = 142.316
|
||||||
|
|
@ -17,7 +19,8 @@ position = Vector2(52, -26)
|
||||||
color = Color(0.329412, 0.494118, 0.392157, 1)
|
color = Color(0.329412, 0.494118, 0.392157, 1)
|
||||||
polygon = PackedVector2Array(-141, -86, 1456, -97, 1337, 753, -193, 771)
|
polygon = PackedVector2Array(-141, -86, 1456, -97, 1337, 753, -193, 771)
|
||||||
|
|
||||||
[node name="Beehive" parent="." instance=ExtResource("2_5ueyo")]
|
[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("2_5ueyo")]
|
||||||
|
unique_name_in_owner = true
|
||||||
position = Vector2(163, 489)
|
position = Vector2(163, 489)
|
||||||
|
|
||||||
[node name="Flower" type="Polygon2D" parent="."]
|
[node name="Flower" type="Polygon2D" parent="."]
|
||||||
|
|
@ -54,8 +57,13 @@ polygon = PackedVector2Array(819, 301, 866, 278, 888, 364, 842, 319, 832, 373, 8
|
||||||
[node name="BeeSpawner" type="Node2D" parent="."]
|
[node name="BeeSpawner" type="Node2D" parent="."]
|
||||||
script = ExtResource("2_qqqq4")
|
script = ExtResource("2_qqqq4")
|
||||||
|
|
||||||
|
[node name="UiComponent" parent="." instance=ExtResource("6_xuemm")]
|
||||||
|
offset_right = 1280.0
|
||||||
|
offset_bottom = 720.0
|
||||||
|
|
||||||
[node name="DroneManager" type="Node2D" parent="." groups=["dronemanager"]]
|
[node name="DroneManager" type="Node2D" parent="." groups=["dronemanager"]]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
z_index = 50
|
||||||
script = ExtResource("2_474nc")
|
script = ExtResource("2_474nc")
|
||||||
|
|
||||||
[node name="SpawnedDrones" type="Node2D" parent="DroneManager"]
|
[node name="SpawnedDrones" type="Node2D" parent="DroneManager"]
|
||||||
|
|
@ -82,6 +90,11 @@ offset_top = -31.0
|
||||||
offset_right = 155.5
|
offset_right = 155.5
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
theme = ExtResource("6_1kbwe")
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="DroneControls" type="HBoxContainer" parent="DroneManager/Control/MarginContainer"]
|
[node name="DroneControls" type="HBoxContainer" parent="DroneManager/Control/MarginContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
|
||||||
28
ui/UiComponent.tscn
Normal file
28
ui/UiComponent.tscn
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://b7eeptlk47ymd"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://ui/scripts/ui_component.gd" id="1_6lnte"]
|
||||||
|
|
||||||
|
[node name="UiComponent" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_6lnte")
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="NectarBar" type="ProgressBar" parent="MarginContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
23
ui/scripts/ui_component.gd
Normal file
23
ui/scripts/ui_component.gd
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
extends Control
|
||||||
|
class_name UIComponent
|
||||||
|
|
||||||
|
var update_interval : float = 1
|
||||||
|
var last_update : float = 0
|
||||||
|
|
||||||
|
@onready var nectar_bar = get_node("%NectarBar")
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
Log.pr("UIComponent ready")
|
||||||
|
update_ui()
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
last_update += delta
|
||||||
|
|
||||||
|
if last_update > update_interval:
|
||||||
|
last_update = 0
|
||||||
|
update_ui()
|
||||||
|
|
||||||
|
func update_ui():
|
||||||
|
Log.pr("UIComponent update_ui")
|
||||||
|
|
||||||
|
nectar_bar.value = GameState.gathered_nectar
|
||||||
10
utility/game_state.gd
Normal file
10
utility/game_state.gd
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
class_name GameStateManager extends Node
|
||||||
|
|
||||||
|
var gathered_nectar : int = 0
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
Log.pr("GameStateManager ready")
|
||||||
|
|
||||||
|
func add_nectar():
|
||||||
|
gathered_nectar += 1
|
||||||
|
Log.pr("Nectar gathered", gathered_nectar)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue