mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00

This PR changes the End Final Castle to use the Special visuals when the level is in the SMBS campaign. This is primarily for the Level Editor / Custom Levels and isn't really necessary for the main campaigns. Hence the added check to see if the Level Editor is used.
118 lines
3.3 KiB
GDScript
118 lines
3.3 KiB
GDScript
extends Node2D
|
|
|
|
var time_save := 0
|
|
|
|
signal finished_sequence
|
|
const FIREWORK = preload("res://Scenes/Prefabs/Particles/Firework.tscn")
|
|
|
|
var tally_finished := false
|
|
var music_finished := false
|
|
var tree = null
|
|
var show_walls := false
|
|
var doing_sequence := false
|
|
|
|
var can_transition := false
|
|
|
|
static var is_transitioning := false
|
|
|
|
func _ready() -> void:
|
|
await Global.level_complete_begin
|
|
$Overlay.show()
|
|
$OverlaySprite.show()
|
|
$Overlay/PlayerDetection.set_collision_layer_value(1, true)
|
|
Global.score_tally_finished.connect(on_tally_finished)
|
|
if Global.current_game_mode == Global.GameMode.BOO_RACE:
|
|
get_tree().create_timer(3.5, false).timeout.connect(on_music_finished)
|
|
else:
|
|
get_tree().create_timer(5.5, false).timeout.connect(on_music_finished)
|
|
time_save = Global.time
|
|
|
|
func update_cam_limit() -> void:
|
|
$CameraRightLimit._enter_tree()
|
|
|
|
func _process(_delta: float) -> void:
|
|
$Overlay.modulate.a = int($SmallCastleVisual.use_sprite == false)
|
|
if Global.level_editor != null && scene_file_path == "res://Scenes/Prefabs/LevelObjects/EndFinalCastle.tscn":
|
|
var is_smbs: bool = Global.current_campaign == "SMBS"
|
|
$SmallCastleVisual.visible = !is_smbs
|
|
$SmallCastleVisual2.visible = is_smbs
|
|
if get_node_or_null("Wall") != null:
|
|
%Wall.visible = show_walls
|
|
|
|
func on_music_finished() -> void:
|
|
do_sequence()
|
|
|
|
func on_tally_finished() -> void:
|
|
$FlagJoint/Flag/AnimationPlayer.play("Raise")
|
|
|
|
func do_sequence() -> void:
|
|
if Global.current_game_mode != Global.GameMode.BOO_RACE:
|
|
await get_tree().create_timer(1, false).timeout
|
|
if Global.current_campaign == "SMBLL":
|
|
await do_lost_levels_firework_check()
|
|
else:
|
|
await do_firework_check()
|
|
await get_tree().create_timer(1, false).timeout
|
|
if is_transitioning == false:
|
|
is_transitioning = true
|
|
exit_level()
|
|
|
|
func do_firework_check() -> void:
|
|
var digit = time_save % 10
|
|
if [1, 3, 6].has(digit):
|
|
await show_fireworks(digit)
|
|
return
|
|
|
|
func do_lost_levels_firework_check() -> void:
|
|
var coin_digit = Global.coins % 10
|
|
var time_digit = time_save % 10
|
|
if coin_digit == time_digit:
|
|
if coin_digit % 2 == 0:
|
|
await show_fireworks(6)
|
|
if coin_digit % 11 == 0:
|
|
spawn_one_up_note()
|
|
AudioManager.play_sfx("1_up", global_position)
|
|
Global.lives += 1
|
|
else:
|
|
await show_fireworks(3)
|
|
|
|
const ONE_UP_NOTE = preload("uid://dopxwjj37gu0l")
|
|
|
|
func spawn_one_up_note() -> void:
|
|
var note = ONE_UP_NOTE.instantiate()
|
|
note.global_position = global_position + Vector2(0, -16)
|
|
owner.add_sibling(note)
|
|
|
|
func _exit_tree() -> void:
|
|
is_transitioning = false
|
|
|
|
func show_fireworks(amount := 0) -> void:
|
|
for i in amount:
|
|
spawn_firework()
|
|
await get_tree().create_timer(0.5, false).timeout
|
|
|
|
func spawn_firework() -> void:
|
|
var node = FIREWORK.instantiate()
|
|
Global.score += 500
|
|
node.position.x = randf_range(-48, 48)
|
|
node.position.y = randf_range(-112, -150)
|
|
add_child(node)
|
|
AudioManager.play_sfx("firework", node.global_position)
|
|
|
|
|
|
func exit_level() -> void:
|
|
await Global.frame_rule
|
|
match Global.current_game_mode:
|
|
Global.GameMode.MARATHON_PRACTICE:
|
|
Global.reset_values()
|
|
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()
|
|
else:
|
|
Global.current_level.transition_to_next_level()
|