last init

This commit is contained in:
Marek
2026-03-29 16:05:31 +02:00
commit aa2c182534
53 changed files with 1419 additions and 0 deletions

46
scripts/player/respawn.gd Normal file
View File

@@ -0,0 +1,46 @@
extends Node
const RESPAWN_TIME := 3.0
var respawn_timer := 0.0
var is_dead := false
var spawn_position: Vector3
@onready var player: CharacterBody3D = get_parent()
func _ready() -> void:
spawn_position = player.global_position
EventBus.entity_died.connect(_on_entity_died)
func _process(delta: float) -> void:
if is_dead:
respawn_timer -= delta
EventBus.respawn_tick.emit(respawn_timer)
if respawn_timer <= 0:
_respawn()
func _on_entity_died(entity: Node) -> void:
if entity == player and not is_dead:
is_dead = true
respawn_timer = RESPAWN_TIME
player.velocity = Vector3.ZERO
player.get_node("Mesh").visible = false
player.get_node("CollisionShape3D").disabled = true
player.get_node("Movement").set_physics_process(false)
player.get_node("Combat").set_process_unhandled_input(false)
player.get_node("Targeting").set_process_unhandled_input(false)
func _respawn() -> void:
is_dead = false
player.global_position = spawn_position
player.get_node("Mesh").visible = true
player.get_node("CollisionShape3D").disabled = false
player.get_node("Movement").set_physics_process(true)
player.get_node("Combat").set_process_unhandled_input(true)
player.get_node("Targeting").set_process_unhandled_input(true)
var health_node: Node = player.get_node("Health")
var shield_node: Node = player.get_node("Shield")
health_node.current_health = health_node.max_health
shield_node.current_shield = shield_node.max_shield
EventBus.health_changed.emit(player, health_node.current_health, health_node.max_health)
EventBus.shield_changed.emit(player, shield_node.current_shield, shield_node.max_shield)
EventBus.player_respawned.emit(player)