generated from Nekojimi/GodotTemplate
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
3 years ago
|
extends Line2D
|
||
|
|
||
|
var idx: int
|
||
|
var accessor: GameScene.LineAccessor
|
||
|
|
||
|
var hovered: bool
|
||
|
|
||
|
var moveSpeed: float = rand_range(0.5,1.5)
|
||
|
|
||
|
signal line_clicked(id)
|
||
|
|
||
|
func _ready() -> void:
|
||
|
accessor = get_parent().get_line(idx)
|
||
|
|
||
|
func _process(delta: float) -> void:
|
||
|
var p0: Vector2 = accessor.get_point0()
|
||
|
var p1: Vector2 = accessor.get_point1()
|
||
|
points[0] = points[0].linear_interpolate(p0,delta*moveSpeed)
|
||
|
points[1] = points[1].linear_interpolate(p1,delta*moveSpeed)
|
||
|
|
||
|
if $Area2D/CollisionShape2D != null:
|
||
|
$Area2D/CollisionShape2D.rotation = p0.angle_to(p1) + (0.5 * PI)
|
||
|
$Area2D/CollisionShape2D.position = p0.linear_interpolate(p1,0.5)
|
||
|
$Area2D/CollisionShape2D.shape.height = p0.distance_to(p1)
|
||
|
|
||
|
var owner: int = accessor.get_owner()
|
||
|
match owner:
|
||
|
0:
|
||
|
default_color = Color.gray
|
||
|
1:
|
||
|
default_color = Color.red
|
||
|
2:
|
||
|
default_color = Color.blue
|
||
|
|
||
|
if hovered:
|
||
|
default_color = default_color.lightened(0.2)
|
||
|
|
||
|
func _input(event: InputEvent) -> void:
|
||
|
if event is InputEventMouseButton:
|
||
|
if event.button_index == BUTTON_LEFT and event.pressed and hovered:
|
||
|
emit_signal("line_clicked", idx)
|
||
|
|
||
|
func _on_Area2D_mouse_entered() -> void:
|
||
|
hovered = true
|
||
|
|
||
|
func _on_Area2D_mouse_exited() -> void:
|
||
|
hovered = false
|