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)