projektluzid/main.gd
2025-05-18 17:58:59 +02:00

107 lines
3.7 KiB
GDScript

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