summaryrefslogtreecommitdiff
path: root/BuilderElement.gd
blob: 6a82c0a4412c1e3b5903157ae34c126cf29d6aea (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
class_name BuilderElement
extends Node2D


@export var element: Node2D

var collision_shape: Shape2D


func _ready():
	var element_sprite: Sprite2D = element.get_node("Sprite2D")
	$Sprite2D.texture = element_sprite.texture
	$Sprite2D.region_enabled = element_sprite.region_enabled
	$Sprite2D.region_rect = element_sprite.region_rect
	$Sprite2D.scale = element_sprite.scale
	$Sprite2D.position = element_sprite.position
	
	var element_collision_shape = element.get_node("CollisionShape2D").duplicate() as CollisionShape2D
	$Area2D.add_child(element_collision_shape)
	collision_shape = element_collision_shape.shape


func _draw():
	draw_circle(
		Vector2.ZERO,
		8 + element.attack_range,
		Color(1, 1, 1, 0.75),
		false,
		1.0
	)
	
	if not can_build():
		if collision_shape is RectangleShape2D:
			draw_rect(Rect2((collision_shape.size / 2) * -1, collision_shape.size), Color(1, 0, 0, 0.75))


func _process(_delta):
	#global_position = get_global_mouse_position().snapped(Game.map.tile_set.tile_size / 2)
	global_position = get_global_mouse_position().snapped(Game.map.tile_set.tile_size)


func can_build():
	if $Area2D.get_overlapping_areas().size() > 0:
		return false
	
	if $Area2D.get_overlapping_bodies().size() > 0:
		return false
	
	return true


func _on_area_entered(_node) -> void:
	queue_redraw()

func _on_area_exited(_node) -> void:
	queue_redraw()