| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- extends Node2D
- @export var play_end_music := false
- var can_menu := false
- const ENDING = preload("res://Assets/Audio/BGM/Ending.mp3")
- func _ready() -> void:
- if $Sprite is AnimatedSprite2D and Global.current_campaign == "SMBANN":
- $Sprite.play("Idle")
- Global.level_complete_begin.connect(begin)
- for i in [$SpeedrunMSG/ThankYou, $StandardMSG/ThankYou]:
- i.text = tr(i.text).replace("{PLAYER}", tr(Player.CHARACTER_NAMES[int(Global.player_characters[0])]))
- func begin() -> void:
- $StaticBody2D/CollisionShape2D.set_deferred("disabled", false)
- %PBMessage.modulate.a = int(SpeedrunHandler.timer < SpeedrunHandler.best_time)
- if play_end_music:
- Global.game_beaten = true
- SaveManager.write_save()
- play_music()
- %Time.text = tr(%Time.text).replace("{TIME}", SpeedrunHandler.gen_time_string(SpeedrunHandler.format_time(SpeedrunHandler.timer)))
- $CameraRightLimit._enter_tree()
- await get_tree().create_timer(3, false).timeout
- if Global.current_game_mode == Global.GameMode.MARATHON_PRACTICE or (Global.current_game_mode == Global.GameMode.MARATHON and play_end_music):
- show_message($SpeedrunMSG)
- else:
- show_message($StandardMSG)
- if not play_end_music:
- await get_tree().create_timer(7, false).timeout
- exit_level()
- func exit_level() -> void:
- match Global.current_game_mode:
- Global.GameMode.MARATHON_PRACTICE:
- Global.open_marathon_results()
- Global.GameMode.CUSTOM_LEVEL:
- Global.transition_to_scene("res://Scenes/Levels/CustomLevelMenu.tscn")
- Global.GameMode.LEVEL_EDITOR:
- Global.level_editor.stop_testing()
- _:
- if Global.current_campaign == "SMBANN":
- Global.open_disco_results()
- return
- if Global.world_num < 1:
- Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
- else:
- Global.current_level.transition_to_next_level()
- func do_tally() -> void:
- pass
- func play_music() -> void:
- await AudioManager.music_override_player.finished
- AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.ENDING, 999999, false)
- if [Global.GameMode.MARATHON, Global.GameMode.MARATHON_PRACTICE].has(Global.current_game_mode) == false:
- show_message($EndingSpeech)
- await get_tree().create_timer(5, false).timeout
- can_menu = true
- else:
- can_menu = true
- func _process(_delta: float) -> void:
- if can_menu and Input.is_action_just_pressed("jump_0"):
- can_menu = false
- peach_level_exit()
- func show_message(message_node: Node) -> void:
- for i in message_node.get_children():
- i.show()
- await get_tree().create_timer(1).timeout
- func peach_level_exit() -> void:
- match Global.current_game_mode:
- Global.GameMode.MARATHON:
- Global.open_marathon_results()
- Global.GameMode.MARATHON_PRACTICE:
- Global.open_marathon_results()
- Global.GameMode.CUSTOM_LEVEL:
- Global.transition_to_scene("res://Scenes/Levels/CustomLevelMenu.tscn")
- Global.GameMode.LEVEL_EDITOR:
- Global.level_editor.play_toggle()
- _:
- if Global.current_campaign == "SMBLL" and Global.world_num == 8:
- Global.current_level.transition_to_next_level()
- elif Global.current_game_mode == Global.GameMode.CAMPAIGN:
- CreditsLevel.go_to_title_screen = true
- Global.transition_to_scene("res://Scenes/Levels/Credits.tscn")
- else: Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
|