76 lines
2.4 KiB
GDScript
76 lines
2.4 KiB
GDScript
extends Node2D
|
|
|
|
var spawning_drone : bool = false
|
|
var spawning_type : String = ""
|
|
|
|
@onready var drone_controls = %DroneControls
|
|
@onready var spawned_drones_container = get_node("SpawnedDrones")
|
|
@onready var cursor = preload("res://resources/cursors/launch_drone.png")
|
|
|
|
# Drones!
|
|
@onready var test_drone = preload("res://entities/TestDrone.tscn")
|
|
@onready var director_drone = preload("res://entities/DirectorDrone.tscn")
|
|
@onready var dancer_drone = preload("res://entities/DancerDrone.tscn")
|
|
@onready var distractor_drone = preload("res://entities/DistractorDrone.tscn")
|
|
@onready var collector_drone = preload("res://entities/CollectorDrone.tscn")
|
|
|
|
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")
|
|
|
|
var new_drone = null
|
|
# Create a new instance of the drone
|
|
if drone_type == "director":
|
|
new_drone = director_drone.instantiate()
|
|
elif drone_type == "dancer":
|
|
new_drone = dancer_drone.instantiate()
|
|
elif drone_type == "distractor":
|
|
new_drone = distractor_drone.instantiate()
|
|
elif drone_type == "collector":
|
|
new_drone = collector_drone.instantiate()
|
|
else:
|
|
new_drone = test_drone.instantiate()
|
|
|
|
spawned_drones_container.add_child(new_drone)
|
|
new_drone.position = get_viewport().get_mouse_position()
|
|
|
|
func place_drone(drone_type : String) -> void:
|
|
if !spawning_drone:
|
|
Input.set_custom_mouse_cursor(cursor, Input.CURSOR_ARROW, Vector2(32, 32))
|
|
drone_controls.disable_buttons()
|
|
Log.pr("Placing " + drone_type + "...")
|
|
spawning_drone = true
|
|
spawning_type = drone_type
|
|
|
|
|
|
|
|
func cancel_spawning() -> void:
|
|
Input.set_custom_mouse_cursor(null)
|
|
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")
|