diff --git a/Characters/Player/Player.gd b/Characters/Player/Player.gd index 0ae7a80..66f0ad9 100644 --- a/Characters/Player/Player.gd +++ b/Characters/Player/Player.gd @@ -67,6 +67,8 @@ func _ready(): area.connect("area_entered", self, "_on_area_entered") area.connect("area_exited", self, "_on_area_exited") + Daytime.connect("respawn", self, "_on_respawn") + func _physics_process(delta): process_input() @@ -192,7 +194,7 @@ func _on_area_entered (area: Area): get_node("AudioStreamPlayer3D").play() yield(get_node("AudioStreamPlayer3D"), "finished") - _reset_scene() # TODO: call per event -> also raise if Meldewesen is looking at player and pill level reaches treshold! + _on_respawn() # TODO: also raise if Meldewesen is looking at player and pill level reaches treshold! elif area.is_in_group("Forbidden"): Logger.info("entering forbidden area!") _illegal_areas += 1 @@ -204,14 +206,21 @@ func _on_area_exited (area: Area): _illegal_areas -= 1 -func _reset_scene (): +func _on_respawn (): + Logger.info("respawning") + # fade to black and restart scene + _inventory.hide() _animationFadeOut.play("FadeOut") yield(_animationFadeOut, "animation_finished") # reset values _animationFadeOut.seek(0, true) - Daytime.reset() + + Pills._set_level(Pills.get_max()) + Daytime._set_time(0) + + get_tree().reload_current_scene() func Is_in_Illegal_Area (): diff --git a/Global/Daytime.gd b/Global/Daytime.gd index 6d3a709..8084d43 100644 --- a/Global/Daytime.gd +++ b/Global/Daytime.gd @@ -1,15 +1,11 @@ extends Node -const _increase_per_second: float = 30.0 #0.5 +const _increase_per_second: float = 100.0 #0.5 const _max: int = 1440 # 24 hour + 60 mins var _time: float setget _set_time, get_time - -func reset (): - get_tree().reload_current_scene() - Pills._set_level(Pills.get_max()) - _time = 0 +signal respawn func _set_time (new_time: float): @@ -28,4 +24,5 @@ func _process (delta: float) -> void: # continually increases daytime _set_time(_time + _increase_per_second * delta) if _time >= _max: - reset() + _time = 0 + emit_signal("respawn")