diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-09-08 22:35:06 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-09-08 22:35:06 +0200 |
commit | 4597189f157834c80f56b12b701fd2b2a15c2798 (patch) | |
tree | f522e9a58ec756dc27306781da99e828b195c549 /BuilderElement.gd | |
parent | 7d7d845e76f78a87cf87c9464d700e52cd88ce6f (diff) |
next commit
Diffstat (limited to 'BuilderElement.gd')
-rw-r--r-- | BuilderElement.gd | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/BuilderElement.gd b/BuilderElement.gd deleted file mode 100644 index 5f1e3ca..0000000 --- a/BuilderElement.gd +++ /dev/null @@ -1,119 +0,0 @@ -class_name BuilderElement -extends Node2D - - -@export var element: Node2D - -var collision_shape: Shape2D - -var previous_position - -var collision_areas: Array[Area2D] = [] - - -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 - - var snapped_size = collision_shape.size.snapped(Game.map.tile_set.tile_size) - for x in (snapped_size.x / Game.map.tile_set.tile_size.x): - for y in (snapped_size.y / Game.map.tile_set.tile_size.y): - var collision_visibility_area_scene = preload("res://CollisionVisibilityArea.tscn") - var collision_visibility_area = collision_visibility_area_scene.instantiate() - collision_visibility_area.position = Vector2( - x * Game.map.tile_set.tile_size.x, - y * Game.map.tile_set.tile_size.y - ) - collision_visibility_area.set_collision_layer_value(3, true) - collision_visibility_area.set_collision_mask_value(1, true) - collision_visibility_area.set_collision_mask_value(2, true) - collision_visibility_area.set_collision_mask_value(3, true) - collision_visibility_area.colliding_color = Color(1, 0, 0, 0.5) - collision_visibility_area.not_colliding_color = Color(0, 1, 0, 0.25) - - var shape = RectangleShape2D.new() - shape.size = Vector2(Game.map.tile_set.tile_size - Vector2i(1, 1)) - var cshape = CollisionShape2D.new() - cshape.shape = shape - cshape.position = Game.map.tile_set.tile_size / 2 - - collision_visibility_area.add_child(cshape) - add_child(collision_visibility_area) - - collision_areas.append(collision_visibility_area) - - -func _draw(): - draw_circle( - Game.map.tile_set.tile_size, - 8 + element.attack_range, - Color(1, 1, 1, 0.75), - false, - 1.0 - ) - - #if collision_shape is RectangleShape2D: - #var nodes = $Area2D.get_overlapping_nodes() - #for key in nodes: - #var node = nodes[key] - #if node.collision_points.size() == 4: - #var rect_size = (node.collision_points[0] - node.collision_points[1] + - #node.collision_points[2] - node.collision_points[0]).snapped(Game.map.tile_set.tile_size) - #var relative_position = global_position - node.body.global_position.snapped(Game.map.tile_set.tile_size) - #if relative_position.x > 0: - #relative_position.x = 0 - #if relative_position.y > 0: - #relative_position.y = 0 - #if rect_size.x == 0: - #rect_size.x = 16 - #if rect_size.y == 0: - #rect_size.y = 16 - #draw_rect( - #Rect2( - #abs(relative_position), - #abs(rect_size) - #), - #Color(0, 0, 1) - #) - #draw_rect( - #Rect2( - #Vector2.ZERO, - #collision_shape.size - #), - #Color(1, 0, 0, 0.5) if not can_build() else Color(0, 1, 0, 0.25) - #) - - -func _process(_delta): - previous_position = global_position - global_position = get_global_mouse_position().snapped(Game.map.tile_set.tile_size) - Vector2(16,16) - #global_position = Game.map.map_to_local(Game.map.local_to_map(get_global_mouse_position())) - Vector2(16,16) - - if global_position != previous_position: - queue_redraw() - - -func can_build(): - for area in collision_areas: - if area.get_overlapping_areas().size() > 0: - return false - - if area.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() |