123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- extends Node
- @onready var root = get_tree().current_scene
- @onready var player = null
- @onready var objectives = null
- var low_detail = false
- func _ready():
- var master_bus = AudioServer.get_bus_index("Master")
- var reverb_bus = AudioServer.get_bus_index("Reverb")
- var fullscreen = GameManager.get_user_value("settings", "fullscreen")
- if fullscreen:
- if fullscreen == true: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
- if fullscreen == false: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
- else:
- DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
- GameManager.set_user_value("settings", "fullscreen", true)
-
- if GameManager.get_user_value("settings", "volume"):
- AudioServer.set_bus_volume_linear(master_bus, GameManager.get_user_value("settings", "volume"))
- AudioServer.set_bus_volume_linear(reverb_bus, GameManager.get_user_value("settings", "volume"))
- else:
- GameManager.set_user_value("settings", "volume", db_to_linear(0.0))
-
- refresh_vars()
- func die(message = "you die"):
- if player:
- player.die(message)
- func movement(value):
- refresh_vars()
- if player:
- player.movement = value
- if is_running_on_mobile():
- player.get_node("Neck/Camera3D/mobile controls").visible = value
- func save_scene(scene):
- var save_game = FileAccess.open("user://savegame.save", FileAccess.WRITE)
- save_game.store_line(scene)
- func get_last_scene():
- if FileAccess.file_exists("user://savegame.save"):
- var save_game = FileAccess.open("user://savegame.save", FileAccess.READ)
- return save_game.get_line()
- else:
- return null
- func refresh_vars():
- root = get_tree().current_scene
- if root and root.has_node("Player"):
- player = root.get_node("Player")
- objectives = player.get_node("Neck/Camera3D/objectives")
- func add_objective(text):
- if get_tree().current_scene.name == "Main Menu": return
- refresh_vars()
- var label = Label.new()
- label.text = text
- label.autowrap_mode = TextServer.AUTOWRAP_WORD
- var container = objectives.get_node("container")
- container.add_child(label)
- func remove_objectives():
- if get_tree().current_scene.name == "Main Menu": return
-
- refresh_vars()
- var container = objectives.get_node("container")
- for label in container.get_children():
- label.queue_free()
- func objectives_visible(state):
- if get_tree().current_scene.name == "Main Menu": return
- refresh_vars()
- objectives.visible = state
- func goto_scene(path, save=true):
- TransitionScreen.fade_to_black()
- await TransitionScreen.transitioned
- refresh_vars()
- if save: save_scene(path)
- call_deferred("_deferred_goto_scene", path)
- TransitionScreen.fade_from_black()
- if not is_running_on_mobile():
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- func _deferred_goto_scene(path):
- get_tree().change_scene_to_file(path)
- func is_running_in_web_browser():
- if OS.get_name() == "Web":
- return true
- else:
- return false
- func is_running_on_mobile():
- if OS.get_name() == "Android" or OS.get_name() == "iOS":
- return true
- else:
- #return true
- return false
- func set_low_detail(value):
- low_detail = value
- func set_user_value(section, value_name, value):
- var conf = ConfigFile.new()
- conf.load("user://settings.cfg")
- conf.set_value(section, value_name, value)
- conf.save("user://settings.cfg")
- func get_user_value(section, value_name):
- var conf = ConfigFile.new()
- conf.load("user://settings.cfg")
- if not conf.has_section_key(section, value_name): return null
- return conf.get_value(section, value_name)
|