extends Node3D @onready var pause_menu = $PauseMenu var paused = false #var showpaused = false var checkpoint0 = Vector3(0, 2, 1.374) var checkpoint1 = Vector3(-27.5, 13, 12.5) var checkpoint2 = Vector3(0, 22, 1.374) var checkpoint3 = Vector3(-50, 25, -5) var terminus = Vector3(-8, -8.5, 9.5) var checkpoint = checkpoint0 @onready var checkpointtext = $MarginContainer/HBoxContainer/VBoxContainer/Label_Station var time_accum = 0.0 # Timer accumulator @onready var player = get_node("Player") var elapsed_time := 0.0 var restart_count = 0 @onready var healthtext = $MarginContainer/HBoxContainer2/Label_Health func _ready() -> void: var player = get_node("Player") checkpointtext.text = "station 0" # while true: # wait(5) # print(player.checkpoint) # DEBUG SECTION: Testing whether checkpoint value is accessible by printing it every 4 seconds #func _process(delta: float) -> void: # var player = get_node("Player") # time_accum += delta # if time_accum >= 4.0: # print("Checkpoint:", player.checkpoint) # time_accum = 0.0 func wait(seconds: float) -> void: await get_tree().create_timer(seconds).timeout func _process(delta: float): elapsed_time += delta if Input.is_action_just_pressed("ui_cancel"): Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) pauseMenu() elif Input.is_action_just_pressed("proluz_ui_respawn"): var player = get_node("Player") player.teleport_to_checkpoint() player.health = 100 Engine.time_scale = 1 player.audioplayer.stream = load("res://assets/audio/Revive.wav") player.audioplayer.play() elif Input.is_action_just_pressed("proluz_ui_reset"): get_tree().reload_current_scene() var player = get_node("Player") $MarginContainer/HBoxContainer/VBoxContainer/Label_Controls2.text = get_formatted_time() # Health bar if player.health == 100: healthtext.text = "[//////////]" healthtext.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 90: healthtext.text = "[/////////·]" healthtext.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 80: healthtext.text = "[////////··]" healthtext.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 70: healthtext.text = "[///////···]" healthtext.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 60: healthtext.text = "[//////····]" healthtext.add_theme_color_override("font_color", Color.GREEN_YELLOW) elif player.health >= 50: healthtext.text = "[/////·····]" healthtext.add_theme_color_override("font_color", Color.GREEN_YELLOW) elif player.health >= 40: healthtext.text = "[////······]" healthtext.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 30: healthtext.text = "[///·······]" healthtext.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 20: healthtext.text = "[//········]" healthtext.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 10: healthtext.text = "[/·········]" healthtext.add_theme_color_override("font_color", Color.INDIAN_RED) elif player.health >= 1: healthtext.text = "[|·········][CRITICAL]" healthtext.add_theme_color_override("font_color", Color.RED) elif player.health == 0: healthtext.text = "[··········][DEAD/Shift+R to revive]" healthtext.add_theme_color_override("font_color", Color.MEDIUM_PURPLE) Engine.time_scale = 0.001 func get_formatted_time() -> String: var total_milliseconds = int(elapsed_time * 1000) var minutes = total_milliseconds / 60000 var seconds = (total_milliseconds % 60000) / 1000 var milliseconds = total_milliseconds % 1000 return "time: %02d:%02d.%03d" % [minutes, seconds, milliseconds] func pauseMenu(): if paused: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) pause_menu.hide() Engine.time_scale = 1 else: pause_menu.show() Engine.time_scale = 0.00001 # Engine.time_scale = -1 paused = !paused