blob: 35df89aa82ab00fbc67d602868cf4a97813d5fc2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
extends Node2D
@export var area : Area2D
@export var area_detect : Area2D
@export var line : Line2D
@export var grapple_speed : float
var thing : Node2D = null
var player_movement : PlayerMovement
var just_released : bool = false
func _ready() -> void:
player_movement = get_node("../../PlayerMovement")
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
var delta_pos = event.position - get_global_transform_with_canvas().origin
area_detect.rotation = atan2(delta_pos.y, delta_pos.x)
if Input.is_action_just_pressed("action_secondary") && event is InputEventMouseButton:
var delta_pos = event.position - get_global_transform_with_canvas().origin
area.rotation = atan2(delta_pos.y, delta_pos.x)
area.monitoring = true
if Input.is_action_just_released("action_secondary"):
print("hi")
area.monitoring = false
thing = null
var init_delta : Vector2
var x_vel
func _process(_delta: float) -> void:
if !thing:
if just_released:
player_movement.grapple_x_vel_aft = player_movement.speed
player_movement.grapple_velocity = Vector2.ZERO
line.points[1] = Vector2.ZERO
x_vel = null
just_released = false
return
area.monitoring = false
var delta_pos = thing.global_position - global_position
print(delta_pos.length(), " ", delta_pos.y, " ", delta_pos.x)
line.points[1] = delta_pos
var normalised = delta_pos.normalized()
if !x_vel: x_vel = normalised.x
if x_vel > 0.3:
x_vel = .9
elif x_vel < -0.3:
x_vel = -.9
if delta_pos.length() < 100 || ((x_vel > 0 && delta_pos.x < 0) || (x_vel < 0 && delta_pos.x > 0)):
just_released = true
thing = null
player_movement.grapple_velocity = Vector2(x_vel, normalised.y * 1.1) * grapple_speed
func _on_area_2d_body_entered(body: Node2D) -> void:
print("grapple", body)
thing = body
area.monitoring = false
init_delta = thing.global_position - global_position
func _on_detect_area_2d_body_exited(body:Node2D) -> void:
if body is Grappleable:
body.dehighlight()
func _on_detect_area_2d_body_entered(body:Node2D) -> void:
if body is Grappleable:
body.highlight()
|