You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
8.1 KiB
251 lines
8.1 KiB
2 years ago
|
extends Node
|
||
|
|
||
|
var res_loader: ResourceInteractiveLoader = null
|
||
|
var loading_thread: Thread = null
|
||
|
|
||
|
signal replace_main_scene
|
||
|
#warning-ignore:unused_signal
|
||
|
signal quit # Useless, but needed as there is no clean way to check if a node exposes a signal
|
||
|
|
||
|
var level_path = [
|
||
|
"res://level/catalunya/catalunya.tscn", # Home
|
||
|
"res://level/test_map1/test_map1.tscn", # test_map1
|
||
|
]
|
||
|
|
||
|
onready var ui = $UI
|
||
|
onready var background = ui.get_node(@"Background")
|
||
|
onready var title = ui.get_node(@"Title")
|
||
|
onready var main = ui.get_node(@"Main")
|
||
|
onready var main_buttons = main.get_node(@"MainButtons")
|
||
|
onready var begin_button = main_buttons.get_node(@"Begin")
|
||
|
onready var game_settings_button = main_buttons.get_node(@"GameSettings")
|
||
|
onready var graphics_settings_button = main_buttons.get_node(@"GraphicsSettings")
|
||
|
onready var credits_button = main_buttons.get_node(@"Credits")
|
||
|
onready var exit_button = main_buttons.get_node(@"Exit")
|
||
|
onready var level_list = main.get_node(@"LevelList")
|
||
|
|
||
|
onready var graphics_settings_menu = ui.get_node(@"GraphicsSettings")
|
||
|
onready var graphics_settings_actions = graphics_settings_menu.get_node(@"Actions")
|
||
|
onready var graphics_settings_action_apply = graphics_settings_actions.get_node(@"ApplyGraphics")
|
||
|
onready var graphics_settings_action_cancel = graphics_settings_actions.get_node(@"CancelGraphics")
|
||
|
|
||
|
onready var credits_menu = ui.get_node(@"Credits")
|
||
|
onready var credits_back_button = credits_menu.get_node(@"BackCredits")
|
||
|
|
||
|
onready var gi_menu = graphics_settings_menu.get_node(@"GI")
|
||
|
onready var gi_high = gi_menu.get_node(@"High")
|
||
|
onready var gi_low = gi_menu.get_node(@"Low")
|
||
|
onready var gi_disabled = gi_menu.get_node(@"Disabled")
|
||
|
|
||
|
onready var aa_menu = graphics_settings_menu.get_node(@"AA")
|
||
|
onready var aa_8x = aa_menu.get_node(@"8X")
|
||
|
onready var aa_4x = aa_menu.get_node(@"4X")
|
||
|
onready var aa_2x = aa_menu.get_node(@"2X")
|
||
|
onready var aa_disabled = aa_menu.get_node(@"Disabled")
|
||
|
|
||
|
onready var ssao_menu = graphics_settings_menu.get_node(@"SSAO")
|
||
|
onready var ssao_high = ssao_menu.get_node(@"High")
|
||
|
onready var ssao_low = ssao_menu.get_node(@"Low")
|
||
|
onready var ssao_disabled = ssao_menu.get_node(@"Disabled")
|
||
|
|
||
|
onready var bloom_menu = graphics_settings_menu.get_node(@"Bloom")
|
||
|
onready var bloom_high = bloom_menu.get_node(@"High")
|
||
|
onready var bloom_low = bloom_menu.get_node(@"Low")
|
||
|
onready var bloom_disabled = bloom_menu.get_node(@"Disabled")
|
||
|
|
||
|
onready var resolution_menu = graphics_settings_menu.get_node(@"Resolution")
|
||
|
onready var resolution_native = resolution_menu.get_node(@"Native")
|
||
|
onready var resolution_1080 = resolution_menu.get_node(@"1080")
|
||
|
onready var resolution_720 = resolution_menu.get_node(@"720")
|
||
|
onready var resolution_540 = resolution_menu.get_node(@"540")
|
||
|
|
||
|
onready var fullscreen_menu = graphics_settings_menu.get_node(@"Fullscreen")
|
||
|
onready var fullscreen_yes = fullscreen_menu.get_node(@"Yes")
|
||
|
onready var fullscreen_no = fullscreen_menu.get_node(@"No")
|
||
|
|
||
|
onready var loading = ui.get_node(@"Loading")
|
||
|
onready var loading_progress = loading.get_node(@"Progress")
|
||
|
onready var loading_done_timer = loading.get_node(@"DoneTimer")
|
||
|
|
||
|
func _ready():
|
||
|
get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_2D, SceneTree.STRETCH_ASPECT_KEEP, Vector2(1920, 1080))
|
||
|
begin_button.grab_focus()
|
||
|
#var sound_effects = $BackgroundCache/RedRobot/SoundEffects
|
||
|
#for child in sound_effects.get_children():
|
||
|
# child.unit_db = -200
|
||
|
|
||
|
|
||
|
func interactive_load(loader):
|
||
|
while true:
|
||
|
var status = loader.poll()
|
||
|
if status == OK:
|
||
|
loading_progress.value = (loader.get_stage() * 100) / loader.get_stage_count()
|
||
|
continue
|
||
|
elif status == ERR_FILE_EOF:
|
||
|
loading_progress.value = 100
|
||
|
loading_done_timer.start()
|
||
|
break
|
||
|
else:
|
||
|
print("Error while loading level: " + str(status))
|
||
|
main.show()
|
||
|
title.show()
|
||
|
background.hide()
|
||
|
loading.hide()
|
||
|
break
|
||
|
|
||
|
|
||
|
func loading_done(loader):
|
||
|
loading_thread.wait_to_finish()
|
||
|
emit_signal("replace_main_scene", loader.get_resource())
|
||
|
res_loader = null
|
||
|
# Weirdly, "res_loader = null" is needed as otherwise
|
||
|
# loading the resource again is not possible.
|
||
|
|
||
|
|
||
|
func _on_loading_done_timer_timeout():
|
||
|
loading_done(res_loader)
|
||
|
|
||
|
|
||
|
func _on_begin_pressed():
|
||
|
main.hide()
|
||
|
loading.show()
|
||
|
var path = level_path[level_list.get_selected_items()[0]]
|
||
|
if ResourceLoader.has_cached(path):
|
||
|
emit_signal("replace_main_scene", ResourceLoader.load(path))
|
||
|
else:
|
||
|
res_loader = ResourceLoader.load_interactive(path)
|
||
|
loading_thread = Thread.new()
|
||
|
#warning-ignore:return_value_discarded
|
||
|
loading_thread.start(self, "interactive_load", res_loader)
|
||
|
|
||
|
func _on_graphics_settings_pressed():
|
||
|
main.hide()
|
||
|
title.hide()
|
||
|
background.show()
|
||
|
graphics_settings_menu.show()
|
||
|
graphics_settings_action_cancel.grab_focus()
|
||
|
|
||
|
if Settings.gi_quality == Settings.GIQuality.HIGH:
|
||
|
gi_high.pressed = true
|
||
|
elif Settings.gi_quality == Settings.GIQuality.LOW:
|
||
|
gi_low.pressed = true
|
||
|
elif Settings.gi_quality == Settings.GIQuality.DISABLED:
|
||
|
gi_disabled.pressed = true
|
||
|
|
||
|
if Settings.aa_quality == Settings.AAQuality.AA_8X:
|
||
|
aa_8x.pressed = true
|
||
|
elif Settings.aa_quality == Settings.AAQuality.AA_4X:
|
||
|
aa_4x.pressed = true
|
||
|
elif Settings.aa_quality == Settings.AAQuality.AA_2X:
|
||
|
aa_2x.pressed = true
|
||
|
elif Settings.aa_quality == Settings.AAQuality.DISABLED:
|
||
|
aa_disabled.pressed = true
|
||
|
|
||
|
if Settings.ssao_quality == Settings.SSAOQuality.HIGH:
|
||
|
ssao_high.pressed = true
|
||
|
elif Settings.ssao_quality == Settings.SSAOQuality.LOW:
|
||
|
ssao_low.pressed = true
|
||
|
elif Settings.ssao_quality == Settings.SSAOQuality.DISABLED:
|
||
|
ssao_disabled.pressed = true
|
||
|
|
||
|
if Settings.bloom_quality == Settings.BloomQuality.HIGH:
|
||
|
bloom_high.pressed = true
|
||
|
elif Settings.bloom_quality == Settings.BloomQuality.LOW:
|
||
|
bloom_low.pressed = true
|
||
|
elif Settings.bloom_quality == Settings.BloomQuality.DISABLED:
|
||
|
bloom_disabled.pressed = true
|
||
|
|
||
|
if Settings.resolution == Settings.Resolution.NATIVE:
|
||
|
resolution_native.pressed = true
|
||
|
elif Settings.resolution == Settings.Resolution.RES_1080:
|
||
|
resolution_1080.pressed = true
|
||
|
elif Settings.resolution == Settings.Resolution.RES_720:
|
||
|
resolution_720.pressed = true
|
||
|
elif Settings.resolution == Settings.Resolution.RES_540:
|
||
|
resolution_540.pressed = true
|
||
|
|
||
|
if Settings.fullscreen:
|
||
|
fullscreen_yes.pressed = true
|
||
|
else:
|
||
|
fullscreen_no.pressed = true
|
||
|
|
||
|
|
||
|
func _on_exit_pressed():
|
||
|
get_tree().quit()
|
||
|
|
||
|
|
||
|
func _on_apply_graphics_pressed():
|
||
|
main.show()
|
||
|
title.show()
|
||
|
background.hide()
|
||
|
begin_button.grab_focus()
|
||
|
graphics_settings_menu.hide()
|
||
|
|
||
|
if gi_high.pressed:
|
||
|
Settings.gi_quality = Settings.GIQuality.HIGH
|
||
|
elif gi_low.pressed:
|
||
|
Settings.gi_quality = Settings.GIQuality.LOW
|
||
|
elif gi_disabled.pressed:
|
||
|
Settings.gi_quality = Settings.GIQuality.DISABLED
|
||
|
|
||
|
if aa_8x.pressed:
|
||
|
Settings.aa_quality = Settings.AAQuality.AA_8X
|
||
|
elif aa_4x.pressed:
|
||
|
Settings.aa_quality = Settings.AAQuality.AA_4X
|
||
|
elif aa_2x.pressed:
|
||
|
Settings.aa_quality = Settings.AAQuality.AA_2X
|
||
|
elif aa_disabled.pressed:
|
||
|
Settings.aa_quality = Settings.AAQuality.DISABLED
|
||
|
|
||
|
if ssao_high.pressed:
|
||
|
Settings.ssao_quality = Settings.SSAOQuality.HIGH
|
||
|
elif ssao_low.pressed:
|
||
|
Settings.ssao_quality = Settings.SSAOQuality.LOW
|
||
|
elif ssao_disabled.pressed:
|
||
|
Settings.ssao_quality = Settings.SSAOQuality.DISABLED
|
||
|
|
||
|
if bloom_high.pressed:
|
||
|
Settings.bloom_quality = Settings.BloomQuality.HIGH
|
||
|
elif bloom_low.pressed:
|
||
|
Settings.bloom_quality = Settings.BloomQuality.LOW
|
||
|
elif bloom_disabled.pressed:
|
||
|
Settings.bloom_quality = Settings.BloomQuality.DISABLED
|
||
|
|
||
|
if resolution_native.pressed:
|
||
|
Settings.resolution = Settings.Resolution.NATIVE
|
||
|
elif resolution_1080.pressed:
|
||
|
Settings.resolution = Settings.Resolution.RES_1080
|
||
|
elif resolution_720.pressed:
|
||
|
Settings.resolution = Settings.Resolution.RES_720
|
||
|
elif resolution_540.pressed:
|
||
|
Settings.resolution = Settings.Resolution.RES_540
|
||
|
|
||
|
Settings.fullscreen = fullscreen_yes.pressed
|
||
|
|
||
|
# Apply the setting directly
|
||
|
OS.window_fullscreen = Settings.fullscreen
|
||
|
|
||
|
Settings.save_settings()
|
||
|
|
||
|
|
||
|
func _on_cancel_graphics_pressed():
|
||
|
main.show()
|
||
|
title.show()
|
||
|
background.hide()
|
||
|
begin_button.grab_focus()
|
||
|
graphics_settings_menu.hide()
|
||
|
|
||
|
|
||
|
func _on_back_credits_pressed():
|
||
|
main.show()
|
||
|
background.hide()
|
||
|
begin_button.grab_focus()
|
||
|
credits_menu.hide()
|
||
|
|
||
|
|
||
|
func _on_credits_pressed():
|
||
|
main.hide()
|
||
|
background.show()
|
||
|
credits_back_button.grab_focus()
|
||
|
credits_menu.show()
|