Super-Mario-Bros-Remastered.../Scripts/UI/MarathonSelect.gd
jdaster64 07c95b1b35
Changed target time comparisons to round down to nearest centisecond (#708)
* Changed target time comparisons in many places to round each side down to the nearest 0.01 seconds

* Add met_target_time to MarathonSelect script
2025-11-22 16:36:49 +00:00

56 lines
2.1 KiB
GDScript

extends Control
signal full_run_selected
signal level_run_selected
signal cancelled
var selected := 0
var active := false
func open() -> void:
setup_visuals()
[$PanelContainer/VBoxContainer/HBoxContainer/Full, $PanelContainer/VBoxContainer/HBoxContainer/Level][selected].grab_focus()
show()
await get_tree().process_frame
active = true
func close() -> void:
hide()
active = false
func _process(_delta: float) -> void:
if active:
if Input.is_action_just_pressed("ui_accept"):
[full_run_selected, level_run_selected][selected].emit()
Global.current_game_mode = [Global.GameMode.MARATHON, Global.GameMode.MARATHON_PRACTICE][selected]
close()
elif Input.is_action_just_pressed("ui_back"):
close()
cancelled.emit()
if Input.is_action_just_pressed("ui_left"):
selected -= 1
if Input.is_action_just_pressed("ui_right"):
selected += 1
selected = clamp(selected, 0, 1)
%MarathonName.text = ["MARATHON_FULL", "MARATHON_LEVEL"][selected]
for i in [$PanelContainer/VBoxContainer/HBoxContainer/Full, $PanelContainer/VBoxContainer/HBoxContainer/Level]:
i.get_node("Label").visible = selected == i.get_index()
func setup_visuals() -> void:
if SpeedrunHandler.marathon_best_warpless_time <= 0:
%FullRunPB.text = "--:--:--"
else:
%FullRunPB.text = SpeedrunHandler.gen_time_string(SpeedrunHandler.format_time(SpeedrunHandler.marathon_best_warpless_time))
if SpeedrunHandler.marathon_best_any_time <= 0:
%WarpedRunPB.text = "--:--:--"
else:
%WarpedRunPB.text = SpeedrunHandler.gen_time_string(SpeedrunHandler.format_time(SpeedrunHandler.marathon_best_any_time))
for i in %FullMedals.get_children():
i.get_node("Full").visible = SpeedrunHandler.met_target_time(
SpeedrunHandler.marathon_best_warpless_time, SpeedrunHandler.GOLD_WARPLESS_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()])
for i in %WarpedMedals.get_children():
i.get_node("Full").visible = SpeedrunHandler.met_target_time(
SpeedrunHandler.marathon_best_any_time, SpeedrunHandler.GOLD_ANY_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()])