| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- class_name GibSpawner
- extends Node
- @export var visuals: Node = null
- @export_enum("Spin", "Drop", "Poof") var gib_type := 0
- @export var play_death_sfx := true
- const ENTITY_GIB = preload("res://Scenes/Prefabs/Entities/EntityGib.tscn")
- signal gib_about_to_spawn
- func summon_gib(direction := 1, play_sfx := play_death_sfx, override_gib_type := gib_type) -> void:
- gib_about_to_spawn.emit()
- if play_sfx:
- play_die_sfx()
- if override_gib_type == 2:
- summon_poof()
- return
- var node = ENTITY_GIB.instantiate()
- visuals.show()
- if visuals.has_node("ResourceSetterNew"):
- visuals.get_node("ResourceSetterNew").update_on_spawn = false
- node.visuals = visuals.duplicate()
- node.visuals.set_process(false)
- node.global_position = visuals.global_position
- node.visuals.position = Vector2.ZERO
- node.visuals.offset = Vector2.ZERO
- node.gib_type = override_gib_type
- node.direction = direction
- owner.add_sibling(node)
- func play_die_sfx() -> void:
- AudioManager.play_sfx("kick", owner.global_position)
- const SMOKE_PARTICLE = preload("uid://d08nv4qtfouv1")
- func summon_poof() -> void:
- var particle = SMOKE_PARTICLE.instantiate()
- particle.global_position = visuals.global_position + Vector2(0, 8)
- owner.add_sibling(particle)
- func stomp_die(player: Player, add_combo := true) -> void:
- DiscoLevel.combo_amount += 1
- AudioManager.play_sfx("enemy_stomp", owner.global_position)
- player.enemy_bounce_off(add_combo)
- summon_gib(1, false, 1)
- owner.queue_free()
|