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 checkpoint = checkpoint0 @onready var checkpointtext = $Label_Station var time_accum = 0.0 # Timer accumulator @onready var player = get_node("Player") var elapsed_time := 0.0 var restart_count = 0 func _ready() -> void: var player = get_node("Player") $Label_Station.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 elif Input.is_action_just_pressed("proluz_ui_reset"): get_tree().reload_current_scene() var player = get_node("Player") $Label_Controls2.text = get_formatted_time() # Health bar if player.health == 100: $Label_Health.text = "[//////////]" $Label_Health.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 90: $Label_Health.text = "[/////////·]" $Label_Health.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 80: $Label_Health.text = "[////////··]" $Label_Health.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 70: $Label_Health.text = "[///////···]" $Label_Health.add_theme_color_override("font_color", Color.GREEN) elif player.health >= 60: $Label_Health.text = "[//////····]" $Label_Health.add_theme_color_override("font_color", Color.GREEN_YELLOW) elif player.health >= 50: $Label_Health.text = "[/////·····]" $Label_Health.add_theme_color_override("font_color", Color.GREEN_YELLOW) elif player.health >= 40: $Label_Health.text = "[////······]" $Label_Health.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 30: $Label_Health.text = "[///·······]" $Label_Health.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 20: $Label_Health.text = "[//········]" $Label_Health.add_theme_color_override("font_color", Color.YELLOW) elif player.health >= 10: $Label_Health.text = "[/·········]" $Label_Health.add_theme_color_override("font_color", Color.INDIAN_RED) elif player.health >= 1: $Label_Health.text = "[|·········][CRITICAL]" $Label_Health.add_theme_color_override("font_color", Color.RED) elif player.health == 0: $Label_Health.text = "[··········][DEAD/Shift+R to revive]" $Label_Health.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