tool extends Panel const AnimHelper = preload("res://helpers/anims.gd") const BattleHelper = preload("res://helpers/battle.gd") export(Texture) var sprite setget set_sprite export var base_move_points = 0 setget set_base_move_points export var base_hull_points = 0 setget set_base_hull_points export var base_shield_points = 0 setget set_base_shield_points export var base_damage_points = 0 setget set_base_damage_points var dragged = false var base_position var selected_anchor func _ready(): set_sprite(sprite) base_position = rect_position set_base_damage_points(base_damage_points) set_base_move_points(base_move_points) set_base_hull_points(base_hull_points) set_base_shield_points(base_shield_points) func set_sprite(val): sprite = val if has_node("sprite"): $sprite.texture = sprite func set_base_move_points(val): base_move_points = val if has_node("points"): $points.move = val func set_base_hull_points(val): base_hull_points = val if has_node("points"): $points.hull = val func set_base_shield_points(val): base_shield_points = val if has_node("points"): $points.shield = val func set_base_damage_points(val): base_damage_points = val if has_node("points"): $points.damage = val func can_be_used_on_anchor(anchor): return anchor is Anchor and anchor.is_empty() and anchor.is_connected_to(get_parent()) func update_anchors(): var position = rect_global_position + rect_size / 2 if dragged else null selected_anchor = BattleHelper.update_anchors(get_tree(), position, funcref(self, "can_be_used_on_anchor")) func play(anchor): anchor.set_content(self) rect_position = base_position func return_to_base(): AnimHelper.linear_goto(self, base_position, 0.3) func _gui_input(event): if event is InputEventMouseButton and event.button_index == 1: if event.pressed: dragged = true modulate = Color(1, 1, 1, 0.5) elif dragged: dragged = false modulate = Color(1, 1, 1, 1) if selected_anchor: play(selected_anchor) else: return_to_base() if event is InputEventMouseMotion: if event.button_mask == BUTTON_LEFT: set_position(rect_position + event.relative) update_anchors()