blob: 42326499436792ac01ef9475fcf7b7009a2ad630 (
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
|
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(Vector2(16, 16))
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()
|