1
0
Fork 0
spacetac/core/ui/commands.gd
2022-10-24 00:50:48 +02:00

52 lines
1.1 KiB
GDScript

extends Node
@export var player: Node:
set(val):
if val is Player:
player = val
else:
player = null
@export var camera: Camera2D
@export var available_commands: Array[PackedScene]
signal commands_changed(commander, commands)
func _ready():
%stock.visible = false
%wheel.visible = false
if available_commands:
for command_scene in available_commands:
var command := command_scene.instantiate()
%stock.add_child(command)
func _show_command_wheel(pos: Vector2):
var wheel := %wheel as Node2D
wheel.position = pos
# TODO center cam ?
for command in %wheel.get_children():
command.queue_free()
for command in %stock.get_children():
# TODO only available
command = command.duplicate()
command.color = player.color
command.connect("clicked", _on_wheel_command_clicked.bind(command))
%wheel.add_child(command)
wheel.visible = true
func _on_wheel_command_clicked(command: Command):
command.apply(%active, %wheel.position)
%wheel.visible = false
commands_changed.emit(player, %active.get_children())
func background_clicked(pos):
if camera:
pos = camera.get_canvas_transform().inverse() * pos
_show_command_wheel(pos)