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/
|
||||
.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/icon="res://icon.svg"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1280
|
||||
window/size/viewport_height=720
|
||||
window/vsync/vsync_mode=0
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
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/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"]
|
||||
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