193 lines
3.6 KiB
GDScript
193 lines
3.6 KiB
GDScript
extends Node2D
|
|
|
|
var MenuScene;
|
|
|
|
func _ready():
|
|
|
|
|
|
SettingsSingleton.CheckVideoSettings();
|
|
SettingsSingleton.CheckAudioSettings();
|
|
SettingsSingleton.CheckDLC();
|
|
|
|
if SettingsSingleton.GetFirstStartup():
|
|
FirstStartup();
|
|
InitMenu();
|
|
return ;
|
|
|
|
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
|
|
|
SettingsSingleton.CheckCurrentLanguage();
|
|
|
|
$Text.text = tr("ui_loading");
|
|
|
|
InitMenu();
|
|
|
|
func FirstStartup():
|
|
var _temp = SceneLoader.connect("on_scene_loaded", self, "LangLoaded")
|
|
SceneLoader.load_scene("res://scenes/SelectLanguageScene.tscn");
|
|
|
|
func LangLoaded(obj):
|
|
if obj.path == "res://scenes/SelectLanguageScene.tscn":
|
|
visible = false;
|
|
get_tree().root.add_child(obj.instance);
|
|
SceneLoader.disconnect("on_scene_loaded", self, "LangLoaded");
|
|
|
|
func InitMenu():
|
|
var _temp = SceneLoader.connect("on_scene_loaded", self, "MenuLoaded")
|
|
var scenes = [
|
|
"res://scenes/MainMenu.tscn",
|
|
"res://scenes/SettingsScene.tscn",
|
|
]
|
|
for i in scenes:
|
|
SceneLoader.load_scene(i);
|
|
|
|
var loadIndex = 0;
|
|
func MenuLoaded(obj):
|
|
loadIndex += 1;
|
|
|
|
if obj.path == "res://scenes/MainMenu.tscn":
|
|
MenuScene = obj.instance;
|
|
|
|
if loadIndex == 2:
|
|
visible = false;
|
|
get_tree().root.add_child(MenuScene);
|
|
|
|
SceneLoader.disconnect("on_scene_loaded", self, "MenuLoaded");
|
|
|
|
|
|
|
|
const commonScenes:Array = [
|
|
"res://scenes/BackgroundScenes/Scene2.tscn",
|
|
"res://scenes/BackgroundScenes/Scene2_1.tscn",
|
|
"res://scenes/BackgroundScenes/Panorama.tscn",
|
|
"res://scenes/BackgroundScenes/Garaj.tscn",
|
|
"res://scenes/BackgroundScenes/Kamin.tscn",
|
|
|
|
|
|
|
|
|
|
"res://scenes/BackgroundScenes/Death_stairs_girl.tscn",
|
|
"res://scenes/BackgroundScenes/Chernii_ekran.tscn",
|
|
"res://scenes/GameEnd/WinScene.tscn",
|
|
"res://scenes/GameEnd/LooseScene.tscn",
|
|
];
|
|
|
|
onready var commonScenesThread:Thread;
|
|
var commonScenesLoaded:bool = false;
|
|
|
|
func LoadCommonScenes():
|
|
if commonScenesLoaded:
|
|
return ;
|
|
|
|
commonScenesThread = Thread.new();
|
|
commonScenesThread.start(self, "PrepareCommonScenes", commonScenes, Thread.PRIORITY_LOW);
|
|
|
|
func PrepareCommonScenes(scenes:Array):
|
|
commonScenesLoaded = true;
|
|
|
|
for i in scenes:
|
|
if commonSceneLoadStop:
|
|
return ;
|
|
var _n = load(i);
|
|
|
|
func _exit_tree():
|
|
commonScenesThread.wait_to_finish()
|
|
|
|
|
|
|
|
func LoadBeginningScenes():
|
|
var beginningScenes = [
|
|
"res://scenes/BackgroundScenes/Scene0.tscn",
|
|
"res://scenes/BackgroundScenes/Scene8.tscn",
|
|
"res://scenes/BackgroundScenes/Train_video.tscn",
|
|
"res://scenes/BackgroundScenes/Scene7.tscn",
|
|
"res://scenes/BackgroundScenes/Scene6.tscn",
|
|
"res://scenes/BackgroundScenes/Scene4.tscn",
|
|
];
|
|
for i in beginningScenes:
|
|
SceneLoader.load_scene(i);
|
|
|
|
func ShowLoader():
|
|
$Text.text = tr("ui_loading");
|
|
visible = true;
|
|
|
|
var commonSceneLoadStop:bool = false;
|
|
onready var exitLabel = $ExitLabel;
|
|
func PrepareExit():
|
|
ShowLoader();
|
|
exitLabel.visible = true;
|
|
SceneLoader.stop_scene_loader();
|
|
get_tree().root.get_node("MainMenu").queue_free();
|
|
commonSceneLoadStop = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var temp;
|
|
|
|
func BenchmarkScene():
|
|
var scenes = [
|
|
"res://scenes/Credits.tscn",
|
|
];
|
|
|
|
if false:
|
|
|
|
SceneLoader.clear_cache();
|
|
temp = OS.get_ticks_msec();
|
|
for i in scenes:
|
|
PrepareBackgroundAsync(i);
|
|
else :
|
|
|
|
for i in scenes:
|
|
temp = OS.get_ticks_msec();
|
|
var _scene = load(i).instance();
|
|
_scene = null;
|
|
print(str(i, " ", OS.get_ticks_msec() - temp, " ms"));
|
|
|
|
func PrepareBackgroundAsync(sceneName:String):
|
|
if not SceneLoader.is_connected("on_scene_loaded", self, "async_scene_loaded"):
|
|
var _temp = SceneLoader.connect("on_scene_loaded", self, "async_scene_loaded")
|
|
|
|
SceneLoader.load_scene(sceneName);
|
|
|
|
func async_scene_loaded(_obj):
|
|
print(OS.get_ticks_msec() - temp, " ms");
|