extends Node const Text3D = preload("res://objects/hud/3d_text.tscn") const SubmitScore = preload("res://menus/submit_score.tscn") const LevelSelect := preload("res://menus/level_select_scholar.tscn") onready var shards: Node2D = $ShardsAndBonuses/Shards onready var score = $Score onready var time = $Time onready var final_score: Label = $FinalScore onready var animation_player = $AnimationPlayer #Score bonuses onready var collection_bonus_score = $ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore onready var time_bonus_score = $ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore onready var life_bonus_score = $ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore onready var arrow_bonus_score = $ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore onready var perfect_bonus_score = $ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore var text_3d = null func _notification(what: int) -> void: match what: NOTIFICATION_WM_FOCUS_OUT: $AnimationPlayer.playback_active = false NOTIFICATION_WM_FOCUS_IN: $AnimationPlayer.playback_active = true func _ready() -> void: #preload final score text_3d = Text3D.instance() text_3d.anim = "final score" yield(get_tree(), "idle_frame") self.add_child(text_3d) text_3d.animation_player.set_speed_scale(0) Fade.fade_in(Options.transition_speed_secs) # fill in shard names var level: LevelEntry = LevelData.levels[Game.current_level] for i in 5: var shard = shards.get_child(i) shard.get_node("Title").text = level.shard_titles[i] score.text = str("SCORE:") + "%05d" % Game.score time.text = str("TIME: ") + Game.format_time(Game.time) #Determine score bonuses collection_bonus_score.text = str("+") + str(Game.collection_bonus) time_bonus_score.text = str("+") + str(Game.time_bonus) life_bonus_score.text = str("+") + str(Game.life_bonus) arrow_bonus_score.text = str("+") + str(Game.arrows_bonus) perfect_bonus_score.text = str("+") + str(Game.perfect_bonus) func _physics_process(delta: float) -> void: if Input.is_action_just_released("ui_accept"): animation_player.set_speed_scale(4) func final_score(): animation_player.set_speed_scale(2) text_3d.animation_player.set_speed_scale(1) func _on_AnimationPlayer_animation_finished(anim_name): if Game.marathon_mode: Game.current_level += 1 if Game.current_level > LevelData.marathon_end: Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) else: Game.change_map(LevelData.levels[Game.current_level].scene) return Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") if Debug.is_cheating == false: SceneManager.change_scene(SubmitScore.instance()) else: SceneManager.change_scene(LevelSelect.instance())