Peashooters

This commit is contained in:
Rendo 2025-08-09 21:35:02 +05:00
commit 68cfe89f1d
47 changed files with 1571 additions and 279 deletions

View file

@ -0,0 +1,45 @@
extends Area2D
class_name GenericHurtbox
@export_flags("NORMAL:1","LOW:2","HIGH:4") var lookup_layers : int = 0
var entities : Array[Entity] = []
signal entity_added(entity : Entity)
signal entity_removed(entity : Entity)
signal collision_start
signal collision_end
func _ready() -> void:
area_entered.connect(on_area_entered)
area_exited.connect(on_area_exited)
func on_area_entered(area: Area2D):
if area is GenericCollider:
if lookup_layers & area.layer != 0:
add_entity(area.get_parent())
func on_area_exited(area: Area2D):
if area is GenericCollider:
if lookup_layers & area.layer != 0:
remove_entity(area.get_parent())
func add_entity(entity : Entity):
entities.append(entity)
entity_added.emit(entity)
if entities.size() == 1:
collision_start.emit()
func remove_entity(entity : Entity):
entities.erase(entity)
entity_removed.emit(entity)
if entities.size() == 0:
collision_end.emit()
func get_colliding_entity() -> Entity:
if entities.size() == 0:
return null
return entities[0]
func is_colliding() -> bool:
return entities.size() > 0