summaryrefslogtreecommitdiff
path: root/Scripts/Player.gd
blob: a7b398a45afc3407dcaef509021ea7b2956c4b77 (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
extends Node
class_name Player

@export var max_distance : float
@export var line : Line2D
var target : NumberNode
var legal : bool

var gameloop : GameLoop

func _ready():
	GlobalVariables.player = self
	gameloop = GlobalVariables.gameloop

func _input(event):
	if GlobalVariables.is_snapping && gameloop.can_play && gameloop.current_turns < gameloop.turns:
		line.visible = true
		var target_pos = (line.global_position - get_viewport().get_mouse_position())
		var dist = sqrt(abs(target_pos.x) * abs(target_pos.x) + abs(target_pos.y) * abs(target_pos.y))
		
		if dist > max_distance:
			legal = false
		else:
			legal = true
			
		line.points[1] = Vector2(clampf(dist, 0, self.max_distance), 0)
		line.rotation = atan2(target_pos.y, target_pos.x) - deg_to_rad(180)

	if event is InputEventMouseButton && !event.pressed:
		GlobalVariables.is_snapping = false
		line.points[1] = Vector2.ZERO
		line.visible = false

		if target != null && gameloop.can_play && gameloop.current_turns < gameloop.turns:
			target.join_from($"..")	
			gameloop.current_turns += 1
	
	if target != null:
		line.rotation = 0
		line.points[1] = -(line.global_position - target.global_position)

func _on_player_area_2d_input_event(_viewport : Node, event : InputEvent, _shape_idx : int):
	if event is InputEventMouseButton && event.pressed && gameloop.can_play && gameloop.current_turns < gameloop.turns:
		GlobalVariables.is_snapping = true