Basic mouse interface
This commit is contained in:
parent
2099f0b1ff
commit
b0583bd97f
8 changed files with 177 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
||||||
# Godot 4+ specific ignores
|
# Godot 4+ specific ignores
|
||||||
.godot/
|
.godot/
|
||||||
|
.vscode/
|
||||||
|
|
|
||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"godotTools.editorPath.godot4": "c:\\Dev\\Godot\\Godot_v4.2.2-stable_win64.exe"
|
|
||||||
}
|
|
||||||
3
entities/Bee.tscn
Normal file
3
entities/Bee.tscn
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[gd_scene format=3 uid="uid://deek6uv574xas"]
|
||||||
|
|
||||||
|
[node name="Bee" type="Node2D"]
|
||||||
3
entities/DirectorDrone.tscn
Normal file
3
entities/DirectorDrone.tscn
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[gd_scene format=3 uid="uid://c44o1ygkb5861"]
|
||||||
|
|
||||||
|
[node name="DirectorDrone" type="Node2D"]
|
||||||
|
|
@ -15,6 +15,12 @@ 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"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=1280
|
||||||
|
window/size/viewport_height=720
|
||||||
|
window/vsync/vsync_mode=0
|
||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
enabled=PackedStringArray("res://addons/log/plugin.cfg")
|
enabled=PackedStringArray("res://addons/log/plugin.cfg")
|
||||||
|
|
|
||||||
30
scenes/scripts/drone_controls.gd
Normal file
30
scenes/scripts/drone_controls.gd
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
extends HBoxContainer
|
||||||
|
|
||||||
|
func disable_buttons():
|
||||||
|
## Get all children buttons
|
||||||
|
var buttons = get_children()
|
||||||
|
|
||||||
|
## Disable all buttons
|
||||||
|
for button in buttons:
|
||||||
|
button.disabled = true
|
||||||
|
|
||||||
|
visible = false
|
||||||
|
|
||||||
|
func enable_buttons():
|
||||||
|
## Get all children buttons
|
||||||
|
var buttons = get_children()
|
||||||
|
|
||||||
|
## Enable all buttons
|
||||||
|
for button in buttons:
|
||||||
|
button.disabled = false
|
||||||
|
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
func reset_button_focus():
|
||||||
|
## Get all children buttons
|
||||||
|
var buttons = get_children()
|
||||||
|
|
||||||
|
## Reset focus on all buttons
|
||||||
|
for button in buttons:
|
||||||
|
button.release_focus()
|
||||||
|
|
||||||
47
scenes/scripts/drone_manager.gd
Normal file
47
scenes/scripts/drone_manager.gd
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
var spawning_drone : bool = false
|
||||||
|
var spawning_type : String = ""
|
||||||
|
|
||||||
|
@onready var drone_controls = %DroneControls
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Log.pr("Drone Manager Ready...")
|
||||||
|
|
||||||
|
## Function to detect right click event
|
||||||
|
func _input(event) -> void:
|
||||||
|
if spawning_drone:
|
||||||
|
if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_RIGHT && event.pressed):
|
||||||
|
Log.pr("Cancelling placement of drone")
|
||||||
|
cancel_spawning()
|
||||||
|
if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_LEFT && event.pressed):
|
||||||
|
spawn_drone(spawning_type)
|
||||||
|
cancel_spawning()
|
||||||
|
|
||||||
|
func spawn_drone(drone_type : String) -> void:
|
||||||
|
Log.pr("This function will put a " + drone_type + " drone in the world")
|
||||||
|
|
||||||
|
func place_drone(drone_type : String) -> void:
|
||||||
|
if !spawning_drone:
|
||||||
|
drone_controls.disable_buttons()
|
||||||
|
Log.pr("Placing " + drone_type + "...")
|
||||||
|
spawning_drone = true
|
||||||
|
spawning_type = drone_type
|
||||||
|
|
||||||
|
func cancel_spawning() -> void:
|
||||||
|
drone_controls.reset_button_focus()
|
||||||
|
drone_controls.enable_buttons()
|
||||||
|
spawning_drone = false
|
||||||
|
spawning_type = ""
|
||||||
|
|
||||||
|
func _on_spawn_director_pressed() -> void:
|
||||||
|
place_drone("director")
|
||||||
|
|
||||||
|
func _on_spawn_collector_pressed() -> void:
|
||||||
|
place_drone("collector")
|
||||||
|
|
||||||
|
func _on_spawn_distractor_pressed() -> void:
|
||||||
|
place_drone("distractor")
|
||||||
|
|
||||||
|
func _on_spawn_dancer_pressed() -> void:
|
||||||
|
place_drone("dancer")
|
||||||
|
|
@ -1,6 +1,92 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://mk5n0hrwk4yi"]
|
[gd_scene load_steps=4 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="Script" path="res://scenes/scripts/drone_manager.gd" id="2_474nc"]
|
||||||
|
[ext_resource type="Script" path="res://scenes/scripts/drone_controls.gd" id="3_rqkyv"]
|
||||||
|
|
||||||
[node name="TestLevel" type="Node2D"]
|
[node name="TestLevel" type="Node2D"]
|
||||||
script = ExtResource("1_lgt1m")
|
script = ExtResource("1_lgt1m")
|
||||||
|
|
||||||
|
[node name="Background" type="Polygon2D" parent="."]
|
||||||
|
position = Vector2(52, -26)
|
||||||
|
color = Color(0.329412, 0.494118, 0.392157, 1)
|
||||||
|
polygon = PackedVector2Array(-141, -86, 1456, -97, 1337, 753, -193, 771)
|
||||||
|
|
||||||
|
[node name="Beehive" type="Polygon2D" parent="."]
|
||||||
|
position = Vector2(-37, 87)
|
||||||
|
color = Color(0.588235, 0.423529, 0.423529, 1)
|
||||||
|
polygon = PackedVector2Array(95, 146, 203, 134, 186, 274, 78, 287)
|
||||||
|
|
||||||
|
[node name="Flower" type="Polygon2D" parent="."]
|
||||||
|
position = Vector2(648, 225)
|
||||||
|
scale = Vector2(0.435897, 0.276596)
|
||||||
|
color = Color(0.301961, 0.607843, 0.901961, 1)
|
||||||
|
polygon = PackedVector2Array(752, 145, 875, 200, 893, 272, 866, 359, 781, 427, 715, 362, 659, 226)
|
||||||
|
|
||||||
|
[node name="Pesticide" type="Polygon2D" parent="."]
|
||||||
|
position = Vector2(74.7948, -103.963)
|
||||||
|
scale = Vector2(0.851611, 0.815599)
|
||||||
|
color = Color(0.682353, 0.137255, 0.203922, 1)
|
||||||
|
polygon = PackedVector2Array(441, 122, 520, 54, 548, 154, 625, 114, 593, 234, 686, 281, 581, 325, 605, 472, 512, 363, 399, 468, 429, 311, 239, 362, 322, 226, 152, 92, 345, 130, 346, 15)
|
||||||
|
|
||||||
|
[node name="Dog" type="Polygon2D" parent="."]
|
||||||
|
position = Vector2(-354, 53)
|
||||||
|
color = Color(0.803922, 0.407843, 0.239216, 1)
|
||||||
|
polygon = PackedVector2Array(819, 301, 866, 278, 888, 364, 842, 319, 832, 373, 806, 423, 775, 424, 754, 377, 762, 319, 728, 360, 739, 263, 765, 284)
|
||||||
|
|
||||||
|
[node name="DroneManager" type="Node2D" parent="."]
|
||||||
|
script = ExtResource("2_474nc")
|
||||||
|
|
||||||
|
[node name="SpawnedDrones" type="Node2D" parent="DroneManager"]
|
||||||
|
|
||||||
|
[node name="Control" type="Control" parent="DroneManager"]
|
||||||
|
top_level = true
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
|
[node name="DroneControls" type="HBoxContainer" parent="DroneManager/Control"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -155.5
|
||||||
|
offset_top = -31.0
|
||||||
|
offset_right = 155.5
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
||||||
|
size_flags_vertical = 10
|
||||||
|
alignment = 1
|
||||||
|
script = ExtResource("3_rqkyv")
|
||||||
|
|
||||||
|
[node name="SpawnDirector" type="Button" parent="DroneManager/Control/DroneControls"]
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Place a director drone, these are the main drones that define the path bees should follow. The order bees should visit these drones can be defined by clicking on them."
|
||||||
|
text = "Director"
|
||||||
|
|
||||||
|
[node name="SpawnCollector" type="Button" parent="DroneManager/Control/DroneControls"]
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Place a drone that encourages bees to collect pollen near this area."
|
||||||
|
text = "Collector"
|
||||||
|
|
||||||
|
[node name="SpawnDistractor" type="Button" parent="DroneManager/Control/DroneControls"]
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Place a distracting drone that will (hopefully) divert threats attention so they ignore the bees."
|
||||||
|
text = "Distractor"
|
||||||
|
|
||||||
|
[node name="SpawnDancer" type="Button" parent="DroneManager/Control/DroneControls"]
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Spawn a dancing drone that will encourage bees to leave the hive. Best to put this near to the hive. "
|
||||||
|
text = "Dancer"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="DroneManager/Control/DroneControls/SpawnDirector" to="DroneManager" method="_on_spawn_director_pressed"]
|
||||||
|
[connection signal="pressed" from="DroneManager/Control/DroneControls/SpawnCollector" to="DroneManager" method="_on_spawn_collector_pressed"]
|
||||||
|
[connection signal="pressed" from="DroneManager/Control/DroneControls/SpawnDistractor" to="DroneManager" method="_on_spawn_distractor_pressed"]
|
||||||
|
[connection signal="pressed" from="DroneManager/Control/DroneControls/SpawnDancer" to="DroneManager" method="_on_spawn_dancer_pressed"]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue