197 lines
7.3 KiB
GDScript
197 lines
7.3 KiB
GDScript
# Do not change those values
|
|
extends Node3D
|
|
|
|
var paused = false
|
|
@onready var pause_menu = $PauseMenu
|
|
var checkpoint = checkpoint0
|
|
@onready var healthtext = $HUD/HBoxContainer/VBoxContainer/Label_Health
|
|
@onready var checkpointtext = $HUD/HBoxContainer/VBoxContainer/Label_Station
|
|
@onready var narrationtext = $HUD/HBoxContainer2/VBoxContainer2/Label
|
|
@onready var player = get_node("Player")
|
|
var time_accum = 0.0 # Timer accumulator
|
|
var elapsed_time := 0.0
|
|
var restart_count = 0
|
|
|
|
var checkpoint0 = Vector3(0, 1.5, 0)
|
|
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)
|
|
|
|
func wait(specifiedsecond: float):
|
|
await get_tree().create_timer(4).timeout
|
|
|
|
func _on_audio_finished():
|
|
player.newmusicplayer.play()
|
|
|
|
func _ready() -> void:
|
|
# var player = get_node("%Player")
|
|
# player.newmusicplayer.finished.connect(_on_audio_finished)
|
|
checkpointtext.text = "station 0"
|
|
narrationtext.hide()
|
|
narrationtext.show()
|
|
narrate("Hi.")
|
|
await get_tree().create_timer(2).timeout
|
|
narrate("You probably have no idea who I could be.")
|
|
await get_tree().create_timer(4).timeout
|
|
narrate("But I've been watching you.")
|
|
await get_tree().create_timer(3).timeout
|
|
narrate("Closely.")
|
|
await get_tree().create_timer(2).timeout
|
|
narrate("You don't know it yet, but essentially, \nI guess you could call me a different version \nof what you happen to be.")
|
|
await get_tree().create_timer(8).timeout
|
|
narrate("I am what you think. I am you.")
|
|
await get_tree().create_timer(3).timeout
|
|
narrate("Sure, it may sound weird, but I am you, but not at the same time.\nI can speak, you can't, at least not yet.")
|
|
await get_tree().create_timer(7).timeout
|
|
narrate("I will be here.")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Everywhere you go.")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Thinking.")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Seeing.")
|
|
player.musicplayer.stream = load("res://assets/audio/FlyingHomeIntro.ogg")
|
|
player.musicplayer.play()
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Talking.")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Acting.")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("So good that sometimes you won't even notice I'm here.")
|
|
await get_tree().create_timer(4).timeout
|
|
narrate("It's like I live in your mind.")
|
|
await get_tree().create_timer(2).timeout
|
|
narrate("Although,")
|
|
await get_tree().create_timer(1).timeout
|
|
narrate("Although, there's no reason to be scared of me.")
|
|
await get_tree().create_timer(4).timeout
|
|
narrate("After all, I'm a part of your thoughts, without me you probably\nwouldn't be alive due to some dumb shit\nyou'd be likely to do.")
|
|
await get_tree().create_timer(8).timeout
|
|
narrate("Must feel like a lucid dream, huh?")
|
|
await get_tree().create_timer(3).timeout
|
|
narrate("Kind of almost as lucid as...")
|
|
await get_tree().create_timer(3).timeout
|
|
narrationtext.hide()
|
|
player.musicplayer.stream = load("res://assets/audio/FlyingHomeMain.ogg")
|
|
player.musicplayer.stream.loop = true
|
|
player.musicplayer.play()
|
|
# player.musicplayer.stream.loop = true
|
|
narrationtext.text = ""
|
|
narrationtext.show()
|
|
$PROLUZ_LOGO.show()
|
|
await get_tree().create_timer(1.9).timeout
|
|
# $PROLUZ_LOGO.hide()
|
|
narrationtext.text = "Music playing is \"FSM Team - Flying Home\""
|
|
await get_tree().create_timer(1.71).timeout
|
|
narrationtext.text = "Published by Lintine GS2EB"
|
|
await get_tree().create_timer(1.71).timeout
|
|
narrationtext.text = "Solo project by kevadesu"
|
|
await get_tree().create_timer(1.71).timeout
|
|
narrationtext.text = "Without initial experience in Godot"
|
|
await get_tree().create_timer(1.71).timeout
|
|
narrationtext.text = "Started as a school project"
|
|
await get_tree().create_timer(1.71).timeout
|
|
narrationtext.hide()
|
|
$PROLUZ_LOGO.hide()
|
|
|
|
# narrationtext.hide()
|
|
# 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 _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()
|
|
restart_count = restart_count + 1
|
|
elif Input.is_action_just_pressed("proluz_ui_reset"):
|
|
get_tree().reload_current_scene()
|
|
var player = get_node("Player")
|
|
$HUD/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 narrate(text: String):
|
|
player.audioplayer.stream = load("res://addons/kenney_ui_audio/switch38.wav")
|
|
player.audioplayer.play()
|
|
narrationtext.text = text
|
|
|
|
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
|
|
player.musicplayer.stream_paused = false
|
|
player.newmusicplayer.stream_paused = false
|
|
player.audioplayer.stream_paused = false
|
|
else:
|
|
pause_menu.show()
|
|
Engine.time_scale = 0.00001
|
|
player.musicplayer.stream_paused = true
|
|
player.newmusicplayer.stream_paused = true
|
|
player.audioplayer.stream_paused = true
|
|
|
|
paused = !paused
|