One_Eleven_Android/scripts/LoadingScene.gd
2024-11-10 03:34:28 +03:00

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");