1
0
Fork 0

Use a line for unit move instead of moving the sprite

This commit is contained in:
Michaël Lemaire 2020-02-17 00:42:20 +01:00
parent ee2b9d4dac
commit 751dc87e40
2 changed files with 21 additions and 14 deletions

View File

@ -12,13 +12,13 @@ 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
var dragged
func _ready():
$move_hint.visible = false
set_sprite(sprite)
base_position = rect_position
set_base_damage_points(base_damage_points)
set_base_move_points(base_move_points)
@ -66,8 +66,8 @@ func can_be_used_on_anchor(anchor):
return anchor is Anchor and anchor.is_connected_to(get_parent()) and (anchor.is_empty() or can_target(anchor.get_content()))
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"))
var cursor = rect_global_position + dragged if dragged else null
selected_anchor = BattleHelper.update_anchors(get_tree(), cursor, funcref(self, "can_be_used_on_anchor"))
func play(anchor):
if anchor.is_empty():
@ -85,7 +85,6 @@ func play(anchor):
func move_to(anchor):
anchor.set_content(self)
rect_position = base_position
func get_points() -> UnitPoints:
if $points is UnitPoints:
@ -121,23 +120,27 @@ func attack(other) -> bool:
return selfpoints.hull > 0 && otherpoints.hull == 0
func return_to_base():
AnimHelper.linear_goto(self, base_position, 0.3)
dragged = null
$move_hint.visible = false
$move_hint.set_point_position(1, Vector2(0, 0))
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)
dragged = event.position
$move_hint.visible = true
elif dragged:
dragged = false
modulate = Color(1, 1, 1, 1)
dragged = null
$move_hint.visible = false
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)
if event is InputEventMouseMotion and event.button_mask == BUTTON_LEFT:
dragged = event.position
update_anchors()
if dragged:
$move_hint.set_point_position(1, selected_anchor.global_position - rect_global_position if selected_anchor else dragged)

View File

@ -29,3 +29,7 @@ anchor_right = 0.5
anchor_bottom = 0.5
margin_top = 70.0
margin_bottom = 115.0
[node name="move_hint" type="Line2D" parent="."]
points = PoolVector2Array( 50, 50, 0, 0 )
antialiased = true