1
0
Fork 0
spacetac/units/base_unit.gd

83 lines
2.1 KiB
GDScript

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()